过滤器和监听器

过滤器和监听器,第1张

概述过滤器 1、什么是过滤器?   原理:拦截  检查  放行,其实就是对资源的一种筛选,过滤 2、过滤器的创建过程   实现一个接口:Filter   重写三个方法  init  doFilter  destroy   在web.xml中配置过滤器  <filter> <filter-name>配置名字</filter-name> <filter-class>Filter 过滤器

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中移除");}
总结

以上是内存溢出为你收集整理的过滤器和监听器全部内容,希望文章能够帮你解决过滤器和监听器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1037218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存