尚大数据技术之springmvc-8.259.1及filter_第1页
尚大数据技术之springmvc-8.259.1及filter_第2页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Filter(过滤器)Filter 简介Filter 中文意思为过滤器。顾名思义,过滤器可在浏览器以及目标资源之间起到一个过滤的作用。例净化器,可以看成是生活中的一个过滤器,他可以将污水中的杂质过滤,从而使进入的污水变成净水。对于 WEB 应用来滤器是一个驻留在服务器中的 WEB 组件,他可以截取客户端和WEB 资源之间的请求和响应信息。WEB 资源可能包括 Servlet、JSP、HTML 页面等服务器WEB资源当服务器收到特定的请求后,会先将请求交给过滤器,程序员可以在过滤器中对请求信息进行修改等操作,然后将请求信息再发送给目标资源。目标资源作出响应后,服务器会再次将响应转交给过滤器,在过

2、滤器中同样可以对响应信息做一些操作,然后再将响应发送给服务器。也就是滤器可以在 WEB 资源收到请求之前,浏览器收到响应之前,对请求和响应信息做一些相应的操作。在一个 WEB 应用中可以部署多个过滤器,多个过滤器就组成了一个过滤器链,请求和响应必须在经过多个过滤器后才能到达目标;服务器WEB资源过滤器不是必须将请求传送到下一个过滤器(或 WEB 资源),也可以自己来处理请求,发送响应。Filter 相关接口编写 Filter 和编写 Servlet 类似,都需要实现接口。响应浏览器过滤器过滤器过滤器请求响应浏览器过滤器请求编写 Filter 需要实现 Filter 接口,来看一下 Filter

3、 接口的主要方法:Filter 接口,实现 Filter 需要实现该接口init()方法用于初始化 FilterdoFilter()作用和 service()方法类似,是过滤请求和响应的主要方法。3.destroy()用于在 Filter 对象被销毁前做一些收尾工作。如:资源等。FilterConfig 对象在服务器调用 init()方法时传递进来。getFilterName() 获取 Filter 的名字getServletContext() 获取 ServletContext 对象(即 application) getInitParameter() 获取 Filter 的初始化参数 get

4、InitParameterNames() 获取所有初始化参数的名字1.2.3.4.FilterChain 对象是在 doFilter()方法被调用时作为参数传递进来的。1.doFilter()方法用于调用 Filter 链上的下一个过滤器,如果当前过滤器为最后一个过滤器则将请求发送到目标资源。创建 Filter1. 实现 Filter 接口public classoFilter implements Filter Overridepublic void init(FilterConfig filterConfig) throws ServletException Overridepublic

5、void doFilter(ServletRequest request, ServletResponse response,2. 在 web.xmlFilter编写的这个 Filter 用来过滤发送到 index.html 的请求。在 doFilter()方法中只写了一个打印语句,并没有将请求转交给目标资源处理。所以这个过滤器的效果是不能正常查看到 index.html 页面,在index.html 时页面上将会是一片空白。同时,控制台将输出o Filter。如果想要 index.html 正确显示,需要在输出语句后,调用一个 chain.doFilter(request, response

6、)将请求放行。Filter 的配置文件和 Servlet 的配置文件类似filter-name 指定的是过滤器的名字filter-class 指定的是过滤器的全类名url-pattern 指定的是需要过滤器处理的请求地址除此之外在 filter-map还有一个子dispatcher,该用来指定需要 Filter 处理的请求类型,该可以配置四个值:REQUEST用户直接资源时,会调用 FilterFORWARD通过转发时,会调用 FilterINCLUDE通过动态包含获取时,会调用 FilterERROR当通过异常处理页面时,会调用 Filter这四种情况可以设置一个,也可以同时设置多个,如果不

7、设置那么默认为 REQUEST。oFiltercom.atguigu.web.filter.oFilteroFilter/index.htmlFilterChain chain) throws IOException, ServletException System.out.prln(o Filter);Overridepublic void destroy() Filter 的生命周期Filter 的生命周期和 Servlet 类似构造器:创建 Filter 实例是调用,Filter 实例服务器一旦启动就会被创建 init():实例创建后马上被调用,用来对 Filter 做一些初始化的操作

8、doFilter():Filter 的主要方法,用来完成过滤器主要功能的方法,每次源时都会调用。目标资destroy():服务器停止时调用,用来资源。Filter 的目标资源Filter 的目标资源指的是需要调用 Filter 来进行过滤处理的资源,例如上文配置的/index.html 就是的目标资源,当项目根目录下的 index.html 时就会调用oFilter 来进行过滤。目标资源的配置方式主要有两种:第一种:通过 filter-map的 url-pattern 来配置这里的配置和 Servlet 的 url-pattern 的规则相同精确匹配:/路径/资源名。如:/index.html

9、 、/o/index.jsp 、 /c nt/LoginServlet精确匹配只要在请求地址完全一样时才会调用 Filter路径匹配:/路径名/*如:/o/* 、/*路径匹配只要是所请求的资源是在设置的路径下就会调用 Filter如:/o/* 只要用 Filter项目根目录/o/ 下的任意资源就会调如: /* 只要后缀匹配:*.后缀名项目根目录下的资源就会调用 Filter如:*.jsp 、 *.html后缀匹配只要的资源路径是以指定后缀结尾就会调用 Filter第二种通过 filter-map中的 servlet-name 来指定要过滤的Servlet如:以下是一个项目中的 web.xml 配置文件,在项目中有一个Filter 加做中增加了ServletoFilter,一个 Servlet 叫做oServlet。在 Filter 的 filter-map的值设置成 Servlet 的名字,在一个 servlet-name,将该时就会调用该过滤器过滤请求。oFilterFilter 的执行顺序可以为一个资源配置多个 Filter,当配置多个 Filter 以后就有一个执行顺序,实际执行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论