javaweb——监听器,过滤器
Servlet,Filter,Listener(三大组件):
Servlet(处理请求),Filter(过滤请求),Listener(监听器)
三大组件基本都需要在web.Xml中注册,除了Listener中的两个(活化钝化监听器和绑定解绑监听器)需要javaBean实现。
Filter
<!-- 配置过滤器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.bjsxt.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<url-pattern>的精确匹配:
/animal/dog.jsp
<url-pattern>的路径匹配:
/pics/* //拦截pics下的所有请求
<url-pattern>的后缀匹配:
*.jsp //拦截所有以.jsp结尾的请求`
Filter请求过程
Listener
八个监听器: ServletContext(2)、HttpSession(4) 和 ServletRequest(2)
两个:声明周期监听器,属性变化监听器
四个: 声明周期监听器,属性变化监听器,活化钝化监听器,绑定解绑监听器
ServletContextListener:监听服务器的启动停止
监听器的使用:
1. 作用:
监听作用域对象request、session、application的创建、销毁和内容的改变
2. 使用:
创建一个实现了指定接口的java类
监听request--->ServletRequestListener 监听request对象的创建和销毁
requestInitialized(ServletRequestEvent sre)//创建
requestDestroyed(ServletRequestEvent sre)//销毁
注意:
形参可以获取监听的request对象
sre.getServletRequest();
监听request--->ServletRequestAttributeListener 监听request作用域数据的变更。
attributeAdded(ServletRequestAttributeEvent srae)
attributeRemoved(ServletRequestAttributeEvent srae)
attributeReplaced(ServletRequestAttributeEvent srae)
注意:形参可以获取被监听的数据
srae.getName() 获取监听数据的键
srae.getValue() 获取监听数据的值
监听session--->HttpSessionListener 监听session的创建和销毁
sessionCreated(HttpSessionEvent se) 创建
sessionDestroyed(HttpSessionEvent se) 销毁
注意:形参可以获取被监听的session对象
se.getSession();
监听session--->HttpSessionAttributeListener 监听session数据的变更
attributeAdded(HttpSessionBindingEvent event)
attributeRemoved(HttpSessionBindingEvent event)
attributeReplaced(HttpSessionBindingEvent event)
注意:形参可以获取被监听的数据
event.getName() 获取数据的键名
event.getValue() 获取数据的值
监听application--->ServletContextListener 监听application对象的初始化和销毁
contextInitialized(ServletContextEvent sce) 初始化 服务器启动
contextDestroyed(ServletContextEvent sce) 销毁 服务器关闭
注意:
形参可以获取当前application对象。
sce.getServletContext();
监听application--->ServletContextAttributeListener 监听数据的变更
attributeAdded(ServletContextAttributeEvent event)
attributeRemoved(ServletContextAttributeEvent event)
attributeReplaced(ServletContextAttributeEvent event)
注意:
形参可以获取当前监听的数据
event.getName() 获取数据的键名
event.getValue() 获取数据的值
在web.xml中配置监听器类
<listener>
<listener-class>com.bjsxt.listener.MyListener</listener-class>
</listener>