过滤器Filter

Posted wz-beihang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤器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、 运行技术图片

 

以上是关于过滤器Filter的主要内容,如果未能解决你的问题,请参考以下文章

基于内部片段的graphql过滤器(gatsbyJS)

使用Logstash filter grok过滤日志文件

servlet,过滤器,监听器,拦截器的区别

vue实现简单的过滤器

Scapy BPF 过滤器不工作

在着色器中访问时,OpenGL如何决定使用MAG_FILTER和MIN_Filter?