码迷,mamicode.com
首页 > 其他好文 > 详细

Servlet Filter

时间:2017-06-22 17:05:15      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:servlet filter

Filter :

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

    过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。

1、filter的驱动:
在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中
<filter>
  <filter-name>helloFilter</filter-name>
  <filter-class>com.jalja.filter.HelloFilter</filter-class>
</filter> 
<filter-mapping>
  <filter-name>helloFilter</filter-name>
  <!-- 要拦截的资源 -->
  <url-pattern>/freeMark</url-pattern>
</filter-mapping>

2、filter接口:
//destory() 在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
public void destroy()

//Filter 链的执行

//chain.doFilter(request, response);//把请求传给下一个filter,如果该filter是该filter链的最后一个filter,则把请求给目标资源
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) 
//类似于servlet的init方法,在创建Filter对象时被调用,只调用一次,对当前的filter进行初始化操作,filter单例
//FilterConfig 类似于servletConfig 可以获得Filter的初始化参数信息
public void init(FilterConfig filterConfig)

3、filter 拦截顺序:
  web.xml中配置多个filter时构成filter链,他们的拦截顺序取决于<filter-mapping>的顺序

4、filter默认过滤的是 请求资源,如果是 其他方式的请求则过滤器无效 ,如果要使用就要在<filter-mapping>中添加<dispatcher>来指定过滤方式

  <dispatcher>REQUEST</dispatcher>

  <dispatcher>FORWARD</dispatcher>
  <dispatcher>INCLUDE</dispatcher>
  <dispatcher>ERROR</dispatcher>


Servlet Filter

标签:servlet filter

原文地址:http://12951189.blog.51cto.com/12941189/1940847

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!