Filter过滤器

简介:

web.xml中元素执行的顺序listener->filter->struts拦截器->servlet。

1.过滤器的概念

Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。

优点:过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。而在实际使用时,就要特别注意过滤链的执行顺序问题

2.过滤器的作用描述

在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。 
  根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。 
  在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。 
根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。

3.Filter接口

1.如何驱动

    在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中

2.方法介绍

    init()  Init 方法在 Filter 生命周期中仅执行一次,web 容器在调用 init 方法时
    destory()  在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
    doFilter() Filter 链的执行 

4.FilterChain接口

1.如何实例化

    代表当前 Filter 链的对象。由容器实现,容器将其实例作为参数传入过滤器对象的doFilter()方法中

2.作用

    调用过滤器链中的下一个过滤器

Filter开发分为二个步骤:

编写java类实现Filter接口,并实现其doFilter方法。
在 web.xml 文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。
web.xml <!-- 编码过滤器 -->  
 <filter>
<filter-name>CharserFilter</filter-name>
<filter-class>com.yc.web.filters.CharserFilter</filter-class>

</filter>
<!--权限过滤器-->
<filter>
<filter-name>AuthorityFilter</filter-name>
<filter-class>com.yc.web.filters.AuthorityFilter</filter-class>

</filter>

<filter-mapping>
<filter-name>AuthorityFilter</filter-name>
<url-pattern>/backcust/*</url-pattern>

</filter-mapping>

<filter-mapping>
<filter-name>AuthorityFilter</filter-name>
<url-pattern>/backadmin/*</url-pattern>

</filter-mapping>

<filter-mapping>
<filter-name>CharserFilter</filter-name>
<url-pattern>/*</url-pattern>

</filter-mapping>

public class CharserFilter implements Filter {

    private String charset="utf-8";

    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {
        //强将arg0 arg1 转为http协议
                HttpServletRequest request=(HttpServletRequest)arg0;
                HttpServletResponse response=(HttpServletResponse)arg1;


                request.setCharacterEncoding(charset);
                response.setCharacterEncoding(charset);

                //调用过滤器链
                arg2.doFilter(request, response);
    }

    public void init(FilterConfig arg0) throws ServletException {
        //读取filter的初始化参数 取出配置的charset
                if(arg0.getInitParameter("charset")!=null){
                    this.charset=arg0.getInitParameter("charset");
                }

    }

    public void destroy() {


    }
目录
相关文章
|
应用服务中间件
filter 过滤器
Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息。
filter 过滤器
|
Java 应用服务中间件
Filter过滤器
Filter过滤器
Filter过滤器
|
应用服务中间件
15-Filter 过滤器2
15-Filter 过滤器2
94 0
|
Java
15-Filter 过滤器1
15-Filter 过滤器1
126 0
|
API 数据安全/隐私保护 容器
Filter(过滤器)
Filter(过滤器)
|
Web App开发 XML Java
filter过滤器
        过滤器,刚看到这个概念的时候,让小编想到刚刚给家里买的净水器,由于妈妈陪读的地方水质比较差,所以就买了一个净水器,那么什么是过滤器呢?结合我们生活中的知识,我们知道,过滤器是输送介质管道上不可缺少的一种装置,通常安装在减压阀、泄压阀、定水位阀 ,方工过滤器其它设备的进口端设备。
1680 0
|
API 容器
Filter过滤器的简单介绍与使用
Filter过滤器的简单介绍与使用
179 0
Filter过滤器的简单介绍与使用
|
9月前
|
Java API 容器
Filter 过滤器实现
JavaWeb 组件 Servlet 提供了 Filter 过滤功能,其功能是对目标资源的请求和响应进行拦截,对拦截到的请求和响应做出特殊的功能处理,比如我们请求中有一些敏感信息过滤就是利用过滤器过滤。
|
容器 数据格式 XML
6.过滤器(Filter)
---恢复内容开始--- 1.过滤器简介: 过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象。 过滤器 功能: 分析请求,将请求发送给指定的资源或自己创建一个响应返回;在请求到达服务器端前处理请求,设置请求信息,将请求封装成符合规则的对象在响应到达客户端前处理响应,将响应封装成符合规则的对...
1478 0
|
存储 JavaScript Java
拦截器Intercepter和过滤器Filter的比较
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。     org.apach
1404 0

热门文章

最新文章