Nero丶的gravatar头像
Nero丶 2015-11-30 20:00:11

spring mvc项目的拦截器通过注解@RequestBody如何得到http POST请求参数?

spring mvc下,用拦截器获取@RequestBody,@RequestBody是controller中post的请求参数。我是实现了HandlerInterceptor这个接口,用这种方式去获取Map<String, String[]> params = request.getParameterMap();但是都是空的。。网上查了下相关的内容,好像没有找到答案~~求大牛

所有回答列表(3)
Nero丶的gravatar头像
Nero丶  LV9 2015年12月2日

没人回答自己来:用拦截器获取requestBody是可以的,通过流的方式去获取,springmvc对requestBody和responseBody只能进行一次读写。然后问题来了,如果在访问controller之前读取呢,流被读了,没法在去访问controller,如果访问controloler之后,再去读取呢,这时候流已经关闭了,。那么就要考虑是不是能写回去。有人用过滤器尝试写回去可行,拦截器,试过了好像不行。自己本身也比较水。。查了很多外网资料,很多都是用过滤器代替拦截器。。

解决在Filter中读取Request中的流后, 然后再Control中读取不到的做法:http://my.oschina.net/vernon/blog/363693?fromerr=2jheR52d

评论(0) 最佳答案
谭永放的gravatar头像
谭永放  LV14 2015年12月17日

getRequest.getParameter("参数");这样获取不行吗

zhangxvle的gravatar头像
zhangxvle  LV4 2017年9月7日
@RequestMapping("/bidCurrent") @ResponseBody public Map bidCurrentOrder(HttpServletRequest request){ Map resMap =MapUtil.getRetMap(); try { String productId = request.getParameter("product_id"); String bidAmountStr = request.getParameter("bid_amount"); // Map params = new HashMap(); params.put("productId", productId);
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友