A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柴乔军 中级黑马   /  2013-1-18 16:01  /  1355 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 柴乔军 于 2013-1-18 16:05 编辑

使用的是struts2.1.6版本,在struts2的配置文件中配置了
<constant name="struts.i18n.encoding" value="GBK"/>
没有效果,又在web.xml中配置了spring的字符过滤器,并放在了struts2过滤器之前,现在往数据库中保存数据时,
是不会乱码的,可以正常保存入中文数据,如下:
  1. <filter>
  2. <filter-name>CharacterEncodingFilter</filter-name>
  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>GBK</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>CharacterEncodingFilter</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

  13. <!-- session管理 -->
  14. <filter>
  15. <filter-name>OpenSessionInViewFilter</filter-name>
  16. <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  17. </filter>
  18. <filter-mapping>
  19. <filter-name>OpenSessionInViewFilter</filter-name>
  20. <url-pattern>/*</url-pattern>
  21. </filter-mapping>

  22. <!-- 配置Spring -->
  23. <listener>
  24. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  25. </listener>
  26. <context-param>
  27. <param-name>contextConfigLocation</param-name>
  28. <param-value>classpath:applicationContext-*.xml</param-value>
  29. </context-param>
  30. <listener>
  31. <listener-class>com.juchen.util.InitData</listener-class>
  32. </listener>


  33. <!-- 配置Struts -->
  34. <filter>
  35. <filter-name>struts</filter-name>
  36. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  37. </filter>
  38. <filter-mapping>
  39. <filter-name>struts</filter-name>
  40. <url-pattern>/*</url-pattern>
  41. </filter-mapping>
复制代码
可在页面上进行模糊查询,页面间传递模糊查询信息时却出现乱码,求高人解决!

当点下一页时就乱了。。。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

5 个回复

倒序浏览
我肯定配置文件没错,楼主 过滤器是怎么写的,能贴出代码看看吗?
回复 使用道具 举报
本帖最后由 王少雷 于 2013-1-18 19:15 编辑

public class LanguageFilter extends HttpServlet implements Filter {
        private static final long serialVersionUID = -7158070919202747452L;
        private FilterConfig fconfig;
        
        public void init(FilterConfig fconfig) throws ServletException {
                this.fconfig=fconfig;
        }
        public void doFilter(ServletRequest request, ServletResponse response,
                        FilterChain filterChain) throws IOException, ServletException {
                try
                {
                        String character=fconfig.getInitParameter("encoding");
                        if (character==null || "".equals(character)) character="utf-8";
                        request.setCharacterEncoding(character);
                        response.setCharacterEncoding(character);
                        filterChain.doFilter(request, response);
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
        }
}
这是我写的一个过滤器,你可以参考一下。配置文件里改成utf-8再试试。


回复 使用道具 举报
过滤器是用的Spring集成的,不是自己写的,过滤器能够肯定没有问题,保存到数据库里的中文数据都是正确的
回复 使用道具 举报
刚找到了一种解决方法,但是要改Tomcat的配置文件,在server.xml中做了修改
加入了URIEncoding="GBK" ,自己定义的过滤器也没有用
  1. <Connector port="80" protocol="HTTP/1.1"
  2.                connectionTimeout="20000"
  3.                redirectPort="8443"
  4.                           URIEncoding="GBK" />
复制代码
回复 使用道具 举报
URIEncoding只对Get方式传递的中文参数起作用,对于post提交的中文表单数据必须加过滤器设置编码方式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马