filter和listener

来源:互联网 发布:mac输入法切换 编辑:程序博客网 时间:2024/06/12 01:55

Filter:过滤请求和响应

       1.应用场景:

              自动登陆

              统一编码

 

       2.用法:

              1).编写一个java类,间接或直接实现filter接口(或者直接新建filter);

              2).实现它的方法doFilter()

              3).配置filter

                     a,注册filter<filter></filter>

                     b.绑定路径:既可以用<servlet-name></servlet-name>,也可以用<url-pattern></url-pattern>

                     url-pattern配置:

1.     精确匹配:以”/”开头,后面自定义

2.     目录匹配:以”/”开头,以”/*”结束

3.     后缀名匹配:以”*.”开头,以”*.后缀名”结束.

 

       3.filter的生命周期:

              Filter是单实例,在服务器启动的时候,服务器会创建filter对象,调用init方法完成初始化操作,每次请求来了,都会拦截请求执行业务逻辑,当服务器正常关闭,移除该项目,卸载filter之后服务器会调用destroy方法完成销毁操作.

 

       4.filterChain过滤器链:

         执行顺序与web.xml中filter-mapping的书写顺序有关,请求来的时候,将所有匹配到的filter放置在一个过滤器链中,从第一个开始执行,逻辑执行完毕放行,执行下一个filter,如果下一个filter是最后一个filter,再次放行就会到达目标资源.

 

       5.<dispatcher></dispatcher>  是用来指明该filter拦截哪些类型的请求,类型有request,forward,include,error

              <error-page></error-page>全局错误页面配置,有<error-code></error-code>和<location></location>

 

       6.filterConfig对象:

              1).获取filter的名字;

              2).获取filter的配置参数;

              3)获取上下文

 

       7.装饰者模式:

              1).装饰者与被装饰者要直接或间接实现同一个接口或者继承同一个类;

              2).装饰者中要有被装饰者的引用;

              3).如果需要对方法增强就需要重写;

              4).如果不需要对方法增强,就调用原来的方法就行.

 

Listener:监听器

 

1.     listener的作用:

a)      可以监听三个域对象(HttpServletRequest,HttpSession,servletContext)的生命周期;

b)      可以监听三个域对象的属性变化;

c)       可以监听JavaBean在httpSession中的变化.

                    i.           绑定:往session中放置JavaBean(HttpSessionBindingListener)

                   ii.           解绑:从session中移除JavaBean’ (HttpSessionBindingListener)

                 iii.           (HttpSessionActivationListener)用来监听JavaBean在session中的钝化和活化

 

2.     编写listener

a)      编写一个Java类(也可以直接新建listener),直接或间接实现servletContextListener

b)      实现其中的方法(方法随实现接口的变化而变化)

 

原创粉丝点击