处理乱码
- 通过设置请求,响应的编码格式
request.setCharacterEncoding("utf-8");//设置请求从前端接收过来的数据的编码格式
response.setCharacterEncoding("utf-8");//设置服务端编码格式
response.setContentType("text/html;charset=utf-8");//设置浏览器端编码格式
2.通过过滤器Filter
创建一个Filter类,去实现Filter接口
package com.wmx.Filter;
import javax.servlet.*;
import java.io.IOException;
//编码格式
public class Filter01 implements Filter {
String encoding = null;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//初始化的时候就将编码格式获取到
encoding = filterConfig.getInitParameter("encoding");
System.out.println("编码格式:" + encoding);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入过滤器,进行拦截并放行...");
if (encoding != null) {
servletRequest.setCharacterEncoding(encoding);//设置请求从前端接收过来的数据的编码格式
servletResponse.setCharacterEncoding(encoding);//设置服务端编码格式
servletResponse.setContentType("text/html;charset=" + encoding);//设置浏览器端编码格式
}
filterChain.doFilter(servletRequest, servletResponse);//过滤器进行放行
}
@Override
public void destroy() {
System.out.println("过滤器的销毁方法..");
}
}
注:操作完了之后一定要在web.xml文件中进行Filter的配置
如果在使用了过滤器的情况下,使用.css文件的话,css样式将不会起到任何作用,因为被过滤器过滤掉了,一般使用外部导入css样式的时候尽量不要使用过滤器,必要情况下,可以尝试这种操作:
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入过滤器,进行拦截并放行...");
HttpServletRequest Request = (HttpServletRequest) servletRequest;
String requestURI = Request.getRequestURI();
//如果文件后缀名为.css将直接放行,不进行过滤
if (requestURI.contains(".css")) {
filterChain.doFilter(servletRequest, servletResponse);
}
if (encoding != null) {
servletRequest.setCharacterEncoding(encoding);
servletResponse.setCharacterEncoding(encoding);
servletResponse.setContentType("text/html;charset=" + encoding);
}
filterChain.doFilter(servletRequest, servletResponse);
}