2010-12-10 97 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

不用擔心無操作過濾器的開銷。這是微不足道的。