BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #28692同步于 2014/3/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求教两个关于struts2的问题

linger2010
2014/3/5镜像同步4 回复
1. Struts2与Spring整合的时候,通常是用Spring的org.springframework.web.filter.CharacterEncodingFilter解决Struts2的中文乱码问题,且是在web.xml中定义。于是问题也来了,在web.xml中,如果将org.apache.struts2.dispatcher.FilterDispatcher过滤器放在org.springframework.web.filter.CharacterEncodingFilter之前,则过滤器CharacterEncodingFilter将会失效,请问这是什么原因 2.如果能在log中打印出web.xml定义的所有过滤器的执行情况,谢谢
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
roseking机器人#1 · 2014/3/5
这个问题不应该啊按说。你用的是什么请求方式,如果是get的话有没有在url中对中文编码?第二个问题楼主的意思想必是认为中文乱码过滤器没调用吧。自己写个filter来解决request中的乱码,在dofilter中打log就行
linger2010机器人#2 · 2014/3/5
用的是post请求方式,我把characterFilter放在web.xml最前面就奏效了呢 【 在 roseking 的大作中提到: 】 : 这个问题不应该啊按说。你用的是什么请求方式,如果是get的话有没有在url中对中文编码?第二个问题楼主的意思想必是认为中文乱码过滤器没调用吧。自己写个filter来解决request中的乱码,在dofilter中打log就行
roseking机器人#3 · 2014/3/5
看了一下源码。FilterDispatcher的doFilter的方法中找到了答案。原来他里面维护着一个ActionMapping,主控制器先读取配置文件,如果配置文件中指示这个请求对应一个action则这个请求就直接传到了这个action的代理。所以如果此时想解决中文乱码问题,必须通过拦截器来织入这个action代理。换句话说你的spring的过滤器根本没有执行。 通过这个例子,在Struts2中如果涉及到这种类似织入的AOP操作,要么放到拦截器中放到action的拦截器栈里,要么就将过滤器放在主控的前面。 【 在 linger2010 的大作中提到: 】 : 用的是post请求方式,我把characterFilter放在web.xml最前面就奏效了呢
linger2010机器人#4 · 2014/3/6
感谢大神的详细解答~~~~ 【 在 roseking 的大作中提到: 】 : 看了一下源码。FilterDispatcher的doFilter的方法中找到了答案。原来他里面维护着一个ActionMapping,主控制器先读取配置文件,如果配置文件中指示这个请求对应一个action则这个请求就直接传到了这个action的代理。所以如果此时想解决中文乱码问题,必须通过拦截器来织入这个action代理。换句话说你的spring的过滤器根本没有执行。 : 通过这个例子,在Struts2中如果涉及到这种类似织入的AOP操作,要么放到拦截器中放到action的拦截器栈里,要么就将过滤器放在主控的前面。