目录
1、过滤器的原理
2、如何创建过滤器
2.1在xml中注册
2.2使用@WebFilter注解
让一些合法的请求通过该过滤器,而拦截一些不符合要求的请求路径。当请求到达该过滤器时,可以为请求设置一些参数。
1、过滤器的原理
2、如何创建过滤器
2.1在xml中注册
(1)创建一个类并实现Filter接口并重写相应的方法
package filter;import javax.servlet.*;
import java.io.IOException;/*** @创建人 xiaoliu* @创建时间 2022/5/19* @描述*/
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("初始化过滤器,它只会被执行一次");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");System.out.println("过滤执行时,被调用的方法,这个方法是核心代码,每次请求时都会被执行。");}@Overridepublic void destroy() {System.out.println("过滤器被销毁时执行");}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--注册filter--><filter><filter-name>MyFilter</filter-name><filter-class>filter.MyFilter</filter-class></filter><!--配置请求路径与过滤器的关系,当你发送什么请求时会被该过滤器拦截--><filter-mapping><filter-name>MyFilter</filter-name><url-pattern>/*</url-pattern>//通配符:代表所有请求都会经过过滤器</filter-mapping>
</web-app>
2.2使用@WebFilter注解
如果使用了WebFilter注解,则无需在web.xml在注册该filter了。
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;/*** 如果使用了WebFilter注解,则无需在web.xml在注册该filter了。**/
@WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
public class EncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {req.setCharacterEncoding("utf-8");//设置请求的编码 接受到的请求参数不会乱码。resp.setCharacterEncoding("utf-8");//设置响应的编码,响应的数据不会出现乱码。//放行filterChain.doFilter(req,resp);}@Overridepublic void destroy() {}
}