为什么springmvc请求参数中的点后面的参数没了
2018-01-20 22:49
369 查看
Springmvc框架下使用restful API时后面链接最后的点丢失情况的处理
大概原因分析如下:在Spring MVC初始化的时候会把@RequestMapping解析生成请求url与对应页面控制器的关联关系 – Spring MVC @RequestMapping
当用户发送一个请求时来到前端控制器,前端控制器根据请求url来决定使用哪个页面控制器(也就是@Controller类中的@RequestMapping方法)进行处理并把请求委托给HanderAdpter。– Spring MVC DispatcherServlet
在调用这个页面控制器的前后会涉及到拦截器的调用,也就是HandlerIntercepter。
在调用完成页面控制器之后会返回ModelAndView对象。 最后通过页面渲染器(ViewResolver)把对应的页面模板以及数据进行渲染返回给请求。
其实在调用hander方法前后有2个动作就是对于HandlerMethod里面的请求参数解析(HandlerMethodArgumentResolver)以及返回参数解析(HandlerMethodReturnValueHandler)。现在主要的是讨论请求参数解析。
但是Spring MVC中,在路径参数中如果带”.”的话“.”后面的值将会被忽略。例如访问http://www.wlgdo.com/hido/index.do。Spring MVC就会把“.”后面的do忽略。
网上有很多解决方案,但是都不是最合理的方案,最合理的方案是使用SpEL即可以处理该情况:如下代码
/** * 更新用户电表信息 * * @author Ligang.Wang[wlgchun@163.com] * @date 2018年1月20日下午9:07:08 * @param room * @param user * @return */ @RequestMapping(value = "owner/elect/{room}/{electfee:.+}", method = RequestMethod.GET) public Object updateOwnerEletic(@PathVariable String room, @PathVariable String electfee) { log.info("更新用户电费:{},{}", room, electfee); Owner owner = ownerrService.update(new Owner(room, electfee, null)); if (owner != null) { return new Resp(RespCode.SUCCESS, owner); } return new Resp("-1", "更新失败"); }
至此,你的所有的需求不受其他影响得解决了。
相关文章推荐
- 为什么返回的数据前面有callback? ashx/json.ashx?的后面加 callback=? 起什么作用 js url?callback=xxx xxx的介绍 ajax 跨域请求时url参数添加callback=?会实现跨域问题
- springmvc请求参数绑定
- springmvc请求参数获取的几种方法
- springMVC获取请求参数的几种方法
- springMvc源码学习之:spirngMvc获取请求参数的方法
- springMvc源码学习之:spirngMVC获取请求参数的方法2
- SpringMVC获取请求参数
- 随笔笔记三——关于SpringMVC接收请求参数和向页面传递参数
- 为什么要在引入的css或者js文件后面加参数
- springmvc请求接收参数的几种方法
- 解决 AngularJs $http 发送post,get请求,SpringMvc无法接受参数的问题。
- js或css文件后面为什么有参数
- springMVC中HTTP PUT请求该如何传输请求参数呢?
- springmvc中 ajax请求错误,返回406,并一直进入error的回调方法,以及返回参数为Object
- (6)服务器接收的get请求参数为什么都是null?
- springmvc请求参数获取的几种方法
- SpringMVC或SpringBoot请求时间参数报错处理方法
- 扩展SpringMVC以支持绑定JSON格式的请求参数
- springmvc请求接收参数的几种方法
- SpringMVC——接收请求参数和页面传参