支持注解的Servlet3.0监听器
Servlet3.0中的监听器跟之前2.5的差别不大,唯一的区别就是增加了对注解的支持。在3.0以前我们的监听器配置都是需要配置在web.xml文件中的。在3.0中我们有了更多的选择,之前在web.xml文件中配置的方式还是可以的,同时我们还可以使用注解进行配置。对于使用注解的监听器就是在监听器类上使用@WebListener进行标注,这样Web容器就会把它当做一个监听器进行注册和使用了。
在这篇文章中我主要想讲的还是Servlet3.0中可以使用注解来配置监听器,对于监听器的其它内容我不想做过多的涉及。
对于使用注解的监听器我想挑两类型监听器来举一个例子,一类是对Session的监听,一类是对ServletContext的监听。对于Session的监听器主要有HttpSessionListener和HttpSessionAttributeListener。HttpSessionListener可以监听HttpSession的创建跟销毁,而HttpSessionAttributeListener则是对session中属性的监听,它可以监听到session新增属性、移除属性和属性值被替换时。对于ServletContext的监听器有ServletContextListener和ServletContextAttributeListener。ServletContextListener可以监听到ServletContext的创建和销毁,而ServletContextAttributeListener可以监听到ServletContext中属性的新增、移除和属性值的替换。
import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; /** * * HttpSession监听器和HttpSession属性监听器 * */ @WebListener public class SessionListener implements HttpSessionAttributeListener, HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent se) { System.out.println("session created"); } @Override public void sessionDestroyed(HttpSessionEvent se) { System.out.println("session destroyed"); } @Override public void attributeAdded(HttpSessionBindingEvent event) { System.out.println("session attribute added"); } @Override public void attributeRemoved(HttpSessionBindingEvent event) { System.out.println("session attribute removed"); } @Override public void attributeReplaced(HttpSessionBindingEvent event) { System.out.println("session attribute replaced"); } }
import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; /** * * ServletContext监听器和ServletContext属性监听器 * */ @WebListener public class ContextListener implements ServletContextAttributeListener, ServletContextListener { @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("ServletContext destroyed"); } @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("ServletContext initialized"); } @Override public void attributeAdded(ServletContextAttributeEvent event) { System.out.println("ServletContext attribute added"); } @Override public void attributeRemoved(ServletContextAttributeEvent event) { System.out.println("ServletContext attribute removed"); } @Override public void attributeReplaced(ServletContextAttributeEvent event) { System.out.println("ServletContext attribute replaced"); } }
为了文章的完整性,下面将给出上面监听器对应的在web.xml中配置的方式。
<listener> <listener-class>com.xxx.SessionListener</listener-class> </listener> <listener> <listener-class>com.xxx.ContextListener</listener-class> </listener>
相关推荐
总的来说,Servlet3.0通过增强的注解配置、异步处理、过滤器改进、上下文参数和监听器的注解支持,以及微容器概念,极大地提升了Java Web开发的效率和便利性。这份参考手册无疑是深入理解和掌握Servlet3.0技术的关键...
**一、Servlet3.0监听器新特性** 在Servlet2.x版本中,监听器主要用于监听服务器中的特定事件,如会话创建、销毁、请求初始化等。它们通过实现特定接口,如`ServletContextListener`、`HttpSessionListener`等,...
下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...
这是Servlet3.0的一个核心特性,通过实现`ServletContainerInitializer`接口,可以在应用启动时执行自定义的初始化代码,用于注册监听器、过滤器等,增强了扩展性。 5. **Microcontainer支持**: Servlet3.0支持...
4. 理解如何在没有web.xml的情况下,通过注解配置Servlet、监听器和过滤器。 5. 能够在Eclipse中调试和运行Servlet 3.0应用。 【标签】"maven"表明这个教程与Maven项目管理工具有关,意味着你将学到如何使用Maven...
Servlet 3.0 还增加了对注解的支持,这为简化 Servlet、过滤器(Filter)和监听器(Listener)的声明提供了便利。在之前的版本中,Servlet、过滤器和监听器都需要在 web.xml 文件中进行声明式配置,而在 Servlet 3.0 中...
Servlet3.0引入了注解驱动的部署,允许开发者通过在类或方法上添加注解来定义Servlet、过滤器和监听器,从而避免了繁琐的web.xml配置。此外,还支持异步处理,使得Servlet可以在处理请求时释放线程,提高服务器性能...
3. 部署监听器:无需在web.xml中声明,开发者可以通过注解定义部署监听器,如`@WebListener`,在应用部署或卸载时自动执行代码。 4. 嵌入式Servlet容器:Servlet 3.0允许在程序内部创建和启动Servlet容器,这对于...
类似于Servlet,Servlet3.0也允许通过注解来注册监听器,如`@WebListener`,这样可以更方便地创建和管理监听器。 4. **Pluggable Servlet Container初始化**: Servlet3.0引入了可插拔的Servlet容器初始化,使得...
在"JavaWeb-21 JDBC(泛型,注解,Servlet3.0,Log4j)"这个主题中,涵盖了四个关键知识点:JDBC(Java Database Connectivity)、泛型、注解以及Servlet 3.0。接下来,我们将逐一深入探讨这些内容。 首先,JDBC是...
类似于Servlet的注册方式,Servlet 3.0也支持在监听器类上使用`@WebListener`注解,无需在web.xml中声明。 4. **过滤器链的改进**: 过滤器可以使用`@WebFilter`注解来定义,同时支持通过注解配置过滤器的URL模式...
Servlet 3.0引入了对注解的全面支持,使得开发者不再需要编写XML配置文件来声明Servlet、过滤器和监听器。例如,我们可以通过`@WebServlet`, `@WebFilter`和`@WebListener`注解直接在类级别定义它们,简化了部署...
Servlet3.0的另一大亮点是新增的注解支持,这极大地简化了Servlet、过滤器和监听器的声明。在Servlet3.0之前,部署Servlet、过滤器和监听器通常需要在web.xml文件中进行大量的配置,这不仅繁琐,而且容易出错。...
例如,`@WebServlet`, `@WebFilter`, 和 `@WebListener` 分别用于声明Servlet、Filter和监听器。 4. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在处理请求时释放线程,提高服务器性能。通过调用`...
在Servlet 3.0中,开发者可以使用注解(@WebServlet、@WebFilter、@WebListener)来声明Servlet、Filter和监听器,而无需在web.xml中进行繁琐的XML配置。这大大减少了部署描述符的复杂性,使得代码更易读、更易于维护...
1. 注解配置:Servlet3.0引入了注解,允许开发者在类或方法级别声明Servlet、过滤器和监听器,无需在web.xml中进行繁琐的XML配置。 2. 异步处理:Servlet3.0支持异步处理请求,这意味着Servlet可以在不阻塞线程的...
12. **Servlet监听器**:新增了一些内置的监听器,如SessionAttributeListener、AsyncContextListener等,可以监听到更多应用生命周期的事件。 以上就是Servlet 3.0的一些核心特性,它们极大地提升了开发效率,增强...
- 虽然Servlet 3.0支持注解配置,但传统的web.xml文件仍然是可选的。它可以用于全局配置,如安全约束、错误页面、MIME映射等。 6. **安全性**: - Servlet 3.0增强了安全性,提供了更细粒度的访问控制,如`@...
2. **编写代码**:在每个模块中,使用Servlet 3.0的注解配置Servlet、过滤器和监听器。 3. **配置聚合模块**:在根目录创建聚合模块,将子模块添加到`<modules>`标签中。 4. **构建与部署**:运行`mvn clean ...