1、WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能
在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。 根据需要检查 HttpServletResponse ,也可以修改HttpServletResponse头和数据。
<filter-name>用于为过滤器指定一个名字</filter-name>
<filter-class>元素用于指定过滤器的完整的限定类名
<filter-mapping>元素用于设置一个 Filter 所负责拦截的资源
<filter-name>声明过的过滤器的名字
<url-pattern>设置 filter 所拦截的请求路径
<servlet-name>指定过滤器所拦截的Servlet名称
2、Filter功能:
在HttpServletRequest 到达 Servlet 之前,拦截客户的 HttpServletRequest 。 根据需要检查 HttpServletRequest ,也可以修改HttpServletRequest 头和数据。在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。 根据需要检查 HttpServletResponse ,也可以修改HttpServletResponse头和数据。
3、Filter开发
编写java类实现Filter接口,并实现其doFilter方法。<filter-name>用于为过滤器指定一个名字</filter-name>
<filter-class>元素用于指定过滤器的完整的限定类名
<filter-mapping>元素用于设置一个 Filter 所负责拦截的资源
<filter-name>声明过的过滤器的名字
<url-pattern>设置 filter 所拦截的请求路径
<servlet-name>指定过滤器所拦截的Servlet名称
<dispatcher>指定过滤器所拦截的资源被 Servlet 容器调用的方式
4、Filter_dispatcher
<dispatcher> 子元素可以设置的值及其意义:
REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。
INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。