过滤器Filter
过滤器Filter
Filter:过滤器,用来过滤网站的数据
按如下方式写servlet,会出现乱码问题
之前的做法是在之前加上:resp.setCharacterEncoding("utf-8");
当servlet很多的时候,这种方式太繁琐。所以就希望通过过滤器实现处理乱码。
-
登录验证...
1、 建Maven项目
1、建项目
2、添加web支持
3、在web.xml中导包
1 <dependencies> 2 <!--Servlet依赖--> 3 <dependency> 4 <groupId>javax.servlet</groupId> 5 <artifactId>servlet-api</artifactId> 6 <version>2.5</version> 7 </dependency> 8 <!--JSP依赖--> 9 <dependency> 10 <groupId>javax.servlet.jsp</groupId> 11 <artifactId>javax.servlet.jsp-api</artifactId> 12 <version>2.3.3</version> 13 </dependency> 14 <!--JSTL表达式的依赖--> 15 <dependency> 16 <groupId>javax.servlet.jsp.jstl</groupId> 17 <artifactId>jstl-api</artifactId> 18 <version>1.2</version> 19 </dependency> 20 <!--standard表达式的依赖--> 21 <dependency> 22 <groupId>taglibs</groupId> 23 <artifactId>standard</artifactId> 24 <version>1.1.2</version> 25 </dependency> 26 <!--连接数据库--> 27 <dependency> 28 <groupId>mysql</groupId> 29 <artifactId>mysql-connector-java</artifactId> 30 <version>5.1.47</version> 31 </dependency> 32 </dependencies>
2、 写过滤器
1 package com.wang.filter; 2 3 import javax.servlet.*; 4 import java.io.IOException; 5 6 public class CharacterEncodingFilter implements Filter { 7 8 //初始化 9 public void init(FilterConfig filterConfig) throws ServletException { 10 System.out.println("CharaterEncodingFilter初始化"); 11 } 12 13 //filterChain:链 14 /* 15 1.过滤中的所有代码,在过滤特定请求的时候都会执行 16 2.必须要让过滤器继续同行 17 doFilter(servletRequest,servletResponse) 18 */ 19 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { 20 servletRequest.setCharacterEncoding("UTF-8"); 21 servletResponse.setCharacterEncoding("UTF-8"); 22 servletResponse.setContentType("text/html;charset=UTF-8"); 23 24 System.out.println("CharaterEncodingFilter执行前"); 25 filterChain.doFilter(servletRequest, servletResponse);//让我们的请求继续走,如果不写,程序到这里就被拦截停止 26 System.out.println("CharaterEncodingFilter执行后"); 27 } 28 29 //销毁:web服务器关闭的时候,过滤器会销毁 30 public void destroy() { 31 System.out.println("CharaterEncodingFilter销毁"); 32 } 33 }
3、 注册和映射
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 <!--注册和映射--> 7 <servlet> 8 <servlet-name>ShowServlet</servlet-name> 9 <servlet-class>com.wang.servlet.ShowServlet</servlet-class> 10 </servlet> 11 <servlet-mapping> 12 <servlet-name>ShowServlet</servlet-name> 13 <url-pattern>/servlet</url-pattern> 14 </servlet-mapping> 15 16 17 <filter> 18 <filter-name>CharacterEncodingFilter</filter-name> 19 <filter-class>com.wang.filter.CharacterEncodingFilter</filter-class> 20 </filter> 21 <filter-mapping> 22 <filter-name>CharacterEncodingFilter</filter-name> 23 <!--只要是/servlet的任何请求都会经过这个过滤器--> 24 <url-pattern>/servlet/*</url-pattern> 25 </filter-mapping> 26 </web-app>
4、 运行