小编典典

HttpSessionListener.sessionCreated()未被调用

java

我有一个非常简单的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)  { 
    }

}

我的HttpSessionListener.sessionCreated()方法从未被调用(没有日志输出),最终NullPointerException我在调用getSession()的那一行上得到一个

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

我尝试拨打电话时也getSession()没有true问题,但存在相同的问题。

我不明白- @WebListener注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器Deployment Descriptor/Listeners


阅读 584

收藏
2020-11-23

共1个答案

小编典典

原来这是愚蠢的Eclipse问题之一…

Project-> Clean …,然后重新启动Tomcat。

2020-11-23