java - 如何实现jsp页面的 session 跟踪

标签 java session jsp servlets tracking

我的项目中使用了jsp技术。我想做 session 跟踪 在我的登录表单中。 注销后,当我按后退按钮时,应该显示 session 已过期。请帮助我。

最佳答案

您不需要手动执行此操作。 servlet 容器会为你做这件事。您可以通过 HttpServletRequest#getSession() 访问跟踪的 session 。您所需要做的就是将登录用户作为 session 属性。

request.getSession().setAttribute("user", user);

让其余的代码拦截它。您通常为此使用Filter

if (request.getSession().getAttribute("user") == null) {
    // Not logged in. Redirect to login page.
    response.sendRedirect("login.jsp");
} else {
    // Logged in. Just continue request.
    chain.doFilter(request, response);
}

当您调用注销时,只需从 session 中删除用户即可。

request.getSession().removeAttribute("user");

servlet 容器也将管理 session 过期。当它过期时,HttpSession 将被简单地丢弃,包括它的所有属性。

对于后退按钮问题,只需指示客户端不要缓存响应,以便它被迫触发一个全新的请求,然后该请求将通过过滤器传递。该客户端指令需要通过相应地设置响应 header 来发生。这也可以在 Filter 中完成。

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

关于java - 如何实现jsp页面的 session 跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126082/

相关文章:

java - Response.header 是否会覆盖 @Produces 注释?

node.js - PassportJs isAuthenticated 不认证

javascript - 如何记住一个表格被扩展?

java - ÙرØءا想知道字符的编码

java - ContentResolver删除多个

java - 递归处理Java中许多子目录中的相同文件

java - JSP如何防止HTTP请求超时?

java - 如何在运行 jsp 页面时查看 pdf 格式的 jasper 报告

java - 确定哪些测试用例覆盖了一个方法

java - 如何确保用户仍然使用 Java Web 登录