2012-10-11 4 views
2

HttpSessionListener.sessionCreated()에서 사용자 이름을 받고 싶습니다. 내가 사용자 이름을 말할 때, 특별히 HttpServletRequest.getRemoteUser()이 반환하는 이름을 의미합니다.HttpSessionListener 내에서 사용자 이름 가져 오기

분명히 세션을 생성하게하는 HttpServletRequest 개체가 있어야합니다 (따라서 sessionCreated() 호출). 하지만 sessionCreated()에서 어떻게 접근합니까? sessionCreated()HttpSessionEvent 개체가 전달되면 세션 생성을 유발 한 개체 인 HttpServletRequest을 얻을 수있는 방법이 없습니다. 어떤 요청이 이루어지지-을했을 때 세션 파괴 또는 생성의 통지를 호출하기 때문에

답변

4

HttpSessionListener는 HttpServletRequest의 개체에 액세스 할 수 없습니다.

따라서, 필터는 세션에 사용자 이름 = request.getRemoteUsr()를 추가 할 수 있습니다 더 나은 곳이 될 것입니다.

예 - 필터 코드

String username = request.getRemoteUsr() ; 
session.setAttribute("username",username); 

하고 난 당신이 HttpSessionListener이 세션을 만든 동일한 요청의 동일한 사용자 이름을 얻을 것이다 희망

String username = (String)session.getAttribute("username"); 

로 sessionCreated 방법에서이 이름을 가져 오지 sessionCreated() 메소드. 답변에 대한

+0

덕분에 나는 당신이 제안하는 것을 시도 할 것이다. 한가지는 명확하지 않다. 요청이 없을 때 HttpSessionListener가 호출된다고하지만, 세션 생성을 위해 request.getSession()을 호출해야한다고 생각했다. 세션이 생성 될 때 요청 객체 여야합니까? –

0
// set 
session.setAttribute("username", request.getRemoteUser(); 

// get 
String un = (String) session.getAttribute("username"); 
관련 문제