HttpSessionListener.sessionCreated() 未被调用

2023-12-11

我有一个非常简单的 Servlet 和一个非常简单的 HttpSessionListener:

@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
    private static final long serialVersionUID = 1L;


    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        getServletContext().setAttribute("applicationHits", new AtomicInteger(0));  
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("get");

        ((AtomicInteger) request.getServletContext().getAttribute("applicationHits")).incrementAndGet();
        ((AtomicInteger) request.getSession(true).getAttribute("sessionHits")).incrementAndGet();
        request.setAttribute("requestHits", 0);

        getServletContext().getRequestDispatcher("/view/HelloWorld.jsp").forward(request, response);
    }

}

 

@WebListener
public class SessionListener implements HttpSessionListener {

    public SessionListener() {
    }

    public void sessionCreated(HttpSessionEvent arg0)  {
        System.out.println("session listener");
        arg0.getSession().setAttribute("sessionHits", new AtomicInteger(0));
    }

    public void sessionDestroyed(HttpSessionEvent arg0)  { 
    }

}

My HttpSessionListener.sessionCreated()方法永远不会被调用(没有日志输出),我最终得到一个NullPointerException在我调用 getSession() 的线路上

((AtomicInteger) request.getSession(true).getAttribute("sessionHits")).incrementAndGet();
        request.setAttribute("requestHits", 0);

我尝试打电话getSession()没有true以及,但同样的问题。

我不明白——不是吗@WebListener注释足以调用我的侦听器吗? Eclipse 甚至将其显示为监听器Deployment Descriptor/Listeners.


如果您不使用 @WebListener,请确保 web.xml 中引用了您的侦听器。

<web-app>...
    <listener>
        <listener-class>com.yoursite.YourSessionListener</listener-class>
    </listener>

为了接收这些通知事件,必须在 Web 应用程序的部署描述符中声明实现类,使用 WebListener 进行注释,或者通过 ServletContext 上定义的 addListener 方法之一进行注册。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpSessionListener.sessionCreated() 未被调用 的相关文章

随机推荐

  • sendBroadscast VS startActivity。有什么不同?

    sendBroadcast 意图 和startActivity 意图 之间有什么区别 为什么这不起作用 Intent smsIntent new Intent Intent ACTION SENDTO smsIntent setData U
  • TCP 客户端-服务器 SIGPIPE

    我正在设计和测试一个基于TCP套接字 互联网域 的客户端服务器程序 目前 我正在本地计算机上对其进行测试 无法理解有关 SIGPIPE 的以下内容 SIGPIPE 的出现相当随机 它可以是确定性的吗 第一个测试涉及来自客户端的单个小 25
  • php - 从一种 json 格式转换为另一种格式

    我正在使用 php 从 mysql 数据库获取数据 并对获取的输出进行 json 编码 json encode data 结果数据的形式为 name aaa name bbb 我想将其放入一个更大的 json 对象中 并在网络浏览器中以以下
  • Rails EXECJS 运行时错误

    您好 我在 Demo index 中收到 ExecJS RuntimeError 下面是突出显示的第 6 行 下面是我的完整跟踪 有人可以回答 指出我调试此问题的正确方向以及调试轨道的良好参考 我是 Rails 新手 我的猜测是我错过了一个
  • Canny Edge 检测器阈值给出不同的结果

    我正在尝试找到图像的轮廓 在此之前我正在应用 Canny 的边缘检测器 它为不同的图像提供不同的结果 对于一张图像 它在阈值 min 40 max 240 处提供完美的轮廓 而对于其他图像 其阈值为 30 120 我想让它变得通用 通俗地说
  • fgets 不等待键盘输入

    我想从用户的键盘输入中读取两个字符串 这是我尝试过的代码 char nomFichier 50 emp 100 empEtNomFichier 150 printf nDonner le nom du fichier fgets nomFi
  • 从嵌套类设计嵌套反应形式

    我有以下课程 class License name string lots of other fields nameAttributes NameAttributes class nameAttributes NameAttributes
  • 请求响应的顺序与请求的顺序相同吗?

    我正在使用 grequests 使用相同的 url 但不同的参数从网站异步下载数据 例如 unsent requests for param in params assume params is a list containing diff
  • Linux 上的可执行格式列表 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 在哪里可以找到 Linux 系统上批准 支持的可执行格式的列表 我期待找到一个包含以下内容的列表ELF Shebang a outETC 我已经知道我可以找到 proc sys fs
  • Flex 中的自动化测试

    我想自动化测试 Flex 应用程序 我听说 Flex 提供了可以帮助您自动化测试的类 但我不知道在哪里可以找到它们以及如何使用它们 有人可以帮助我解决这个问题吗 任何提示或建议将不胜感激 是的 这就是所谓的功能测试 Adobe 为 UI 组
  • Prism 7 DI 中的 Register、RegisterInstance 与 RegisterSingleton

    我正在尝试在 Prism 7 中注册 DI 服务 我发现以下所有方法都有效 哪一个是正确的方法 各自的情况如何 public class AndroidInitializer IPlatformInitializer static Open
  • 使用 JavaScript 防止表单提交重定向/刷新

    我有一个页面 您可以在一系列文本框 从 php 生成 中输入数据 以及 2 个按钮 GetData 和 SaveData 我希望能够在编辑文本框时按 Enter 键 并且它将执行与单击 SaveData 按钮 onclick onSave
  • 如何将 Google 云端硬盘文件选择器与 Apps 脚本 HTML 服务结合使用

    有谁有使用示例Google 云端硬盘文件选择器与应用程序脚本HTML服务 有可能吗 我想用它来选择文件或使用 AppsScript HTML 服务从云端硬盘上传文件 不幸的是 由于 Caja 的限制 不可能在 HtmlService 中使用
  • 通过 AJAX 和 jQuery 从 PHP 数组获取数据

    我有一个页面如下
  • Android 设备年龄

    是否可以查询android设备的年龄 我想知道用户拥有他的设备多久 电池的寿命可能是一个很好的指标 但我找不到合适的 API 最佳的是第一次设备启动的时间戳 有任何想法吗 没有可靠的方法来找出设备的年龄 但我们可以通过某种方式找出设备的年龄
  • Android - 从远程服务器加载多个图像的有效方法

    我有一个 Android 应用程序 可以从 php 远程服务器检索数据 图像 文本 并将其显示在 GridView 中 我正在使用 Loaders 在后台进行操作 我对图像和文本有单独的连接 因为检索图像需要更长的时间 而且我想立即显示文本
  • 在 ASP.Net MVC 5 应用程序中使用多个 ASP Identity 2.0

    我有一个带有管理区域的 Web 应用程序 用于管理内容 但该网站的其余部分目前由 ASP Identity 保护 该身份验证我的公共用户 现在我需要对一些内部用户进行身份验证才能访问管理区域 这可能吗 您正在寻找的称为 SSO 单点登录 通
  • 在命令行上使用 Android lint 忽略库项目

    我将 Android lint 与 Jenkins 结合使用 需要忽略我的团队未修改的库项目 特别是 Action Bar Sherlock 以便我们可以从 Android lint 获得有用的结果 目前 我正在从命令行启动 lint 并将
  • 如何从 Google Container Engine 访问 HTTP 请求的客户端 IP?

    我正在使用 Google Container Engine 在 docker 容器中运行 Gunicorn flask 服务 我按照教程设置了集群http kubernetes io docs hellonode The REMOTE AD
  • HttpSessionListener.sessionCreated() 未被调用

    我有一个非常简单的 Servlet 和一个非常简单的 HttpSessionListener WebServlet HelloWorld public class HelloWorld extends HttpServlet private