java - 从 HttpSessionListener 中获取用户名

标签 java servlets

我想从 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/

相关文章:

java - 如何使用hibernate引用表中的现有数据

java - 从输入字符串中提取多项式系数

eclipse - Tomcat 7 资源不可用

java - 如何将错误消息从servlet发送到jsp页面?

java - 检查客户端机器上是否有cookie,否则你做一些事情并退出

java - 需要从过滤 @WebFilter 中排除 js/css/jpg 等文件

搜索 ArrayList 时发生 Java JSON ClassCastException

java - Spring Batch ItemReader - 维护指针或从列表中删除项目?

java - 替换未排序树中的节点时无限循环

java - 如何在 JSP 或 Servlet 中执行 POST?