回到首页☞
Listener至今没有用过,但是不是说明它不重要,只是作为业务编码人员,往往用不到。而作为框架平台开发人员listener是必不可少的强大的工具。
1、概述
Listener是Servlet规范的另一个高级特性。用于监听Java Web程序中的事件,例如创建、修改、删除Session、request、context等,并触发响应的事件。利用Listener能够用很少的代码实现很绚丽的效果。
Listener对应设计模式Listener,用于做event的监听。
Java Web程序使用Listener与Event完成相应事件的处理,使用Listener不需要关注该类事件是怎样触发或者怎样调用响应应用的Listener,只要基础该类事件触发时一定会调用响应的Listener。遵循Servlet规范的服务器完成了相应的工作,开发者只要在Listener里编写相关的代码就行了。
2 Listener的使用
使用Listener需要实现相应的Listener接口,应该触发Listener事件的时候,Tomcat会自动调用Listener的方法。
2.1 代码举例
三类监听,可以直接在一起实现,这样方便使用,分别监听三个Java Web核心对象的创建和销毁动作。
package com.wht.demo.listener; / * @author JDIT */ import org.apache.log4j.Logger; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionBindingEvent; @WebListener() public class SessionListenerTest implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {
// Public constructor is required by servlet spec public SessionListenerTest() {
} // ------------------------------------------------------- // ServletContextListener implementation // ------------------------------------------------------- public void contextInitialized(ServletContextEvent sce) {
/* This method is called when the servlet context is initialized(when the Web application is deployed). You can initialize servlet context related data here. */ } public void contextDestroyed(ServletContextEvent sce) {
/* This method is invoked when the Servlet Context (the Web application) is undeployed or Application Server shuts down. */ } // ------------------------------------------------------- // HttpSessionListener implementation // ------------------------------------------------------- public void sessionCreated(HttpSessionEvent se) {
/* Session is created. */ } public void sessionDestroyed(HttpSessionEvent se) {
/* Session is destroyed. */ } // ------------------------------------------------------- // HttpSessionAttributeListener implementation // ------------------------------------------------------- public void attributeAdded(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute is added to a session. */ } public void attributeRemoved(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute is removed from a session. */ } public void attributeReplaced(HttpSessionBindingEvent sbe) {
/* This method is invoked when an attibute is replaced in a session. */ } }
2.2 监听配置
<listener> <listener-class>com.wht.demo.listener.SessionListenerTest</listener-class> </listener>
一个完整的Listener包括Linstener类、
回到首页☞
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227666.html原文链接:https://javaforall.net
