现在的位置: 首页 > 综合 > 正文

有关我在SSHD(SSH三大框架和DWR框架)整合过程中出现的中文乱码问题的解决

2013年09月03日 ⁄ 综合 ⁄ 共 2222字 ⁄ 字号 评论关闭

     在SSHD进行整合的时候,我简单了编写了一个程序,但是,我进行表单数据提交的时候,却出现了中文乱码问题。我使用了几种方法,去进行乱码问题的解决,但都无功而返。所谓,当局者迷,旁观者清。我问了问身边的哥们,哦,原来是因为在表单数据提交的时候,少写了一个参数,这就是我在进行中文提交的时候出现乱码的代码:

<form action="user.do" method="post">

就是因为少写了method="post"这个参数,导致填写中文数据提交的时候会显示乱码。附上它的意思:method="post"

意思是当前的数据用post方法传递。
     为了让自己以后不犯同样的错误,特写篇日志,让自己能够记住,多多总结,错误的原因,以后出来就知道怎么处理了。至于,除此原因
以为的中文乱码问题的处理,可有如下几种处理方法:
1.我们可以通过编写一个过滤器,然后在web.xml中进行配置,代码如下:

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class EncodingFilter implements Filter{
	private FilterConfig filterConfig;
public void destroy(){
	
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)throws IOException,ServletException{
	String encoding=filterConfig.getInitParameter("encoding");
	request.setCharacterEncoding(encoding);
	response.setCharacterEncoding(encoding);
	response.setContentType("text/html,charset=UTF-8");
	chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig)throws ServletException{
	this.filterConfig=filterConfig;
}
}
在web.xml 中的配置如下:
<filter>
	<filter-name>encoding</filter-name>
	<filter-class>com.handson.control.filter.EncodingFilter</filter-class>
	<init-param>
	<param-name>encoding</param-name>
	<param-value>UTF-8</param-value>
	</init-param>
	</filter>
	<filter-mapping>
	<filter-name>encoding</filter-name>
	<url-pattern>/*</url-pattern>
	</filter-mapping>
写在配置文件中的最前面。
2.也可以写这样一个类:
import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.RequestProcessor;

public class NewProcessor extends RequestProcessor {
	protected boolean processPreprocess(HttpServletRequest arg0,
			HttpServletResponse arg1) {
		try {
			arg0.setCharacterEncoding("GBK");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return super.processPreprocess(arg0, arg1);

	}
}
然后在struts-config.xml中进行配置:
<controller>
		<set-property property="processorClass"
			value="com.struts.processor.NewProcessor" />
	</controller>
记住,把它写在message-resources的前面
     当然,我们也可以使用别的方法来解决中文乱码的问题,以上仅是我在处理无论是SSH整合还是SSHD整合时用到的处理中文乱码问题的解决方法。
不过有一点必须谨记,我再次提醒:那就是在表单里添写:method="post",否则,乱码问题就会一直存在!

抱歉!评论已关闭.