为了终止当前会话,您基本上需要调用
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。



