Servlet 编写过滤器
1.Servlet过滤器是什么?
servlet过滤器是一种可以编程servlet的Java类,它可以实现处理请求和响应的功能。过滤器可以在资源被获取前对其操作(或者在动态输出中被启动)也可以在获取资源后,或者被执行后立即启动。甚至在资源请求处理的同时也可以使用过滤器(过滤器是一个简单的类,它实现javax.servlet.Filter接口)。
2.有哪些过滤器?
- 身份验证过滤器
- 数据压缩过滤器
- 加密过滤器
- 图像转换过滤器
- XSL/T 过滤器
- …
3.Servlet过滤器的方法
Filter接口中定义了三个方法,init(FilterConfig filterConfig)、destroy()和doFilter(HttpRequest request, HttpServletResponse response, FilterChain chain)
- init(FilterConfig filterConfig):init()方法里面我们可以通过FilterConfig访问到初始化参数和当前Filter部署的名称等信息。
- destroy():destroy()方法将在Filter被销毁之前调用。
- doFilter(HttpRequest request, HttpServletResponse response, FilterChain chain):doFilter()方法则是真正进行过滤处理的方法,在doFilter()方法内部,我们可以过滤请求的request和返回的response,同时我们还可以利用FilterChain把当前的request和response传递给下一个过滤器或Servlet进行处理。
4.Servlet过滤器的一个实例
package Controller;
public class ExampleFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String a = filterConfig.getInitParameter("a");
System.out.println("init......" + a);
}
@Override
public void destroy() {
System.out.println("destroy......");
}
@Override
public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("diFilter......");
chain.doFilter(request, response);
}
}
5.过滤器的映射配置
过滤器的映射配置可以利用过滤器映射到一个或多个Servlet和JSP文件中,也可以映射到任意的URL中
- JSP
<filter-mapping>
<filter-name>filterstation</filter-name>
<url-pattern>/jsp/filename.jsp</url-pattern>
</filter-mapping>
- Servlet
<filter-mapping>
<filter-name>FilterName</filter-name>
<url-pattern>/FilterName1</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>FilterName</filter-name>
<url-pattern>/FilterName2</url-pattern>
</filter-mapping>
- URL
<filter-mapping>
<filter-name>FilterName</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>