即使将@WebListener注释添加到我的侦听器类,是否有必要在web.xml中创建侦听器类标记?
因为当我只使用@WebListener注释而不在web.xml中创建listener-class标记条目时,我的监听器类不会被执行。
当我同时使用web.xml中的listener-class标记条目和@WebListener作为我的监听器类时,只有我的监听器类被执行。
(其他信息:java版本" 1.7.0_79",Java(TM)SE运行时环境(版本1.7.0_79-b15 )
以下是web.xml中的listener-class标记条目:
<listener>
<listener-class> org.shan.jspservlets.CountUserListener </listener-class>
</listener>
&#13;
以下是我的听众课程:
package org.shan.jspservlets;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class CountUserListener implements HttpSessionListener {
ServletContext ctx = null;
static int total = 0, current = 0;
public void sessionCreated(HttpSessionEvent e) {
total++;
current++;
ctx = e.getSession().getServletContext();
ctx.setAttribute("totalusers", total);
ctx.setAttribute("currentusers", current);
}
public void sessionDestroyed(HttpSessionEvent e) {
current--;
ctx.setAttribute("currentusers", current);
}
}
&#13;
答案 0 :(得分:0)
在Servlet 3.0中引入了诸如@WebServlet
,@WebListener
之类的注释,因此如果您使用的是具有servlet版本的servlet容器&lt; 3.0不会处理注释。
如果web-app
元素告诉容器忽略它们,也不会处理注释:
<web-app metadata-complete="true" ...>
然后您的带注释的类必须位于WEB-INF/classes
或WEB-INF/lib
中的jar中,否则注释也会被忽略。