1.使用servlet的过程中,需要多次处理请求过程中出现的中文乱码,为了提高效率,使用过滤器将其一次性拦截
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter("/*")
public class CharchaterFilter implements Filter {
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
//将父接口转为子接口(需要引用Http请求的相关方法)
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//获取请求方法
String method = request.getMethod();
//若是post方法解决请求乱码
if(method.equalsIgnoreCase("post")){
request.setCharacterEncoding("utf-8");
}
//处理响应乱码
response.setContentType("text/html;charset=utf-8");
//放行
filterChain.doFilter(request,response);
}
//销毁
@Override
public void destroy() {
}
}
2.请注意(举个栗子)
jsp文件中,如果红线所示部分是,css样式以及js效果会被过滤
只需要删除html,变为<!Doctype>即可解决