文章分类:Java编程
针对JBoss服务器,解决方案如下:
1 修改 jboss-4.2.0.GA/server/default/deploy/jboss-web.deployer/server.xml 文件,在<Connector port="8080" …/> 中加入URIEncoding="GBK"。此方法可以解决URL中文乱码的问题。
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
2 在web.xml文件中加入如下代码:
<filter>
<!-- 由于使用了Spring,不必另外写Filter -->
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- encoding属性设定为GBK,通过request.getParameter就可以取得正确的中文字符 -->
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- 匹配过滤器 -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在JBoss对HttpServletRequest的实现中,只有在初次使用request.getParameter时对request进行编码,如果在此之前没有设置encoding为GBK,那么以后设置就不会有效果了。也就是说在程序走到这个filter之前就调用了request.getParameter的话,此设置无效,当然也就会出现乱码了,最后的建议就是把encodingFilter mapping放在所有其它filter mapping的前面。
---------------------
作者:星汉浮云
来源:CSDN
原文:https://blog.csdn.net/anye529/article/details/6049723
版权声明:本文为博主原创文章,转载请附上博文链接!