zoukankan      html  css  js  c++  java
  • servlet 简单filter避免中文乱码等

    Filter是个servlet中的接口,servlet内部实现了利用Filter来过滤请求。

     

    可以在filter中根据条件决定是否调用chain.doFilter(request,response);即是否让目标资源执行。

    可以在让目标资源执行前,对request和response作预处理,在让目标资源执行。

    可以在目标资源执行之后,捕获目标资源的执行结果,从而实现一些特殊的功能。

     

    使用前需要在xml中配置好filter,和<servlet>配置类似。struts中的web.xml配置文件有filter例子。

    <filter>

       <filter-name>FilterDemo</filter-name>

       <filter-class>com.test.FilterDemo</filter-class>

    </filter>

     

    <filter-mapping>

       <filter-name>FilterDemo</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

     

     

    如果几个拦截器对同一个url-pattern进行拦截,那么谁出现在配置文件的最上面谁先执行。另外这种情况,会使FilterChain中有多个filter。

     

    设置编码格式的filter的doFilter方法中的代码:

    request.setCharacterEncoding(“UTF-8”);

    response.setCharacterEncoding(“UTF-8”);

    request.setContentType(“text/html;charset=UTF-8”);

    chain.doFilter(request,response);//如果chain中没有其他filter,那么让目标资源执行。否则就执行下一个filter,相当于一个关卡将请求放行。如果本行之后还有代码,会在资源或者其他filter执行完之后再跳回来接着执行

     

    filter的生命周期是在服务器启动的时候创建,只创建一个,服务器正常关掉的时候销毁。

     

    filter的init方法中的参数FilterConfig filterConfig来自于配置文件中的:

    <filter>

       <filter-name>FilterDemo</filter-name>

       <filter-class>com.test.FilterDemo</filter-class>

        <init-param>

            <param-name>xxx</param-name>

            <param-value>yyy</param-value>

        </init-param>

    </filter>

     

    可以用filterConfig.getInitParameter("xxx");的格式来获取。

  • 相关阅读:
    最大相邻差值 数学 桶排序
    hdu-1536 S-Nim SG函数
    博弈论初步(SG函数)
    hdu-5009 Paint Pearls DP+双向链表 with Map实现去重优化
    hdu-5015 233 Matrix 矩阵快速幂
    hdu-1430 魔板 康拓展开+映射优化
    hdu-1043 bfs+康拓展开hash
    康拓展开-排列的hash
    Daily Scrum 12.23
    Daily Scrum 12.22
  • 原文地址:https://www.cnblogs.com/flying607/p/3468859.html
Copyright © 2011-2022 走看看