– 如果你有/*
过滤器,存在代码// 处理响应乱码 response.setContentType("text/html;charset=utf-8");
建议屏蔽一下此过滤器,再次运行
可以将编码过滤器改到web.xml中
web.xml
<!-- 设置参数编码UTF-8 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
附带过滤器
package com.gzjc.lotteryol.filter;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.junit.Test;
/**
* 系统名:LotteryOff
* <p>
* 类概述: 解决全站中文乱码问题,处理所有的请求
* <p>
* 著作权:COPYRIGHT (C) 2017 SNM INFORMATION SYSTEMS CORPORATION ALL RIGHTS
* RESERVED.
*
* @author JIANG LIN CHEN
* @date 2019-12-13 11:04
* <p>
* Servlet Filter implementation class CharchaterFilter
*/
// 四.过滤器配置详解
// 四.1 拦截路径配置 :
//@WebFilter("/index.jsp")
//@WebFilter("*.jsp") // 访问所有后缀名为jsp资源中,过滤器才会执行
//@WebFilter("/user/*") // 访问所有/user下的控制器
//@WebFilter("/*")
// 四.2 拦截方式配置 :
/*
* 资源被访问的方式, 设置 dispatcherTypes 属性
*
* @WebFilter(value = "/*", dispatcherTypes = DispatcherType.REQUEST)
*
* 1. REQUEST : 默认值,浏览器直接请求资源
*
* @WebFilter(value = "/*", dispatcherTypes = DispatcherType.REQUEST)
*
* 2. FORWARD : 转发访问资源
*
* @WebFilter(value = "/*", dispatcherTypes = DispatcherType.FORWARD)
*
* 1+2 == @WebFilter(value = "/*", dispatcherTypes =
* {DispatcherType.REQUEST,DispatcherType.FORWARD})
*
* 3. INCLUDE : 包含访问资源
*
* 4. ERROR : 错误跳转资源
*
* 5. ASYNC : 异步访问资源
*
*/
@WebFilter(value = "/*", dispatcherTypes = DispatcherType.REQUEST)
public class CharchaterFilter implements Filter {
private static Logger log = Logger.getLogger(CharchaterFilter.class);
// 跳转的错误信息页面
// private static final String ERRORPAGE = "error.jsp";
private static final String PROPERTIES_NAME = "../LotteryOff/lotteryoff/conf/error.properties";
/**
* Default constructor.
*/
public CharchaterFilter() {
// TODO Auto-generated constructor stub
}
// 三.过滤器生命周期的方法 init->doFilter->destroy
/**
* 在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次,用于加载资源
*
* @see Filter#init(FilterConfig)
*/
@Override
public void init(FilterConfig fConfig) throws ServletException {
// System.out.println("CharchaterFilter初始化...");
// 初始化错误页面
// System.out.println("读取配置的错误提示页面路径");
log.info("ex filter init .......");
}
/**
* 每一次请求被拦截资源时,会执行,执行多次
*
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
@Override
public void doFilter(ServletRequest req, ServletResponse rep, FilterChain chain)
throws IOException, ServletException {
// place your code here
// System.out.println("测试过滤器");
// System.out.println("二.过滤器执行流程: 1、执行过滤器");
// 将父接口转为子接口
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) rep;
// 获取请求方法
String method = request.getMethod();
// 解决post请求中文数据乱码问题
if ("POST".equalsIgnoreCase(method)) {
request.setCharacterEncoding("utf-8");
}
// 处理响应乱码
response.setContentType("text/html;charset=utf-8");
// pass the request along the filter chain
// System.out.println("过滤器执行流程: 2、执行放行后的请求资源");
// 放行
// try {
chain.doFilter(request, response);
// } catch (Exception e) {
// // 发生异常,保存异常栈
// request.setAttribute("exception", e);// 存储异常信息
// request.getRequestDispatcher(ERRORPAGE).forward(request, response);// 跳转到信息提示页面!!
// }
// System.out.println("过滤器执行流程: 3、回来执行过滤器放行代码下边的代码");
//
// System.out.println("五.1 过滤器执行过程: [过滤器链(多个过滤器)]___过滤器1 ->过滤器2->资源执行->过滤器2->过滤器1(走过去-(小心被打劫)->拿个棒棒糖->原路返回)");
// System.out.println("五.2 过滤器的先后顺序问题: 注解配置 : 按照类名的字符串比较规则比较,值小的写执行");
}
/**
* 在服务器关闭后,Filter对象被销毁,如果服务器是正常关闭,则会执行destroy方法,只执行一次
*
* @see Filter#destroy()
*/
@Override
public void destroy() {
// System.out.println("CharchaterFilter销毁...");
log.info("ex filter destroy .......");
}
}
/**
* web.xml配置
* 设置参数编码UTF-8
* <filter>
* <filter-name>encodingFilter</filter-name>
* <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
* <init-param>
* <param-name>encoding</param-name>
* <param-value>UTF-8</param-value>
* </init-param>
* <init-param>
* <param-name>forceEncoding</param-name>
* <param-value>true</param-value>
* </init-param>
* </filter>
* <filter-mapping>
* <filter-name>encodingFilter</filter-name>
* <url-pattern>/*</url-pattern>
* </filter-mapping>
*/