1. GetPostEncodingFilter过滤器类 public class GetPostEncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { //强转 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; //创建MyRequest对象 MyRequest myRequest = new MyRequest(request); //设置响应编码 response.setContentType("text/html;charset=UTF-8"); //放行请求 chain.doFilter(myRequest,response); } public void init(FilterConfig filterConfig) throws ServletException { } } 2.装饰类MyRequest class MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyRequest(HttpServletRequest request) { super(request); this.request = request; } /** * 重写父类不满足业务需求的方法 */ public String getParameter(String name) {//name就是"username" String value = null; /** * 获取请求的类型,例如:GET 或 POST */ String requestType = request.getMethod(); /** * 如果是GET的话 */ if("GET".equals(requestType)){ /** * 获取参数值,这个值可能为null或者可能为乱码 */ String temp = request.getParameter(name); /** * 判断 */ if(temp!=null && temp.trim().length()>0){ try { byte[] buf = temp.getBytes("ISO8859-1"); value = new String(buf,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new RuntimeException(e); } } /** * 如果是POST的话 */ }else if("POST".equals(requestType)){ try { request.setCharacterEncoding("UTF-8"); value = request.getParameter(name); } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new RuntimeException(e); } } return value; } }