HttpSessionListener中的Java Web应用程序HttpServletRequest

时间:2010-12-10 18:41:56

标签: java servlets servlet-filters servlet-listeners

我正在尝试使用HttpSessionListener来检查cookie并获取请求的IP地址。

但是,我无法访问侦听器中的HttpServletRequest以传递给STKUserCookie或获取IP。

public STKUserCookie(HttpServletRequest request)

public void sessionCreated(HttpSessionEvent se) {
    HttpSession httpSes = se.getSession();

    if ( se.getSession().getAttribute("STKUserSession") == null) {
        STKUserCookie userCookie = new STKUserCookie(request);  <------- ERROR on this line "request" not available
        String userBadge = userCookie.getUserID();
        STKUserDAO userDAO = new STKUserDAO();
        STKUser user = userDAO.getUser(userBadge);
        if (user != null) {
            user.setIpAddress(se.getRemoteAddr());    <------- ERROR on this line "getRemoteAddr" not a method of se
            userDAO.updateLogin(user);
            httpSes.setMaxInactiveInterval(36000); //set to 10 hours
            httpSes.setAttribute("STKUserSession", user);
        }

    }
}

上面曾经是我在所有jsp页面中包含的scriptlet,我试图将它重构为一个监听器,而不是一个过滤器,因为我只希望每个会话调用一次以减少开销。或者我不应该担心开销并将方法粘贴到过滤器中吗?

1 个答案:

答案 0 :(得分:1)

不要担心无操作过滤器的开销。它可以忽略不计。