Java 如果用户已登录,则重定向到主页
可能重复:Java 如果用户已登录,则重定向到主页,java,jsp,session,servlets,Java,Jsp,Session,Servlets,可能重复: 如果登录用户单击了login.jsp页面,那么他应该自动重定向到他的home.jsp。在身份验证之前,用户转到login.jsp,在通过servlet(doPost)成功身份验证之后,他被重定向到home.jsp,但是当同一用户再次单击登录页面时,他应该被自动重定向到home.jsp,而不是再次登录。如何在JSP/Servlet中实现这一点?在成功验证后,我正在从该servlet设置会话 在登录之前,用户单击login.jsp并转到servlet的doPost()方法并转到home
如果登录用户单击了
login.jsp
页面,那么他应该自动重定向到他的home.jsp
。在身份验证之前,用户转到login.jsp
,在通过servlet(doPost)成功身份验证之后,他被重定向到home.jsp
,但是当同一用户再次单击登录页面时,他应该被自动重定向到home.jsp
,而不是再次登录。如何在JSP/Servlet中实现这一点?在成功验证后,我正在从该servlet设置会话
在登录之前,用户单击login.jsp
并转到servlet的doPost()
方法并转到home.jsp
。成功登录后,如果用户再次单击login.jsp
,则控件不应转到login.jsp
,而应直接转到home.jsp
。我怎么做
如果用户已注销,则只有在单击
login.jsp
后,控件才会转到login.jsp
,然后转到servlet的doPost()
,最后才会出现home.jsp
。在您的login.jsp中尝试此代码
if(session.getAttribute("authenticated")!=null && session.getAttribute("authenticated").equals(true))
{
response.sendRedirect("home.jsp");
}
为了您的帮助,我已经编写了一个示例,并在我的机器上执行了代码 在servlet页面的
doPost
中:
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean isCredentialValid = validateCredentials(username, password);
String nextPage ="";
HttpSession session = request.getSession(true);
if(isCredentialValid){
nextPage = "home.jsp";
session.setAttribute("isLoggedIn", "true");
}else{
request.setAttribute("error", "Either username or password is invalid.");
nextPage ="login.jsp";
}
RequestDispatcher rd = request.getRequestDispatcher(nextPage);
rd.forward(request, response);
在login.jsp中
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
var isLoggedIn = "<%= (String)session.getAttribute("isLoggedIn")%>";
if(isLoggedIn === "true")
window.location.href="home.jsp";
}
</script>
</head>
<body>
<form action="Test" method="post">
${error}
<br/>
UserName : <input type="text" name="username"/>
<br/>
Password : <input type="text" name="password"/>
<br/>
<input type="submit" value="submit"/>
</form>
</body>
在此处插入标题
var isLoggedIn=“”;
如果(isLoggedIn==“真”)
window.location.href=“home.jsp”;
}
${error}
用户名:
密码:
检查用户是否已登录登录登录页面/操作,如果已登录,则重定向到主页:
if (alreadyLoggedIn) {
response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + "/home"));
return;
}
但是,如果用户已经登录,您可能首先不应该有登录页面的链接 我需要在身份验证之前设置它?是的,当用户第一次访问login.jsp并成功进行身份验证时,您可以像这样创建此属性。session.setAttribute(“已验证”,true);登录页面在主主页中,所以在通过servlet验证后,如果用户来到主主页并单击login.jsp,那么他会被重定向到home.jsp吗?是的。若authenticated属性设置为true,那个么用户将被重定向到home.jsp。还有一点,一旦用户登录,您需要隐藏登录链接。jsp@KashifKhan:如果他使用session.setAttribute(“authenticated”,true),并且如果(session.getAttribute(“authenticated”).equals(“true”),这将不起作用。字符串和布尔值永远不会相等。我需要在login.jsp?nope.中编写此代码。。登录页面将重定向到servlet。。在servlet中写入,因为您无法在浏览器右侧验证凭据。。根据我的理解,您需要通过servlet联系数据库。只有在用户给出用户名和密码后,登录页面才会重定向到servlet,如果他在单击login.jsp链接之前已经通过了身份验证,那么就不要转到login.jsp页面,而是转到login.jsp页面,然后login.jsp页面将如何自动重定向到servlet?更新了答案。。请检查一下。。希望一切都会清楚谢谢你的帮助我已经写了一个例子,并在我的机器上执行了代码,正如你所期望的那样。谢谢JB…但是我应该在servlet的doPost中写什么呢?我有到登录页面的链接,即使用户已经登录了。我应该写home.jsp而不是/home。。如下所示:response.sendRedirect(response.encodeRedirectURL(request.getContextPath()+“/home.jsp”);