使用过滤器,可以对请求数据进行处理后再交给servlet,也可以对servlet的响应数据进行处理后再交给浏览器。
一、基本知识
声明周期:
与服务器共存亡。
使用步骤:
1、编写过滤器类:实现 Filter 接口,重写 doFilter 方法,在方法内进行过滤操作。
2、在web.xml中配置此过滤器的生效范围。
二、编写过滤器类
例子:
实现了在访问servlet之前先统一编码格式。
public class MainFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); //服务器启动的时候执行 } /** * 进行过滤操作 * @param servletRequest 请求数据 * @param servletResponse 响应数据 * @param filterChain * @throws IOException * @throws ServletException */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //对请求数据做处理,统一编码格式 servletRequest.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=utf-8"); //放行,让它去找它的servlet服务处理 filterChain.doFilter(servletRequest,servletResponse); //对响应数据做处理 } @Override public void destroy() { Filter.super.destroy(); //服务器关闭的时候执行 } }
三、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>
标签:Servlet,servletRequest,Filter,过滤器,servlet,public,MainFilter From: https://www.cnblogs.com/lurenjia-bky/p/17117058.html