是整个业务中单独抽取出来的一层,用来过滤请求以及响应中的一些信息,比如字符设置,可以通过过滤器统一完成
⌨
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>