2010-12-10 52 views
0

我试图使用HttpSessionListener来检查cookie并获取请求的IP地址。HttpSessionListener中的Java Web应用程序HttpServletRequest

但是,我无法访问侦听器中的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页面的小脚本,我试图将它重构为一个倾听者,而不是一个过滤器,因为我只希望它是每个会话调用一次以减少开销。或者我应该不担心开销并将方法粘贴到过滤器中?

+1

SessionListener是错误的地方。把它放在一个过滤器中。该过滤器可以直接影响HttpServeletRequest的处理。 – DwB 2010-12-10 21:52:30

回答

1

不用担心无操作过滤器的开销。这是微不足道的。