log4j filter过滤器_js过滤器filter_struts中filter过滤器(2)

电脑杂谈  发布时间:2017-03-17 16:11:14  来源:网络整理

创建Filter 必须实现javax.servlet.Filter 接口,在该接口中定义了三个方法。

• void init(FilterConfig config): 用于完成Filter 的初始化。

• void destroy(): 用于Filter 销毁前,完成某些资源的回收。

• void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。

过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。

参照编码过滤器示例来查看怎么实现的

首先配置在web.xml文件里的规则如下

<!-- 编码处理过滤器 -->
   <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
     <param-name>encoding</param-name>
     <param-value>utf-8</param-value>
  </init-param>
  <init-param>
     <param-name>forceEncoding</param-name>
     <param-value>true</param-value>
  </init-param>
    </filter>
    <filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>*.do</url-pattern>
    </filter-mapping>

其中,filter-class 为过滤器Filter类,init-prama为注入的set参数

Filter-mapping中的url-pattern为过滤的url类型

类的继承关系

CharacterEncodingFilterr类继承了 OncePerRequestFilter 类

而 OncePerRequestFilter 类又继承了 GenericFilterBean 类

Filter, BeanNameAware, EnvironmentAware, ServletContextAware, InitializingBean, DisposableBean

设置编码的核心代码为

@Override
   protected void doFilterInternal(
  HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
  throws ServletException, IOException {
      if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
  request.setCharacterEncoding(this.encoding);
  if (this.forceEncoding) {
     response.setCharacterEncoding(this.encoding);
  }
      }
      filterChain.doFilter(request, response);
   }
 


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-38041-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...