`
tjmzgn
  • 浏览: 159773 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2.1.6 中文乱码问题

阅读更多
Struts2.1.6 StrutsPrepareAndExecuteFilter bug

在用strust2.1.6做小项目,结果居然发现在post数据的时候,居然有乱码。
自认为对编码也算了解,立马check应用的content type,struts2配置的struts.locale,struts.i18n.encoding,没错,都是统一使用了UTF-8。
那是为什么呢?没办法,只能debug应用,结果发现:

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        try {
            prepare.createActionContext(request, response);            prepare.assignDispatcherToThread();
            prepare.setEncodingAndLocale(request, response);
            request = prepare.wrapRequest(request);
            ActionMapping mapping = prepare.findActionMapping(request, response);
            if (mapping == null) {
                boolean handled = execute.executeStaticResourceRequest(request, response);
                if (!handled) {
                    chain.doFilter(request, response);
                }
            } else {
                execute.executeAction(request, response, mapping);
            }
        } finally {
            prepare.cleanupRequest(request);
        }
    }


1) prepare.createActionContext(request, response);
2) prepare.setEncodingAndLocale(request, response);
setEncodingAndLocale居然在createActionContext之后,在没有设置正确的encoding之前,解析request中的parameters,能成吗?

无奈之下,只能暂时用CharacterEncodingFilter这个filter设置request的character,猥琐地临时解决问题。

今天打算向Struts提交bug的时候,发现该bug在2.1.7版本中被修复,详见:https://issues.apache.org/struts/browse/WW-3075%3Bjsessionid=3EAC5B44A949CA77B4471AA0D45754E9?page=com.atlassian.jira.plugin.ext.subversion%3Asubversion-commits-tabpanel

哎,在使用2.1.7之前,先用CharacterEncodingFilter吧 :)
分享到:
评论

相关推荐

    struts 2.1.6 中文乱码处理

    本篇文章将详细介绍如何在Struts 2.1.6版本中有效地解决中文乱码问题,并通过实际测试验证了方法的有效性,无需升级至更高的2.18版本。 #### 解决方案:自定义编码过滤器 为了解决中文乱码问题,我们可以通过...

    struts2.1.6解决乱码 补充

    ### Struts2.1.6解决乱码问题详解 在Web开发中,字符编码问题一直是个头疼的问题,尤其是在处理中文等多字节字符时。Struts2作为一个流行的Java Web框架,同样面临着这样的挑战。本文将深入探讨如何在Struts2.1.6...

    解决Struts2.1.6中文问题

    解决Struts2.1.6中文乱码问题,在用STRUTS2.1.6时,中文问题不好解决,写拦截器是不管用,对不熟悉Spring的人来说用SPRING来转化也不容易进行,经过自己的学习发现,其实在有中文提交的时候,服务器接收的是有规律的...

    解决struts2.1.6+spring+hibernate 中文乱码

    ### 解决Struts2.1.6 + Spring + Hibernate 中文乱码问题 在Web开发过程中,特别是使用Java EE框架时,字符编码问题一直是开发者关注的重点之一。对于使用Struts2.1.6、Spring以及Hibernate这三个框架组合的项目而...

    Struts2中文乱码问题最终解决方案

    但在Struts 2.1.6版本中,这个配置对POST请求的中文乱码问题无效,这是一个已知的bug。升级到2.1.8.1或更高版本可以修复这个问题,因为官方已经改进了过滤器处理字符编码的方式。 2. **POST乱码问题**: POST请求...

    struts2中文乱码问题

    ### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的问题。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍几种解决Struts2中文乱码问题的方法。 ####...

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题,显示9、10、11、12月份时出现乱码,本包修改了该bug

    strust2 datetime picker

    原因:struts2.1.6 把struts2.0中的和ajax相关的,如datetimepicker,tree,treenode 都移动到了dojo中了 解决: 解决方法: 在jsp文件中加入<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>和<sx:head/> 本...

    Struts2学习笔记2012

    在使用Struts2_2.1.6版本时可能会遇到中文乱码的问题。解决方法包括设置正确的字符编码和在web.xml中配置过滤器以处理输入流的字符编码。 #### 五、Struts模块包含 Struts支持模块化开发,允许将应用划分为多个...

    struts2框架lib包,针对iReport-3.7.5的库文件,支持日语pdf excel

    在这个压缩包中,包含的是针对Struts2.1.6版本适配的iReport-3.7.5库文件,这些文件对于生成包含日语内容的PDF和Excel报告至关重要。 iReport是JasperReports的可视化设计工具,用于创建复杂的报表和图表。版本...

    SSH三大框架整合集成.pdf

    此外,还应配置字符编码过滤器`CharacterEncodingFilter`,统一设定请求和响应的编码,避免乱码问题。 6. **事务管理**:在实际应用中,通常会使用Spring的`PlatformTransactionManager`接口和相关的事务注解,如`@...

Global site tag (gtag.js) - Google Analytics