1、什么是过滤器?
原理:拦截 检查 放行,其实就是对资源的一种筛选,过滤
2、过滤器的创建过程
实现一个接口:Filter
重写三个方法 init doFilter destroy
在web.xml中配置过滤器
<filter> <filter-name>配置名字</filter-name> <filter-class>Filter类全名</filter-class> </filter><filter-mapPing> <filter-name>配置名字</filter-name> <url-pattern>过滤路径</url-pattern></filter-mapPing>
3、过滤器的生命周期
过滤器对象创建时,执行init方法一次,反复执行doFilter方法,Filter对象销毁时,执行destroy方法一次。
过滤器什么时候创建?什么时候销毁?
服务器启动时创建,服务器关闭时销毁。
4、Filter中的方法
public voID init(FilterConfig arg0)init方法是,Filter对象创建时执行的方法。该方法的参数 FilterConfig 作用: String getFiltername() 获取Filter 的name String getinitParameter(String name) 获取初始化参数 Enumeration getinitParameternames() 获取初始化参数的名字 ServletContext getServletContext() 获取ServletContext
public voID doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain arg2) doFilter方法是在访问过滤时,反复执行的方法。(起到拦截和放行的作用) 该方法的参数 FilterChain 用来做过滤的放行工作。(所谓放行是指拦截后,进入要请求的资源) arg2.doFilter(arg0,arg1);放行
public voID destroy() { System.out.println("TestFilter...destroy...");}//过滤器销毁时调用的方法
5、过滤器的执行流程
单个过滤器
多个过滤器---责任链模式
6、过滤器配置文件 注解模式@webFilter("过滤的路径")
<filter-mapPing> <filter-name>TestFilter</filter-name> <url-pattern>过滤的路径</url-pattern><dispatcher> ---> 配置过滤器的过滤方式 REQUEST 默认 拦截请求 FORWARD 拦截转发(只拦截转发) INCLUDE 拦截包含 ERROR 拦截错误页面</dispatcher></filter-mapPing>
7、过滤的路径
1 /具体路径 /TestServlet 只有访问TestServlet才会经过这个过滤器
2 /* 过滤所有请求
3 *.do 过滤所有结尾是 .do的请求
8、有很多路径需要过滤时
将这些文件统一放入一个文件夹,如aaa 这时过滤路径写 /aaa/* 就可以了
监听器1、监听器是一个对象,用来监听另一个对象的变化。
2、web监听器(3类,8个)
Listener 是JavaEE 中Servlet规范下的一个组件
用来监听ServletRequest httpSession ServletContext这个三个域对象。
3、监听器在web.xml中的配置
<Listener> <Listener-class>路径</Listener-class></Listener>
4、第一类:监听域对象的生命周期
servletcontextlistener,监听ServletContext的生命周期
public class Myservletcontextlistener implements servletcontextlistener { /* * 监听ServletContext的生命周期(创建和销毁) * */ public voID contextinitialized(ServletContextEvent arg0) { //ServletContext创建时调用的方法 System.out.println("ServletContext 创建了...."); } public voID contextDestroyed(ServletContextEvent arg0) { //ServletContext销毁时调用的方法 System.out.println("ServletContext 销毁了...."); }}
httpSessionListener,监听Session的生命周期
public class MySessionListener implements httpSessionListener { public voID sessionCreated(httpSessionEvent arg0) { //arg0.getSession(); 获取事件源 System.out.println("Session创建了<<<<<"); } public voID sessionDestroyed(httpSessionEvent arg0) { System.out.println("Session销毁<<<<<"); }}
ServletRequestListener
public class MyRequestListener implements ServletRequestListener { public voID requestinitialized(ServletRequestEvent arg0) { System.out.println("request创建了###"); } public voID requestDestroyed(ServletRequestEvent arg0) { System.out.println("request销毁了###"); }}
4、第二类:监听值的变化
ServletContextAttributeListener
public class MyScAttrListener implements ServletContextAttributeListener { public voID attributeAdded(ServletContextAttributeEvent arg0) { System.out.println("向SC中添加了一个值..."); } public voID attributeRemoved(ServletContextAttributeEvent arg0) { System.out.println("从SC中移除一个值<<<"); } public voID attributeReplaced(ServletContextAttributeEvent arg0) { System.out.println("替换了SC中的一个值###"); }}
httpSessionAttributeListener
public class MySessionAttrListener implements httpSessionAttributeListener { public voID attributeAdded(httpSessionBindingEvent arg0) { System.out.println("向Session中添加了一个值"); } public voID attributeRemoved(httpSessionBindingEvent arg0) { System.out.println("从Session中移除一个值"); } public voID attributeReplaced(httpSessionBindingEvent arg0) { System.out.println("替换Session中的值"); }}
ServletRequestAttributeListener
public class MyRequestAttributeListener implements ServletRequestAttributeListener { public voID attributeAdded(ServletRequestAttributeEvent arg0) { System.out.println("request添加"); } public voID attributeRemoved(ServletRequestAttributeEvent arg0) { System.out.println("request移除"); } public voID attributeReplaced(ServletRequestAttributeEvent arg0) { System.out.println("request替换"); }}
5、第三类:监听JavaBean中的对象,部需要配置
在bean包的类中加上
public voID valueBound(httpSessionBindingEvent arg0) { System.out.println("对象绑定到了Session中"); }public voID valueUnbound(httpSessionBindingEvent arg0) { System.out.println("对象从Session中移除");}总结
以上是内存溢出为你收集整理的过滤器和监听器全部内容,希望文章能够帮你解决过滤器和监听器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)