介绍
Filter用于拦截请求与响应进行设置。
Filter会双向拦截,在chain.doFilter()前拦截浏览器访问目标,在chain.doFilter()后拦截服务器返回响应
方法
void doFilter( ServletRequest request , ServletResponse response , FilterChain chain )
参数:
ServletRequest request:拦截的请求对象
ServletResponse response:拦截的响应对象
FilterChain chain:fileter自身对象,调用doFilter()方法让请求通过
返回值:void
返回值意义:无
作用:拦截访问前和处理后的阶段。在这两个阶段作设置。 在chain.doFilter()前是访问阶段,chain.doFilter()后是处理阶段。
标签
Filter需要在Web.xml作映射。配置拦截的Serfvlet和拦截类型
Filter映射
<filter>
<filter-name>FRegister</filter-name>
<filter-class>filter.FileterR</filter-class>
</filter>
<filter-mapping>
<filter-name>FRegister</filter-name>
<url-pattern>/fregister</url-pattern>
</filter-mapping>
<url-pattern> 拦截目标 (/* 表示全部,/文件夹/*:指向特定Servlet集合,/Servlet映射:具体某Servlet)</url-pattern>
<filter-mapping> 内可用<dispatcher>( REQUEST or FORWARD or INCLUDE or ERROR ) </dispatcher> 拦截不同方法的请求。默认REQUEST。forward不会被拦截
使用
public class FileterR implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
chain.doFilter(req, resp);
}
}
Filter链
多个Filter可以针对同一个Servlet组成Filter链。按住Web.xml定义的顺序拦截。