我想从 HttpSessionListener.sessionCreated()
中获取用户名。当我说用户名时,我特指 HttpServletRequest.getRemoteUser()
返回的名称。
显然,一定有一个 HttpServletRequest
对象导致 session 被创建(因此 sessionCreated()
调用)。但是如何从 sessionCreated()
中访问它呢?传递给 sessionCreated()
的 HttpSessionEvent
对象似乎无法获取导致 session 创建的 HttpServletRequest
对象。
最佳答案
HttpSessionListener 无权访问 HttpServletRequest 对象,因为它是在没有发出请求时调用的——通知 session 销毁或创建。
因此,过滤器会是您可以将 username = request.getRemoteUsr() 添加到 session 中的更好位置。
示例 - 过滤器代码
String username = request.getRemoteUsr() ;
session.setAttribute("username",username);
然后在 sessionCreated 方法中检索此用户名作为
String username = (String)session.getAttribute("username");
我希望您将获得在 HttpSessionListener sessionCreated() 方法中创建此 session 的相同请求的相同用户名。
关于java - 从 HttpSessionListener 中获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12833275/