欢迎来到天天文库
浏览记录
ID:14343174
大小:78.50 KB
页数:27页
时间:2018-07-28
《jsp中过滤器的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Servlet过滤器一、什么是Servlet过滤器过滤器是在数据交互之间过滤数据的中间组件,独立于任何平台或者Servlet容器。Servlet过滤器可以应用在客户机和servlet之间、servlet和servlet或JSP页面之间,以及所包括的每个JSP页面之间。二、实现一个Servlet过滤器Servlet过滤器API包含javax.servlet包中的3个接口,分别是Filter、FilterChain和FilterConfig。实现一个Servlet过滤器的确要经历三个步骤。1、编写Servlet过滤器实现类。2、配置Servlet过滤器。把该过滤器添加到W
2、eb应用程序中(通过在Web部署描述符/web.xml中声明它);3、部署Servlet过滤器。把过滤器与应用程序一起打包并部署它;Servlet容器对部署描述符中声明的每一个过滤器,只创建一个实例(或实例池)。与Servlet类似,容器将在同一个过滤器实例上运行多个线程来同时为多个请求服务,因此,开发过滤器时,也要注意线程安全的问题。三、编写过滤器实现类1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口a、init(FilterConfig):这是Servlet过滤器的初始化方法,Servlet容器创建Servl
3、et过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。b、doFilter(ServletRequest,ServletResponse,FilterChain):这个方法完成实际的过滤操作,当客户请求访问于过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器。c、destroy():Servlet容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源。2、过滤器实现类创建步骤(过滤器实现类生命周期):a.实现javax
4、.servlet.Filter接口。b.初始化:实现init方法,读取过滤器的初始化参数。c.过滤:实现doFilter方法,完成对请求或响应的过滤。d.转发或阻塞:调用FilterChain接口对象的doFilter方法,向后续的过滤器传递请求或响应。e.析构:destroy方法销毁过滤器,释放过滤器占用的资源。四、配置Servlet过滤器(在web.xml中配置)过滤器通过web.xml文件中的两个XML标签来声明:1、:定义过滤器的名称,并且声明过滤器实现类和init()参数。:指定过滤器的名字;5、s>:指定过滤器类的类名,包括类的路径;:为过滤器实例提供初始化参数,可以有多个;2、:将过滤器与servlet或URL模式相关联。:指定过滤器的名字,与中的子元素相对应;:指定和过滤器关联的URL,为”/*”表示所有URL;3、元素还可以包含0到4个,指定过滤器对应的请求方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST6、.REQUEST当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。INCLUDE如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。FORWARD如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。ERROR如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此7、之外,过滤器不会被调用。在web.xml中配置Servlet和Servlet过滤器,应该先声明过滤器元素,再声明Servlet元素。两个或更多个过滤器应用到同一个资源,按照它们在配置文件中显示的先后次序调用它们。例子1:单个过滤器配置:容器将其应用于所有接收的请求FilterNameFilterName
5、s>:指定过滤器类的类名,包括类的路径;:为过滤器实例提供初始化参数,可以有多个;2、:将过滤器与servlet或URL模式相关联。:指定过滤器的名字,与中的子元素相对应;:指定和过滤器关联的URL,为”/*”表示所有URL;3、元素还可以包含0到4个,指定过滤器对应的请求方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST
6、.REQUEST当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。INCLUDE如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。FORWARD如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。ERROR如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此
7、之外,过滤器不会被调用。在web.xml中配置Servlet和Servlet过滤器,应该先声明过滤器元素,再声明Servlet元素。两个或更多个过滤器应用到同一个资源,按照它们在配置文件中显示的先后次序调用它们。例子1:单个过滤器配置:容器将其应用于所有接收的请求FilterNameFilterName
此文档下载收益归作者所有