过滤器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>
View Code

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 }
View Code

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>
View Code

4、 运行

 

posted @ 2020-04-01 23:01  WZ_BeiHang  阅读(127)  评论(0编辑  收藏  举报