在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",否则,乱码问题就会一直存在!