Struts2 Filter 和 HttpServletRequestWrapper出现的问题

哎哎哎哎啊 发布于 2013/05/03 15:25
阅读 3K+
收藏 0

 Struts2 的Action中定义了一个属性:

public Class LoginAction {

    private String redirectionURL;

}

现在定义了一个XSSFilter用来过滤掉url参数中的特殊信息(这个Filter配置在Struts2之前),通过一个XSSRequestWrapper包装器对request对象进行包装,在浏览器中输入:

在filter这样测试:

输出的内容是这样的:

这个说明过滤是成功的了,但是在action中进行这样测试,

输出却是这样的:

action中redirectionURL,使用的还是为包装前的request的属性,这是为什么呢?我filter是定义在Struts2之前嘛,在Struts2通过注入方式将request对象的参数redirectionURL注入到LoginAction的redirectionURL之前,这个request对象应该是我包装过的对象嘛,包装过的话参数redirectionURL的值应该就是过滤后的,为什么这里还是没过滤的呢?


加载中
1
哎哎哎哎啊
哎哎哎哎啊

引用来自“szkiti”的答案

请问楼主是怎么解决的,我也遇到此问题

Struts2 是通过request.getParameterMap()来获取属性的,要重写这个方法
林中有渔
太棒了。我也是重写了getParameterMap()方法就可以了
NCThinker
NCThinker
谢谢,已解决。原来是重写getParameterMap()这个方法,最开始一直在重写getParameter()这个方法,结果一直没有起作用。
0
NCThinker
NCThinker

请问楼主是怎么解决的,我也遇到此问题

0
0
MGL_TECH
MGL_TECH
<script>alert(1)</script>
0
菜鸟林
菜鸟林
我重写了没用啊, 你们是怎么重写的?
0
xajeja
xajeja

不重写getParameterMap()的话,重写的getParameterValues()不会被调用

返回顶部
顶部