是整个业务中单独抽取出来的一层,用来过滤请求以及响应中的一些信息,比如字符设置,可以通过过滤器统一完成
⌨import javax.servlet.*; //要导入这个包//1. 过滤器中的所有代码在过滤特定请求时都会执行//2. 必须要让过滤器继续通行 filterChain.doFilter(servletRequest,servletResponse);public class SetCharacter implements Filter {//随着服务器启动一起执行public void init(FilterConfig filterConfig) throws ServletException {System.out.println("SetCharacter初始化");}public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html;charset=utf-8");System.out.println("SetCharacter执行前");filterChain.doFilter(servletRequest,servletResponse);//再次调用doFilter方法,如果不执行就会被销毁,因为可能有多种不同功能的过滤器来参与过滤System.out.println("SetCharacter执行后");}//随着服务器停止一起销毁/停止public void destroy() {System.out.println("SetCharacter销毁");}}
⌨配置web.xml<filter><filter-name>Filter1</filter-name><!-- 填写过滤器所在目录 --><filter-class>com.jack.Filter.SetCharacter</filter-class></filter><filter-mapping><filter-name>Filter1</filter-name><!-- 填写过滤器要过滤哪些路径 --><url-pattern>/url</url-pattern></filter-mapping>
