一、web.xml
<filter>
<filter-name>CharacterEncoding</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>CharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CharacterEncodingFilter源码如下:
Servlet容器启动的时候,
调用该类setEncoding(String encoding)和setForceEncoding(boolean forceEncoding) 将值注入到这两个字段中。
@Override
protected void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String encoding = getEncoding();
if (encoding != null) {
if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {
request.setCharacterEncoding(encoding);
}
if (isForceResponseEncoding()) {
response.setCharacterEncoding(encoding);
}
}
filterChain.doFilter(request, response);
}
二、pom.xml
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/xunlu</path> <!--path 是访问应用的路径-->
<port>8082</port> <!--port 是tomcat 的端口号c-->
<uriEncoding>UTF-8</uriEncoding> <!--uriEncoding URL按UTF-8进行编码,这样就解决了中文参数乱码-->
</configuration>
</plugin>