1.实现Filter接口,主要重写doFilter方法
1 public class CharacterEncodingFilter implements Filter { 2 @Override 3 public void init(FilterConfig filterConfig) throws ServletException { 4 5 } 6 7 @Override 8 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 9 request.setCharacterEncoding("utf-8"); 10 response.setCharacterEncoding("utf-8"); 11 response.setContentType("text/html;charset=UTF-8"); 12 System.out.println("CharacterEncodingFilter will execute"); 13 chain.doFilter(request,response); 14 System.out.println("CharacterEncodingFilter executed"); 15 } 16 17 @Override 18 public void destroy() { 19 20 System.out.println("CharacterEncodingFilter destroyed"); 21 22 } 23 }
2.web.xml配置文件,任何servlet的页面都会被过滤
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 5 version="4.0"> 6 <servlet> 7 <servlet-name>ShowServlet</servlet-name> 8 <servlet-class>com.ming.servlet.ShowServlet</servlet-class> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>ShowServlet</servlet-name> 12 <url-pattern>/servlet/show</url-pattern> 13 </servlet-mapping> 14 <servlet-mapping> 15 <servlet-name>ShowServlet</servlet-name> 16 <url-pattern>/show</url-pattern> 17 </servlet-mapping> 18 <filter> 19 <filter-name>CharacterEncodingFilter</filter-name> 20 <filter-class>com.ming.filter.CharacterEncodingFilter</filter-class> 21 </filter> 22 23 <filter-mapping> 24 <filter-name>CharacterEncodingFilter</filter-name> 25 <!--过滤servlet下的任何请求--> 26 <url-pattern>/servlet/*</url-pattern> 27 </filter-mapping> 28 </web-app>
服务器开启,过滤器一同开启
服务器关闭,过滤器销毁