Struts2 是通过request.getParameterMap()来获取属性的,要重写这个方法
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的值应该就是过滤后的,为什么这里还是没过滤的呢?