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拿到替换后的参数,而不是未过滤之前的
...全文
419 4 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
先说一句你的想法还是不错的! 接下来我也研究研究去
1. spring杂谈[原创] 1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 1.2 我对AOP的理解 1.3 Spring开闭原则的表现-BeanPostProcessor的扩展点-1 1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 1.6 »Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) 1.7 Spring开闭原则的表现-BeanPostProcessor扩展点-2 1.8 Spring3.1 对Bean Validation规范的新支持(方法级别验证) 1.9 Spring对事务管理的支持的发展历程(基础篇) 1.10 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。 1.11 在spring中获取代理对象代理的目标对象工具类 1.12 如何为spring代理类设置属性值 1.13 我对SpringDAO层支持的总结 1.14 我对SpringDAO层支持的总结 1.15 我对SpringDAO层支持的总结 1.16 我对Spring 容器管理事务支持的总结 1.17 我对Spring 容器管理事务支持的总结 1.18 不重复配置——利用Spring通用化配置 1.19 @Value注入Properties 错误的使用案例 1.20 @Value注入Properties 使用错误的案例 1.21 扩展SpringMVC以支持更精准的数据绑定 1.22 扩展SpringMVC以支持更精准的数据绑定1 1.23 扩展SpringMVC以支持绑定JSON格式的请求参数 1.24 扩展SpringMVC以支持绑定JSON格式的请求参数 1.25 在应用层通过spring特性解决数据库读写分离 1.26 context:component-scan扫描使用上的容易忽略的use-default-filters 1.27 idea内嵌jetty运行springmvc项目报ConversionFailedException 1.28 springmvc 3.2 @MatrixVariable注解 1.29 spring3.2 带matrix变量的URL匹配问题 1.30 Shiro+Struts2+Spring3 加上@RequiresPermissions 后@Autowired失效 1.31 Spring事务不起作用 问题汇总 1.32 Spring3 Web MVC下的数据类型转换(第一篇)——《跟我学Spring3 Web MVC》抢先看 1.33 Spring 注入集合类型

67,513

社区成员

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

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