本帖最后由 小石姐姐 于 2018-6-21 14:23 编辑
Listner& Filter学习笔记
监听器Listener三大类:
一类:监听三个域对象的创建和销毁的监听器
ServletContextListener:监听ServletContext对象的创建和销毁 contextDestroyed():是在服务器关闭的时候执行的方法 contextInitialized():是在服务器启动的时候执行的方法 HttpSessionListener:监听HttpSession的创建和销毁的监听器sessionCreated():用来通知已创建会话sessionDestroyed():用来通知会话即将失效 ServletRequestListener:监听ServletRequest对象的创建和销毁的监听器reqeustDestroyed():请求即将超出WEB程序的范围requestInitialized():请求即将进入WEB程序的范围
二类:监听三个域对象的属性变更的监听器:(属性添加,移除,替换
ServletContextAttributeListener:监听ServletContext对象的属性变更attributeAdded():通知将新属性添加到servlet实例attributeRemoved():---删除---attributeReplaced():---替换--- HttpSessionAttributeListener:监听HttpSession中的属性变更attributeAdded():将属性添加到这个会话中的通知attributeRemoved():---删除---attributeReplaced():---替换--- ServletRequestAttributeListener:监听ServletRequest对象的属性变更的attributeAdded():将新属性添加到servlet请求中attributeRemoved():---删除---attributeReplaced():---替换---
三类:监听HttpSession中的JavaBean的对象的状态改变的监听器
HttpSessionBindingListener:监听HttpSession中的JavaBean的绑定和解除绑定的valueBound():通知对象被绑定到会话并标识valueUnbound():---解除绑定--- HttpSessionActivationListener:监听HttpSession中的JavaBean的钝化和活化的sessionDidActivate():通知会话刚刚被激活,活化(反序列化)sessionWillPassivate():会话钝化,序列化到硬盘
[Java] 纯文本查看 复制代码 public class MyServletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext对象被创建了...");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象被销毁了...");
}
}
配置
<web-app>
<listener>
<listener-class>
life.listeners.MyServletContextListener
</listener-class>
</listener>
<servlet/>
<servlet-mapping/>
</web-app> 过滤器 Filter[Java] 纯文本查看 复制代码 需要创建一个Filter实现类,继承javax.servlet.Filter接口。且必须实现这个接口的三个方法.
filter和servlet除了filterchain这一点不同之外,servlet还有几个封装的实现类可以使用,如HttpServlet和GenericServlet,而filter却没有它具体的实现类和接口,需要我们自己封装一个类似于HttpFilter的实现类供我们以后使用.
配置:
<filter>
<filter-name>过滤器名称</filter-name>
<filter-class>过滤器完整类名</filter-class>
<init-param>
<description>描述信息,可以省略</description>
<param-name>参数名称</param-name>
<param-value>参数值</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>过滤器名称</filter-name>
<url-pattern>URL</url-pattern>
<dispatcher>[REQUEST|INCLUDE|FORWARD|ERROR]</dispatcher>
</filter-mapping>
类型 | 作用 | REQUEST | 用户直接访问页面时,web容器会调用该过滤器 | FORWARD | 目标资源是通过RequestDispatcher的forward方法访问时,过滤器将被调用 | INCLUDE | 目标资源是通过RequestDispatcher的include方法调用时,过滤器将被调用 | ERROR | 目标资源是通过声明式异常处理机制调用时,过滤器被将被调用 | ASYNC(Servlet3.0新增加) | 支持异步处理 |
|
|