struts2乱码解决方案

在使用struts2时,总会碰到乱码的问题,最根本的原因在于它是用过滤器来实现转发Action的,既然是过滤器,那么它就会有一条执行链。关键在于,在这条链里,乱码是在哪产生的。因此解决乱码问题主要集中在这条链里,之所以在Action里看到了乱码,是因为在这之前已经是乱码了,因此需要将文字在进入Action前进行编码。原则上说,如下方案一般能解决编码问题:
1.统一所有页面的编码:都为UTF-8.
2.在struts.xml里将i18n设置为UTF-8.
但是,如果我们有了自己的过滤器应该怎么处理?
自己写的过滤器应该放到Struts2过滤器的前面,这是官方文档说的,但如果放在前面,如果在自己写的过滤器里没有在request过来的内容进行编码,则传到Action过滤器里又是乱码了(虽然页面统一编码为UTF-8)。因此struts2.xml中的编码配置会失效。当然解决方法也可以在自己的filter里重新编码,但这又比较麻烦,因此还要使用spring给的编码filter:CharacterEncodingFilter.方法就是在所有过滤器之前使用。因此在web.xml中的配置顺序如下:
1.OpenSessionInViewFilter
2.ActionContextCleanUp
3.CharacterEncodingFilter
4.自己写的和其它的filter.
5.FilterDispatcher
除了上述配置之外,可以去掉struts.xml中的编码配置,并将所有页面统一编码就能解决乱码问题了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值