`
t8500071
  • 浏览: 112914 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

webwork+cas认证在表单提交后乱码问题解决心得

阅读更多
给一个webwork项目加上cas认证的时候遇到了个常见的问题.乱码!
具体表现是:
1.   表单提交之后,就会出现乱码,数据到action里面的时候已经是乱码,存入数据库也是乱码,
最后在页面显示的时候,当然也是乱码!
2.   对于本来在数据库里面不是乱码的数据,在页面上显示一切正常.
3.   对于url 问号后面的参数,因为我有对这些参数做了编码处理,所以这种类型的参数没有乱码现象.

解决过程以及思路:
1.   由于该项目开始编码的时候,就已经统一了开发环境, 编辑器的编码也都统一为gb2312,页面编码也统一为gb2312;
但是后来新加进了两位开发人员,大家由于比较忙,没有跟新来人员约定好编辑器编码模式. 起初以为是因为编辑器编码不同,导致出现乱码问题,所以去查看了myeclipse对jsp的编码,发现没有任何问题.

2.   由于该项目采用框架是 webwork2.1.6 + hibernate2 ,表单提交的时候用的是model-driven模式,页面上的form提交方式为"post",表单提交后,封装成vo对象时出现了乱码.
这时就怀疑是webwork的 webwork.properties文件的区域和编码设置可能和编码过滤器encodingFilter冲突了,
因为webwork2.1.6 的编码过滤器对于webwork的自动封装不起作用,所以把编码过滤器注释掉,再次运行,结果问题依旧.
于是又反过来,把webwork.properties的编码设置注释掉,甚至webwork.properties的编码设置和编码过滤器同时注释掉,都不能解决问题..但并没有引发其他编码问题,问题依旧是表单提交,webwork把页面数据封装成数据实体的时候出现乱码.

3.   于是上网搜了下资料,无非是修改webwork.properties文件,编码过滤器, 还有就是在tomcat的server.xml文件里面加上URIEncoding="gb2312" 之类的,几乎所有方法都试过,问题还是不能解决.
再也想不出别的方法了,于是决定自己写一个ServletDispatcher,在这里面设置request编码,结果还是问题依旧.(这个方法在事后想了下,发现其实这里做的和编码过滤器做的是一样的,多此一举了)

4.   然后抱着尝试的心态在某个form页面的method改为"get" , 提交后竟然没乱码了..这时候傻眼了,这样得改好多jsp文件..而且get方式没怎么用过,以前的参数传递不知道会不会出问题.
虽然看似问题好像解决了,但是糊里糊涂的,心里总是不踏实,而且如果真得靠这个方法解决的话..也很不甘心.

5.   最后在无意中看了下 web.xml 文件 , 这时候发现问题了, 原来 cas的认证过滤器比字符过滤器先加载了:
<!--cas认证:-->
    <filter-mapping>
        <filter-name>CASFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
<!--字符过滤器-->
<filter-mapping>
  <filter-name>encoding</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

根据servlet2.3规范filter执行是按照web.xml配置的filter-mapping先后顺序进行执行,所以上面的配置会导致url请求先进行CASFilter的过滤器处理,这时候没有做编码处理,已经是乱码,到下面的encodingFilter处理时已经时乱码,再做编码处理已经没有用处。

总结:
      因为这项目开发进度紧,每次从cvs更新的更新量都挺大,具体更新了些什么内容也没空去看,都只知道加了cas认证,但没有仔细看更新了哪些文件,所以一直忽略了web.xml文件.
大家以后做项目的时候,如果要加cas认证或者是别的安全检验的时候,记得留意这个filter的加载顺序呀!


最后:
感谢周进大虾~~~~~~~~
分享到:
评论
3 楼 maysnow 2008-12-11  
楼主好文章,我也出现了一模一样的情况。多谢楼主

2 楼 EXvision 2008-11-17  
学习了,还真是没想到是filter顺序的问题。
谢谢楼主,以后遇到同类型问题,就有个参照了~
1 楼 java菜菜鸟 2008-07-30  
很好的一个分享.
看来以后还是得编码处理的filter放在配置文件的最前面保险点

相关推荐

    Webwork+spring+hibernate集成实例

    在Webwork+Spring+Hibernate集成中,Spring通常作为整体架构的胶水,负责各组件的连接和协调。它可以管理Webwork的Action,通过依赖注入提供所需的Service和DAO。同时,Spring可以配置Hibernate SessionFactory,...

    webwork+spring+hibernate 开发资料

    在提供的文档“webwork+spring+hibernate架构.doc”中,可能详细阐述了这三者如何协同工作,包括配置文件设置、依赖注入的使用、事务管理策略以及具体实例的开发步骤。而“webwork.doc”则可能专门介绍了WebWork框架...

    webwork+spring+ibatis很适合初学者的实例

    "webwork+spring+ibatis" 的实例通常会展示如何将这三个框架集成到一个完整的Web项目中。这个实例可能包含以下部分: 1. **环境配置**:安装和配置Java开发环境,如JDK,以及相关的开发工具,如IDEA或Eclipse。 2. ...

    webwork+spring+hibernate+freemarker (A)demo_project

    本源码实例只供学习。。 请一并下载webwork+spring+hibernate+freemarker (A)demo_lib 配合才能使用(此为项目的lib包。。) 请打开mark.txt参考操作

    Spring+Webwork+iBatis 组合实例

    ### Spring+WebWork+iBatis 组合实例详解 #### 一、概述 在Java Web开发领域,Spring、WebWork与iBatis是三个非常重要的框架。本篇将结合具体的配置文件来详细介绍这三个框架是如何协同工作的,以及它们各自在项目...

    Spring + hibernate + webwork + freemarker 整合配置

    3. **WebWork** 提供了强大的MVC结构,支持动作和结果的管理,以及表单验证和错误处理。 4. **FreeMarker** 作为模板引擎,允许开发者分离视图和逻辑,使前端代码更清晰、可维护。 整合这些框架可以创建出一个松...

    webwork+spring+hibernate

    在IT行业中,Web开发是一个广泛且重要的领域,而"webwork+spring+hibernate"是一种常见的技术栈,用于构建动态、数据驱动的Web应用程序。这个技术组合涉及到三个核心组件:WebWork(一种MVC框架)、Spring(一个全面...

    webwork+Spring+Ibatis

    webwork+Spring+ibatis 此为webwork+Spring+ibatis+freemarker 源码实例 因为包大,只好分开。。请一并下载webwork+Spring+ibatis_lib放入些实例中,,才能运行! 解压后,请参考mark.txt文件操作,即可!

    webwork+spring+hibernate入门实例

    《webwork+spring+hibernate入门实例》 在当今的Web开发领域,Spring、Hibernate和WebWork(现称为Struts 2)是三个极为重要的框架。本实例将引导初学者深入理解这三大框架的集成与应用,以及如何与MySQL数据库进行...

    webwork+spring整合例子 内带使用说明 以及webwork文档(中文)

    在这个“webwork+spring整合例子”中,很可能是提供了一个实际的项目示例,演示了如何配置和使用这两个框架的结合。这通常包括以下步骤: 1. 配置Spring的ApplicationContext,定义Bean并声明它们之间的依赖。 2. 在...

    webwork+spring+hibernate网络购物系统

    【标题】:“WebWork+Spring+Hibernate网络购物系统”是一个基于特定技术栈的电商项目实现。这个系统利用了WebWork、Spring和Hibernate这三个关键的技术框架,构建了一个完整的、功能丰富的在线购物平台。WebWork...

    webwork+ibatis完整实例

    WebWork+iBatis是一个经典的Java Web开发框架组合,它们各自在不同的层面上为应用程序提供了强大的支持。WebWork作为MVC(Model-View-Controller)框架,负责处理用户请求,管理应用逻辑,而iBatis则是一个持久层...

    WebWork+Spring+Hibernate整合

    WebWork+Spring+Hibernate整合

    个关于freemarker+webwork+spring+ibatis的demo文档

    个关于freemarker+webwork+spring+ibatis的demo文档

    webwork+spring+hibernate整合开发网络书城 第5讲

    webwork+spring+hibernate整合开发网络书城 第5讲

    WebWork+Spring.+Hibernate整合开发网络书城代码

    【WebWork+Spring+Hibernate整合开发】是一种常见的Java Web应用程序架构模式,用于构建高效、可扩展的业务系统。WebWork是Action-based MVC框架,Spring是一个全面的企业级应用框架,而Hibernate则是流行的对象关系...

    WebWork+Spring+Hibernate整合开发网络书城+第一讲完整版

    在WebWork+Spring+Hibernate的组合中,Hibernate负责处理数据库的读写操作,Spring则管理和协调这些操作,确保事务的一致性。 在"A064]WebWork+Spring+Hibernate整合开发网络书城+第一讲[1]"这个压缩包中,可能包含...

    spring+webwork+ibatis

    "Spring+WebWork+Ibatis"是一个经典的组合,它将Spring的强大功能、WebWork的轻量级MVC架构以及Ibatis的灵活持久层方案融合在一起,提供了高效、可维护的解决方案。本文将深入探讨这三个组件的整合,帮助开发者理解...

    WebWork+Spring+Hibernate整合开发

    WebWork+Spring+Hibernate整合开发

Global site tag (gtag.js) - Google Analytics