JSP/Servlet 中的事件处理写过AWT或Swing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响应。
其实我们在编写JSP/Servle程序时,也有类似的事件处理机制,所不同的是在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。
1. Servlet中的Listener和Event:
在JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event类别。
ServletContextListener接口
[接口方法] contextInitialized()与 contextDestroyed()
[接收事件] ServletContextEvent
[触发场景] 在Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。
ServletContextAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] ServletContextAttributeEvent
[触发场景] 若有对象加入为application(ServletContext)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、attributeRemoved()。
HttpSessionListener
[接口方法] sessionCreated()与sessionDestroyed ()
[接收事件] HttpSessionEvent
[触发场景] 在session (HttpSession)对象建立或被消灭时,会分别呼叫这两个方法。
HttpSessionAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[触发场景] 若有对象加入为session(HttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。
HttpSessionActivationListener
[接口方法] sessionDidActivate()与 sessionWillPassivate()
[接收事件] HttpSessionEvent
[触发场景] Activate与Passivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透 过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象重新加载JVM时所采的动作称之为Activate,所以容 易理解的,sessionDidActivate()与 sessionWillPassivate()分别于Activeate后与将Passivate前呼叫。
ServletRequestListener
[接口方法] requestInitialized()与 requestDestroyed()
[接收事件] RequestEvent
[触发场景] 在request(HttpServletRequest)对象建立或被消灭时,会分别呼叫这两个方法。
ServletRequestAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[触发场景] 若有对象加入为request(HttpServletRequest)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。
HttpSessionBindingListener
[接口方法] valueBound()与valueUnbound()
[接收事件] HttpSessionBindingEvent
[触发场景] 实现HttpSessionBindingListener接 口的类别,其实例如果被加入至session(HttpSession)对象的属性中,则会呼叫 valueBound(),如果被从session(HttpSession)对象的属性中移除,则会呼叫valueUnbound(),实现 HttpSessionBindingListener接口的类别不需在web.xml中设定。
2. 如何注册Servlet中的事件
实现上面这几个接口的类别,除了HttpSessionBindingListener外,必须在web.xml中向容器注册,容器才会在对应的事件发生时呼叫对应的类别,如:
< listener >
< listener-class > demo.servlet.listener.CustomServletContextListener
3. Servlet事件的应用实例
看到这里,你也许会有疑问: 了解这些 listener和event 有什么用呢?我平时开发没有用到这些,一样也能完成任务啊.
不错,在日常的开发中很少用到这些事件处理的方面,但是在某些情况下使用事件处理机制却可以达到事半功倍的效果,例如下面两个例子:
4.Java类实例
==========
//侦听启动和关闭
import javax.servlet.ServletContextListener;
import javax.servlet.*;
public class TigerListen implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce)
{
System.out.print("Init") ;
}
public void contextDestroyed(ServletContextEvent sce)
{
System.out.print("Destroved") ;
}
}
对应的web.xml是
============
TigerListen
============
分享到:
相关推荐
Servlet中的八大Listener是Java Web开发中的重要组成部分,它们允许开发者监听和响应Web应用程序中的特定事件。这些Listener提供了在Servlet容器(如Tomcat)管理的生命周期事件上的扩展点,使得我们能够在恰当的...
详细讲解了Servlet相关的八大监听器,并通过两个实际项目应用综合演示了它们的用法。 北京动力节点-05监听器专题-001-设计模式分类北京动力节点-05监听器专题-002 资源太大,传百度网盘了,链接在附件中,有需要的...
2. 监听器(Listener):监听Web应用中特定事件,如会话创建、销毁、请求到达等,实现响应式编程。 八、实战应用 1. 动态网页生成:Servlet可以动态生成HTML内容,提供个性化服务。 2. 数据库操作:通过JDBC接口,...
八、监听器(Listener) 监听器是用于监听特定事件的组件,如会话创建、销毁、上下文初始化和销毁等。它们通过实现特定接口并注册到web.xml中。 九、MVC框架与Servlet 现代Web开发中,Servlet常与Model-View-...
Java Servlet监听器是Java Servlet API中的一个重要组成部分,它们允许开发者在Web应用的生命周期内的某些关键点添加自定义行为。具体来说,监听器可以监控Web应用中的三个主要对象:ServletContext(代表整个Web...
八、监听器(Listener) Servlet 2.5还支持各种事件监听器,如ServletContextListener、ServletRequestListener和ServletSessionListener。这些监听器可以监听特定的Servlet事件,例如Web应用启动、请求到达、会话...
Servlet 3.1引入了全注解支持,使得开发者可以更加方便地声明Servlet、过滤器和监听器,而无需在web.xml中进行繁琐的配置。例如,可以通过`@WebServlet`,`@WebFilter`和`@WebListener`注解直接在类级别定义它们。...
Servlet2.3引入了web.xml部署描述符,这是一个XML文件,用于配置Servlet、过滤器和监听器。通过web.xml,开发者可以声明Servlet的映射路径、初始化参数、安全配置等,使得应用的配置更加灵活和可维护。 总结,Java...
八、监听器Listener Servlet API中的监听器(如ServletContextListener、HttpSessionListener等)可以在特定事件发生时自动执行代码,如Web应用启动、会话创建或销毁等。 总结,Servlet API是Java Web开发的基础,...
八、Spring MVC与Servlet的关系 在Spring MVC框架中,Controller类扮演了Servlet的角色,处理请求并返回响应。Spring MVC简化了Servlet的使用,提供了更强大的模型-视图-控制器架构。 九、现代Web应用中的Servlet ...
2. Listener:监听器(Listener)可以监听Web应用中的特定事件,如Session创建、销毁,或者Context初始化、销毁等。 七、MVC框架与Servlet 尽管Servlet可以直接处理请求,但在大型项目中,通常会使用如Spring MVC...
Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...
同时,JSS 2.4 也提供了丰富的 API 来支持高级功能,如过滤器、监听器等,便于开发者扩展应用功能。 #### 八、总结 Java Servlet Specification 2.4 是一个重要的规范文档,它不仅为开发者提供了构建高性能、安全...
- **web.xml文件**:这是一个XML文件,用于描述整个Web应用的配置信息,包括Servlet、过滤器、监听器等的配置。 - **注解配置**:现代Java Web开发中,通常采用注解的方式来简化Servlet的配置,如使用`@WebServlet`...
Servlet3.1允许在类路径下放置监听器类,无需在web.xml中显式注册,系统会自动检测并注册这些监听器,进一步提高了开发的便捷性。 六、URL路径匹配 Servlet3.1提供了更加灵活的URL路径匹配规则,包括通配符(*)、...
监听器(Listeners)可以监听Web应用中的特定事件,如会话创建、销毁,或者ServletContext的属性更改。 总之,Servlet是Java Web开发的重要组成部分,理解并掌握Servlet的原理和实践,是成为一名合格的Web开发者的...
文件上传功能在Servlet 3.1中得到了优化,支持多部分请求,允许上传多个文件,并且可以处理大文件,减轻了内存压力。 八、URL路径匹配 Servlet 3.1提供了更精确的URL路径匹配规则,支持正则表达式和路径模板,使得...
在Java Web应用中,`web.xml`文件是部署描述符,用于配置Servlet、过滤器、监听器等。通过配置Servlet的 `<servlet>` 和 `<servlet-mapping>` 元素,可以指定Servlet的类名和URL模式,使得服务器知道如何处理特定的...
八、Servlet上下文 `ServletContext`代表整个Web应用的共享环境,它提供全局信息,如初始化参数、应用范围内的属性以及加载资源。通过`getServletContext()`方法,Servlet可以获取到上下文对象。 九、Servlet异步...