JavaWeb的过滤器Filter

  Filter的作用是在请求到达web资源(HTML、css、Servlet、Jsp)之前拦截,做一个预处理。

  创建一个类实现Filter接口,在web.xml中对文件进行配置

1                  <filter>
2                     <filter-name>Filter的别名</filter-name>
3                     <filter-class>Filter的全类名</filter-class>
4                  </filter>
5                  <filter-mapping>
6                     <filter-name>别名</filter-name>
7                     <url-pattern>需要Filter拦截的资源地址</url-pattern>
8                  </filter-mapping>   

  Filter的生命周期:

    构造器在服务器启动时调用,只调用一次,Filter是单例多线程的。

    init():构造器被调用后调用

    doFilter():每一次拦截请求时都会调用。参数有:ServletRequest request 请求报文,ServletResponse response响应报文,FilterChain chain用于放行请求。

          chain.doFilter(request,response)放行请求。

    destroy方法在项目停止时调用。

  url-pattern设置

    精确匹配:目标资源地址和url-pattern地址一模一样时拦截。如/1.jsp

    路径匹配:访问在url-pattern配置路径下的目标资源时拦截,如/jsp/*

    后缀匹配:访问资源和url-pattern后缀一样就会拦截。如*.jsp

    拦截Servlet:Filter的url-pattern与Servlet的一致或者在filter-mapping标签下添加一个servlet-name标签。

  多个Filter的执行顺序由filter-mapping的配置顺序决定。

  dispatcher

    Filter默认只会拦截直接向目标资源发送的请求,而像转发之类的请求不会拦截

    可以在在filter-mapping的dispatcher标签中来指定过滤器要拦截的请求类型:

    <dispatcher>REQUEST</dispatcher>

   代表拦截发送到目标资源的直接请求,如果不指定dispatcher默认值就是request

   如果在filter-mapping设置了dispatcher则按照设置的内容来

   <dispatcher>FORWARD</dispatcher>

   FORWARD代表会拦截通过转发访问目标资源的请求。

   <dispatcher>INCLUDE</dispatcher>

   INCLUDE会拦截动态包含的请求。

   <dispatcher>ERROR</dispatcher>

   ERROR是拦截在web.xml中声明的错误页面的

    我们可以在web.xml文件进行一个错误页面的映射,通过如下标签:

   <error-page>

    <error-code>404</error-code>

   <location>/4.jsp</location>

   </error-page>

    error-code指的是发生错误的代码

    location 发生错误以后去到的页面

时间: 2024-07-31 10:35:30

JavaWeb的过滤器Filter的相关文章

深入分析JavaWeb Item36 -- 过滤器Filter高级应用

在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装饰器)模式对request.response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求. 一.Decorator设计模式 1.1.Decorator设计模式介绍 当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强: 编写子类,覆盖需增强的方法. 使用Decorator设计模式对方法进行增强. 使用代理 在阎宏博士的<JAVA与模式>一书中

javaweb-Servlet过滤器Filter

一.在javaweb学习中javaweb过滤器是一个非常重要的学习内容在web开发阶段的中Javaweb过滤器可以很好的优化代码,同时减少许多不必要的代码,将代码很好的集合在一起,这样的操作可以减少许多不必要的代码,同时大大的减少程序的运行. 二.正对于javaweb的过滤器Filter可以从以下几个方面进行讲解 1.Javaweb的概念 javaweb是一个服务器组键,他可以截取用户端的请求以及响应的信息,并且对信息进行过滤. 2.过滤器的api  Servlet过滤器API包含了3个接口,它

JavaWeb--Servlet过滤器Filter和SpringMVC的HandlerInterceptor(Session和Cookie登录认证)

拦截一些请求进行处理,比如通过它来进行权限验证,或者是来判断用户是否登陆,日志记录,编码,或者限制时间点访问等等,是非常有必要的.所以就有了此篇文章啦. 文章结构:(1)Servlet过滤器Filter:(2)SpringMVC的HandlerInterceptor:(3)对比认知. 一.Servlet过滤器Filter: 此部分是从赵四大佬那里学来的,并补充自己的认知 (1)概念: 能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,它只能

JavaWeb学习篇之----Servlet过滤器Filter和监听器

JavaWeb学习篇之----Servlet过滤器Filter和监听器 首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: *************************************************************************************** Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,

【JavaWeb学习】过滤器Filter

一.简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter技

JavaWeb过滤器Filter

Filter也称为过滤器,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制,页面的同一编码,过滤敏感词汇.压缩响应信息等一些高级功能! Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter技术,开发人员可以实现用户在访问某个目标资

javaweb学习总结——Filter(过滤器)学习

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过F

JavaWeb之过滤器

时间: Talk is cheap  Show me the code JavaWeb三大组件:    Servlet.Listener.Filter    都需要在web.xml中进行配置,Listener中的两个感知监听器不需要配置. --过滤器概述 过滤器是JavaWeb的三大组件之一,它与Servlet很相似,不过过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servlet或其他资源(JSP.css.html)时,会先执行部署在这个请求上的Filter,如果Filter"放行

web 过滤器 Filter、 Spring 拦截器 interceptor

1.过滤器(Filter)(在web.xml中注册过滤器) 首先说一下Filter的使用地方,我们在配置web.xml时,总会配置下面一段设置字符编码,不然会导致乱码问题: <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-