在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的顺序执行的。
到此为止,过滤器和就说完了,你了解他们怎么用了吗?