您所在的位置:主页 > 培训巧问答 >

如何分析Listener和Filter的特性

时间:2018-12-03 11:13来源:未知 作者:os 点击:

 

     在JavaWeb程序的开发中,配置Listener和Filter这两个东西是必不可少的,我们之所以说这两个东西,主要原因是关于监听器和过滤器是比较有难度的,相较于之前的来说这个的难度在于xml文件的配置,只有这两个东西掌握了之后,再学习相关的Java框架才会比较容易一些,他们都属于Servlet中的高级技术。
     监听器Listener就是一个Java类用来监听其他的JavaBean的变化的配置。它的作用是负责监听web中的域对象 ServletContext、HttpSession、ServletRequest这三个对象,在Javaweb中,Listener监听的内容主要是监听这三个对象的创建和销毁他们分别是ServletContextListenner、ServletRequestListener、HttpSessionListener,监听这三对象属性的变化他们分别是ServletContextAttributeListener、ServletRequestAttributeListener、HttpSessionAttributeListener,在session中javabean的状态有两个他们分别叫做钝化和活化HttpSessionActivationListener、绑定和解绑HttpSessionBindingListener。
    
    监听三个对象的创建和销毁,ServletContextListener在创建的时候:服务器启动的时候,会为每一个项目都创建一个servletContext,在它销毁的时候:服务器关闭的时候,或者项目被移除的时候,他是后期用来加载配置文件。      ServletRequestListener是在请求来的时候创建的,是在响应生成的时候销毁的。HttpSessionListener是在java中第一次调用request.getSession的时候或者是jsp访问的时候创建的,他的销毁分三种情况:session超时,手动销毁session,服务器非正常关闭。
    监听三个对象属性的变化ServletContextAttributeListener、ServletRequestAttributeListener、HttpSessionAttributeListener这三个属性是在添加、删除、替换的使用被监听的
监听session中javabean的状态、HttpSessionBindingListener(绑定和解绑)它是用来检测java是否添加到session或者从session中移除,HttpSessionActivationListener(钝化和活化)所谓的钝化就是avabean从session中序列化到磁盘上,那么活化就是javabean从磁盘上加载到了session中,监听器可以通过配置文件修改javabean什么时候钝化。HttpSessionBindingListener(绑定和解绑)是检测java是否添加到session或者从session中移除。
    Filter过滤器是一个实现了特殊接口的Java类.实现对请求资源的过滤的功能。过滤器主要是过滤请求和响应的,他有自动登录、统一编码、过滤关键字等作用。而Filter是一个接口。我们编写filter步骤也是三步:1.编写一个类,实现filter接口并且重写方法。2.编写配置文件,注册filter并且绑定路径。3.测试Filter过滤器,它的初始化方法是init(FilterConfig config),处理业务逻辑的方法doFilter(ServletRequest request, ServletResponse response, FilterChain chain)。它的销毁操作的方法是destroy() 。
    Filter的生命周期是这样的,filter单实例多线程,filter在服务器启动的时候 ;服务器创建filter 调用init方法 实现初始化操作;请求来的时候,创建一个线程 根据路径调用dofilter 执行业务逻辑;当filter被移除的时候或者服务器正常关闭的时候 调用destory方法 执行销毁操作.
    FilterChain是过滤链,通过chain的dofilter方法,可以将请求放行到下一个过滤器,直到最后一个过滤器放行才可以访问到servlet|jsp,这里的doFilter()是放行方法。
url-pattern配置有完全匹配、目录匹配、后缀名匹配三种,一个资源有可能被多个过滤器匹配成功,多个过滤器的执行顺序是按照web.xml中filter-mapping的顺序执行的。
    到此为止,过滤器和监听器就说完了,你了解他们怎么用了吗?