我面临一个奇怪的问题,我有一个由对象支持的问题,现在的问题是,一旦特定的工作完成,该对象的值仍然存在。这是我的代码片段
1)Login.jsp
<form:form action="login" method="POST" modelAttribute="login">
<table>
<tr><td>User Id:</td><td><form:input path="userId"/></td><td><font color="red"><c:out value="${userIdError}" /></font> </td></tr>
<tr><td>Password:</td><td><form:input path="userPassword"/></td><td><font color="red"><c:out value="${userPasswordError}" /></font></td></tr>
<tr><td></td><td><input type="submit" value="Login"/></td></tr>
<tr><td><a href="newUser">New User</a></td><td><a href="forgotPassword">Forgot Password</a></td></tr>
</table>
</form:form>
2)控制器
@RequestMapping(value="/login", method=RequestMethod.POST)
public String login(@ModelAttribute("login")@Valid Login login,BindingResult result, Model model,HttpServletRequest request)
{
//performing some validations
if(obj.getUserPassword().equals(login.getUserPassword()))
{
request.getSession().setAttribute("sessionValue", login.getUserId());
return "home";
}
@RequestMapping(value="/logout")
public String logout(HttpServletRequest request)
{
System.out.println(request.getSession().getAttribute("sessionValue"));
request.getSession().invalidate();
return "redirect:index";
}
3)Home.jsp
<body>
Home Page for registered user sir
<font color="red">
<c:choose>
<c:when test="${sessionValue==null }">
<jsp:forward page="/index"/>
</c:when>
<c:otherwise>
we have the persisted value ${sessionValue }
</c:otherwise>
现在问题是登录后我来Home.jsp
,如果我点击logout
,我会被重定向到Login.jsp
。但是,如果点击浏览器上的后退按钮,我被重定向到Home.jsp
页面,一切都很好,直到这里,但一旦我理想地刷新,我应该被重定向到Login.jsp
,但我的应用程序再次进入控制器获取最后一个loginId和loginPassword我输入登录,设置会话。如何避免它。我希望我很清楚。
注意: - 如果我从其他某个页面退出登录
,则不会出现问题Login->Home page->Some Other Page->Logout->Hit back button->Some Other Page->refresh->Login
只有在
时才会出现此问题Login->Home page->Logout->Hit back button->Home Page->refresh->Remain on Home page and session maintained