Filter介绍
Filter顾名思义就是一个过滤器,在客户端向服务端发送请求时,某些过滤器拦截,进行一定处理之后请求才能到达服务器,或者直接就不处理该请求,只是进行拦截
post请求以及响应中文乱码问题
import javax.servlet.*;
import java.io.IOException;
/**
* @author Nian
* @Date 2022/9/22 14:23
* @purpose
* @Note
*/
public class EncodeFilter implements Filter {
private String encode= "utf-8";
private String contenttype = "text/html";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String encode = filterConfig.getInitParameter("encode");
String contenttype = filterConfig.getInitParameter("contenttype");
System.out.println("encode:"+encode);
//当配置中没有encode配置时,获取的值是null,当配置中写了encode,
// 但是值为空时(value中没有写东西),返回的值是空字符串
if(encode != null && !"".equals(encode)){
this.encode = encode;
}
if(contenttype != null && !"".equals(contenttype)){
this.contenttype = contenttype;
}
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding(encode);
servletResponse.setContentType(contenttype);
servletResponse.setCharacterEncoding(encode);
//将当前过滤器加入到过滤链,不加程序会在这里停止
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
Filter.super.destroy();
}
}