权当自己笔记。
- 在web.xml中配置
<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> - 方法1用的spring框架里的过滤器,也可以自己定义,引用。
public class CharacterEncodingFilter implements Filter {
private String characterEncoding; //编码方式配置在web.xml文件中
private boolean enabled; //是否启用此Filter,配置在web.xml中
@Override
public void destroy() {
characterEncoding = null;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (enabled || characterEncoding != null) {
request.setCharacterEncoding(characterEncoding);
response.setCharacterEncoding(characterEncoding);
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
characterEncoding = config.getInitParameter("characterEncoding");
enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());
}
}
其中将web.xml引用改为自己:包名.CharacterEncodingFilter
3 方法1、2还是无法解决,修改tomcat配置文件
找到tomcat所在路径,->config ->server.xml中将
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
加入: useBodyEncodingForURI="true"