Servlet_2_过滤器
使用过滤器,可以对请求数据进行处理后再交给servlet,也可以对servlet的响应数据进行处理后再交给浏览器。
一、基本知识
生命周期:
与服务器共存亡。
使用步骤:
1、编写过滤器类:实现 Filter 接口,重写 doFilter 方法,在方法内进行过滤操作。注意:不能在重写的方法内调用 父类的此方法,否则服务器会报错。
2、在web.xml中配置此过滤器的生效范围。
二、编写过滤器类
例子:
实现了在访问servlet之前先统一编码格式。
public class MainFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { //服务器启动的时候执行 System.out.println("服务器启动咯,过滤器开始工作!"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //对请求数据做处理,统一编码格式 servletRequest.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=utf-8"); System.out.println("啊,进行了一次过滤请求,好充实啊"); //放行,让它去找它的servlet服务处理 filterChain.doFilter(servletRequest,servletResponse); //对响应数据做处理 System.out.println("啊,进行了一次过滤响应,好充实啊"); } @Override public void destroy() { //服务器关闭的时候执行 System.out.println("服务器寄了,我也....."); } }
三、web.xml中配置
例子:
实现了过滤对所有servlet的请求。
<!--配置过滤器--> <filter> <filter-name>MainFilter</filter-name> <filter-class>com.lurenjia.filter.MainFilter</filter-class> </filter> <filter-mapping> <filter-name>MainFilter</filter-name> <!--生效的servlet: 全局:* 局部:*.do (表示以 .do 结尾的servlet) 指定:具体的servlet别名--> <url-pattern>/*</url-pattern> </filter-mapping>