SpringMvc中间的请求参数注入获取方式是什么
阅读
很好奇Spring是怎么去获取请求的参数的。
@RequestMapping("/req")
public void req(HttpServletRequest request,HttpServletResponse response,String id){
System.out.println(id);
}
我在Spring的上一层做了一个Filter然后传了个包装类给SpringMvc,尝试替换了getParameterMap、getParameter的内容,但是SpringMVC拿到的内容依旧是替换之前的。
request.getParameterMap()、request.getParameter();、request.getReader()都不是,求解。
我chain传入的实际上是请求的包装类,RequestWrapper里面我重写了几个Spring可能调用的方法:
public String getParameter(String name) {
String value = super.getParameter(name);
if(map!=null&&map.get(name)!=null){
value = (String)map.get(name);
}
return value;
}
/**
* ParameterMap
*/
public Map<String, String[]> getParameterMap() {
Map<String, String[]> map = new HashMap<String, String[]>();
map.putAll(super.getParameterMap());
try {
List<String> ls = new ArrayList<String>();
for (String str : map.keySet()) {
String[] s = map.get(str);
for (String v : s) {
ls.add(new XssFilter().filter(v));
}
map.put(str, ls.toArray(new String[ls.size()]));
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
request.getParameter("xxx") 和 request.getParameterMap() 都是正常的获取到替换后的参数。
但是SpringMvc自动注入的参数弄死都不对,有点没招了。现在想做的就是想办法让SpringMvc拿到替换后的参数,而不是未过滤之前的
------解决方案--------------------
先说一句你的想法还是不错的! 接下来我也研究研究去
------解决方案--------------------
是单例还是prototype?
阅读
上一篇:怎么获得jsp动态生成的div的值(急) 下一篇:返回列表