最近看了一下Struts2,自己也做了个小程序,结果中文提交表单是乱码,百度了好久,终于解决。 我的解决方案如下: 1.重写Struts2的核心过滤器: package com.aisino.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; public class MyStrutsFilter extends StrutsPrepareAndExecuteFilter { private String encoding = ""; @Override public void init(FilterConfig config) throws ServletException { super.init(config); encoding = config.getInitParameter("encoding"); if (encoding == null) encoding = "UTF-8"; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request.getCharacterEncoding() == null) { request.setCharacterEncoding(encoding); } response.setContentType("text/html; charset=" + encoding); super.doFilter(request, response, chain); } } 2.配置web.xml <!-- 配置Struts2 --> <filter> <filter-name>struts2</filter-name> <filter-class>com.aisino.filter.MyStrutsFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>