servlet过滤器使用

servlet的过滤器夹在用户和servlet之间,可以截获并预处理或者打断{用户到servlet的请求或servlet到用户的响应},但本身并不能处理和响应用户请求。

filter类必须实现Filter接口的三个方法:

  init:在web应用程序启动时就根据web.xml中的配置来创建每个filter的实例

  doFilter:用户请求对应的被过滤的url时执行

  destroy:web容器卸载filter时执行

对同一个request,可以有多少filter,根据在web.xml中filter定义的顺序形成filter链(chain)。

web.xml中先声明的先执行doFilter,在doFilter里有一个chain.doFilter(request, response);继续执行filter链里下一个filter的doFilter方法。doFilter方法大致如:执行前处理块====chain.doFilter(request, response);=====执行后处理。所以后声明的会先执行完doFilter方法。

    <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>/*</url-pattern>
</filter-mapping>

web.xml里定义的filter可以通过init-param设置filter执行init的参数。filter-mapping设置了该过滤器对应的url地址

上一篇:url 编码(percentcode 百分号编码)


下一篇:Kali Linux下常用软件安装及配置