SpringMvc当中的请求参数注入获取方式是什么?

jdbcx 2013-12-23 10:22:13
很好奇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拿到替换后的参数,而不是未过滤之前的
...全文
424 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
haiyangyiba 2015-06-04
  • 打赏
  • 举报
回复
借楼请教一下,spring4.0mvc中的Controller中参数的过滤如何实现?
jdbcx 2013-12-24
  • 打赏
  • 举报
回复
引用 2 楼 fangmingshijie 的回复:
是单例还是prototype?
问题解决了,Spring是调用的public String[] getParameterValues(String name);
  • 打赏
  • 举报
回复
是单例还是prototype?
dyflovexlp 2013-12-23
  • 打赏
  • 举报
回复
先说一句你的想法还是不错的! 接下来我也研究研究去

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧