Mat*_*hew 10 javascript java session jsp
我在JSP中有以下代码:
当用户单击注销按钮时,我想将其重定向到登录页面并终止当前会话.我已成功完成重定向部分,但我不知道如何终止会话.怎么可以这样做呢?
Bal*_*usC 20
为了终止当前会话,您基本上需要调用HttpSession#invalidate()并执行重定向到登录或主页面.该代码应该放在由POST请求调用doPost()的servlet方法中.
例如
<form action="${pageContext.request.contextPath}/logout" method="post">
<input type="submit" value="Logout" />
</form>
Run Code Online (Sandbox Code Playgroud)
同
@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");
}
}
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,您的用户名检查代码不在正确的位置.您不应该在每个JSP页面上复制相同的代码.您应该在servlet过滤器中的单个位置执行此作业.应尽可能避免 JSP文件中的Java代码.
此外,当最终用户使用浏览器的后退按钮导航回历史记录时,还有另一个潜在的问题.默认情况下,浏览器将缓存所有响应,因此后退按钮可能会显示浏览器缓存中的页面,而不是从服务器请求全新的响应.要解决此问题,请参阅此相关问题防止用户在注销后查看以前访问过的受保护页面
最后但同样重要的是,你有一些非常奇怪的HTML.onClick导航按钮?用户和SEO如何不友好.请改用普通<a>链接.对于按钮look'n'feel,扔进一些CSS.