如何实现jsp页面的会话跟踪

时间:2010-11-08 16:59:06

标签: java session jsp servlets tracking

我在我的项目中使用了jsp技术。我想进行会话跟踪 在我的登录表单中。 注销后我按下后退按钮应显示 会话已过期。请帮助我。

2 个答案:

答案 0 :(得分:1)

您无需手动执行此操作。 servletcontainer将为您完成。您可以HttpServletRequest#getSession()访问跟踪的会话。您需要做的就是将登录用户作为会话属性。

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);
}

当你调用注销时,只需从会话中删除用户。

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

servletcontainer也将管理会话过期。当它到期时,HttpSession将被简单地删除,包括其所有属性。

关于后退按钮问题,只是指示客户端不缓存响应,以便强制它发出一个全新的请求,然后通过Filter传递。需要通过相应地设置响应头来实现此客户端指令。这也可以在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.

答案 1 :(得分:0)

首先,会话创建和销毁:

使用HttpSessionListener

使用输出实现sessionCreated(HttpSessionEvent se),告诉您已创建会话。

使用输出实现sessionDestroyed(HttpSessionEvent se),告诉您会话已被销毁。也就是说,用户已注销,或用户的会话已过期。

现在,中间部分。对web.xml使用*.jsp条目,doFilter(ServletRequest request, ServletResponse response, FilterChain chain)条目为该过滤条件。在过滤器内部,使用ServletRequest。将HttpServletRequest投射到{{1}}。使用该请求,您将拥有许多可用于会话跟踪的方法。用户的凭据,访问URL,基本上所有可能感兴趣的内容。