配色: 字号:
过滤器中的方法
2017-12-11 | 阅:  转:  |  分享 
  
过滤器过滤器概述什么是过滤器?在JavaWeb中,一共提供了三门技术,分别是Servlet、Filter、Listener,这三门技术
统称为JavaWeb的三大组件.其中Filter也叫做过滤器.所谓的过滤器其实就是对用户的请求进行拦截处理.通过过滤器开发人员
可以实现在用户访问之前或者是响应之后对请求和响应进行拦截,从而做一些相关的处理:例如:检查用户是否登陆–如果用户已经登陆,
可以放行访问对应的资源,如果用户没有登陆,可以跳转到登陆页面提示用户进行登陆.过滤器总结:所谓的过滤器就是拦截用户对资源的访
问一个过滤器可以配置拦截多个资源,一个资源也可以配置多个过滤器进行拦截.所谓的拦截就的将代表请求的request对象和代表响应的
response对象拦截下来:判断用户是否登陆,决定是否放行对后面资源的访问在访问之前或者响应之前进行拦截,比如:全站乱码处
理如何开发过滤器开发过滤器的步骤写一个类,实现过滤器接口(Filter),并实现其中的方法在web应用的web.xml文件
中配置过滤器1.过滤器案例:创建两个Servlet,分别是ServletDemo1和ServletDemo2,测试访问Se
rvletDemo1实现:ServletDemo2实现:测试ServletDemo1:测试ServletDemo2:创建一个过滤
器,实现Filter接口FilterDemo1中doFilter方法的实现:配置过滤器对两个Servlet进行拦截.分别访问S
ervletDemo1和ServletDemo2,查看FilterDemo是否会对这两资源的请求进行拦截处理.2.过滤器案例改造
(实现暗号)(1)编写code.jsp用来输入暗号(2)编写error.jsp用来提示(当用户输入的暗号不正确时,跳转到erro
r页面进行提示)修改FilterDemo1中doFilter方法,对拦截的请求进行处理:获取暗号并判断暗号是否正确,如果不正
确就跳转到error.jsp提示用户,如果正确就放行访问ServletDemo1.过滤器的配置在创建完Filter类之后,需要
在web应用的web.xml文件中配置过滤器所要拦截的资源路径,具体配置如下:过滤器中的方法过滤器的生命周期(了解)在WEB应用
被加载之后,服务器会立即创建出该WEB应用中所有的Filter实例,Filter实例创建之后,服务器会立即调用init方法进
行初始化的操作,之后Filter实例会一直驻留在服务器的内存中,当过滤器拦截到请求时,服务器会调用doFilter方法来处理
请求,直到服务器关闭,或者WEB应用被移出容器时为止,随着WEB应用的销毁,Filter实例也会跟着销毁,在销毁之前服务
器会调用destroy方法进行善后的处理.过滤器中的方法1.init方法:publicvoidinit(FilterConf
igarg0);当Filter实例创建之后,服务器立即调用init方法进行初始化的操作.2.doFilter方法:public
voiddoFilter(ServletRequestrequest,ServletResponseresponse,F
ilterChainchain)throwsIOException,ServletException当过滤器拦截到对资源的
访问时,服务器会调用doFilter方法进行处理.(1)FilterChain代表多个过滤器组成的过滤器链对象.一个资源可以配
置多个过滤器进行拦截,多个过滤器执行的顺序是按照Filter在web.xml中对应的filter-mapping标签的先后配置顺
序执行的.多个过滤器就组成了一条过滤器链.当过滤器拦截到对资源的访问时,如果处理之后放行过滤器,即调用FilterChain中
的doFilter方法来放行过滤器.接着才可以执行后面的资源如果后面仍然是过滤器,则也需要在过滤器的doFilter方法中调用
FilterChain.doFilter方法才可以放行过滤器,执行后面的资源.如果后面没有过滤器,则访问对应的资源.也就是说
当所有的过滤器都调用了FilterChain的doFilter方法时,才可以放行所有的过滤器,才可以访问到对应的资源.3.de
stroy方法:publicvoiddestroy()在Filter实例销毁之前,服务器调用destroy方法进行善后的处
理.过滤器的应用(全站乱码处理过滤器)创建一个过滤器类(EncodingFilter)在web.xml文件中配置过滤器实现Enco
dingFilter的doFilter方法在EncodingFilter中处理请求参数乱码和响应正文乱码.通过装饰者模式实现对GET提交的参数进行乱码处理.
献花(0)
+1
(本文系金银宝100首藏)