2010-12-10 13 views
0

HttpSessionListenerを使用してCookieをチェックし、要求のIPアドレスを取得しようとしています。Java WebアプリケーションHttpSessionListenerの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回呼び出されます。または、オーバーヘッドについて心配する必要はありませんし、フィルターにメソッドを固執する必要がありますか?

+1

SessionListenerは間違った場所です。それをフィルターに入れてください。フィルターは、HttpServeletRequestの処理に直接影響を与えることができます。 – DwB

答えて

1

ノーオペフィルターのオーバーヘッドは気にしないでください。それはごくわずかです。

関連する問題