问题: JSP中提交中文表单时,后台ActionForm提取中文字段时内容为乱码。
解决方法:写一个编码过滤器在表单中的内容转换成ActionForm中的字段之前进行编码转换。
1.过滤器
package com.galaxy.sp.web.filter;
import java.io.*;
import javax.servlet.*;
public class RequestEncodingFilter implements Filter
{
String charset = null;
public void init(FilterConfig config) throws ServletException
{
charset = config.getInitParameter("charset");
if (charset == null) charset = "gb2312";
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException,ServletException
{
request.setCharacterEncoding(charset);
chain.doFilter(request, response);
}
public void destroy()
{
}
}
2.修改web.xml,增加下面的内容
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.galaxy.sp.web.filter.RequestEncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
结果: 中文能正常处理了。