说明
在过滤器中,可以设置不过滤的路径、文件
注意: 必须不过滤 .html ,否则会乱码
java代码
package top.malaoshi.web.filter;
import top.malaoshi.util.StringUtil;
import top.malaoshi.web.utils.StaticFileAndDirectory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(
urlPatterns = "/*",
initParams = @WebInitParam(
name="encoding",
value = "UTF-8"
)
)
public class CharEncodingFilter implements Filter {
private String charset = "UTF-8";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String encoding = filterConfig.getInitParameter("encoding");
if(!StringUtil.isEmpty(encoding)){
this.charset = encoding;
}
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain fc) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)servletRequest;
HttpServletResponse resp=(HttpServletResponse)servletResponse;
boolean b= StaticFileAndDirectory.is(req);
if(b) {
fc.doFilter(req,resp);
return;
}
req.setCharacterEncoding(charset);
resp.setCharacterEncoding(charset);
// 有 resp.setCharacterEncoding(charset) 代码,就不需要下面代码
// resp.setContentType("text/html; charset="+charset);
// 让过滤器继续往下执行,如果不加此代码,过滤器不再执行,导致页面显示空白
fc.doFilter(req,resp);
}
@Override
public void destroy() {
}
}
判断是否静态文件、静态目录
https://www.malaoshi.top/show_1IX71ZPTSax0.html