为了终止当前会话,您基本上需要调用HttpSession#invalidate()
并执行重定向到登录名或主页的操作。该代码应放置在POST请求调用doPost()
的Servlet方法中。
例如
<form action="${pageContext.request.contextPath}/logout" method="post">
<input type="submit" value="logout" />
</form>
与
@WebServlet("/logout")
public class logoutServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getSession().invalidate();
response.sendRedirect(request.getContextPath() + "/LoginPage.html");
}
}
具体问题 ,您的用户名检查代码不在正确的位置。您不应该在每个JSP页面上复制粘贴相同的代码。您应该在servlet过滤器中的单个位置执行此作业。应尽可能避免 JSP文件中的Java代码。
此外,当最终用户使用浏览器的“后退”按钮导航回历史记录时,还有另一个潜在的问题。默认情况下,浏览器将缓存所有响应,因此后退按钮可能会显示浏览器缓存中的页面,而不是从服务器请求全新的请求。为了解决此问题,请参阅此相关问题,防止用户注销后看到以前访问的安全页面
最后但并非最不重要的一点是,您那里有一些非常奇怪的HTML。带有onClick
导航按钮?用户和SEO如何不友好。改用普通<a>
链接。对于按钮外观,请添加一些CSS。