3

内からユーザー名を取得したいと思いますHttpSessionListener.sessionCreated()。ユーザー名とは、具体的には によって返される名前を意味しHttpServletRequest.getRemoteUser()ます。

明らかに、HttpServletRequestセッションを作成する (したがってsessionCreated()呼び出しを行う) 原因となったオブジェクトがあったに違いありません。しかし、内部からアクセスするにはどうすればよいsessionCreated()ですか? HttpSessionEvent渡されたオブジェクトは、セッションが作成される原因となっ sessionCreated()たオブジェクトを取得する方法を提供していないように見えます。HttpServletRequest

4

3 に答える 3

5

HttpSessionListener は、セッションの破棄または作成を通知するために、リクエストが行われていないときに呼び出されるため、HttpServletRequest オブジェクトにアクセスできません。

したがって、ユーザー名 = request.getRemoteUsr() をセッションに追加できる場所としては、フィルターの方が適しています。

例 - フィルタ コード

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

次に、このユーザー名を sessionCreated メソッドで次のように取得します。

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

HttpSessionListener sessionCreated() メソッドでこのセッションを作成した同じリクエストの同じユーザー名を取得できることを願っています。

于 2012-10-11T07:05:54.047 に答える
0
// set
session.setAttribute("username", request.getRemoteUser();

// get
String un = (String) session.getAttribute("username");
于 2012-10-12T05:32:31.867 に答える