解决STRUTS的中文编码问题

时间:2022-09-22 18:48:26

今天做J2EE郁闷老半天,DEBUG的时候发现从FORM提交的内容变成乱码

以至整个SQL是无法执行的

于是狂找方法.终于被俺找到秘籍啦!!!

一.页面编码过滤器
1.开发EncodingFilter.java文件,继承自javax.servlet.Filter:
package bluemoon.crm.systemmanage.struts.Filter;

import java.io.*;
import javax.servlet.*;

public class EncodingFilter implements Filter
{ protected String encoding = null;
protected FilterConfig config;
public void init(FilterConfig filterConfig) throws ServletException
{
this.config = filterConfig;
//从web.xml配置文件中获取编码配置
this.encoding = filterConfig.getInitParameter("Encoding");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
if(request.getCharacterEncoding() == null)
{
String encode = getEncoding();
if(encode != null)
{
//设置request的编码方式
request.setCharacterEncoding(encode);
}
}
chain.doFilter(request,response);
}
public String getEncoding()
{
return encoding;
}
public void destroy()
{

}
} 2. 在web.xml文件中加入如下配置信息:
<!-- 页面请求编码过滤器 注意每个页面的pageEncoding="GB2312" -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>bluemoon.crm.systemmanage.struts.Filter.EncodingFilter</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<!-- 对全部的jsp页面有效,比较郁闷的是没有太多的配置方式 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--页面请求编码过滤器结束--> 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

其中必须为GB2312,试了下UTF-8,提交的内容会变成空白的= =

其他还有些满有用的过滤器

http://tj007-bo.javaeye.com/blog/27253