HTTP请求参数中后面带点的参数丢失无法获取的问题分析

本文探讨了在Spring MVC框架下,当HTTP请求参数中包含'.'号时,后端无法正确获取的情况。主要分析了Spring MVC的请求处理流程,并指出在路径参数中'.'后面的值会被忽略的问题。文中提出使用SpEL作为最合理的解决方案。
摘要由CSDN通过智能技术生成

在HTTP请求参数中,最后的一个参数使用了’.'号,导致后端无法获取,如restfulAPI时后面链接最后的点丢失情况的处理http://www.wlgdo.com/index/account/uip/127.0.0.1

大概原因分析如下:

  1. 在Spring MVC初始化的时候会把@RequestMapping解析生成请求url与对应页面控制器的关联关系 – Spring MVC @RequestMapping
  2. 当用户发送一个请求时来到前端控制器,前端控制器根据请求url来决定使用哪个页面控制器(也就是@Controller类中的@RequestMapping方法)进行处理并把请求委托给HanderAdpter。– Spring MVC DispatcherServlet
  3. 在调用这个页面控制器的前后会涉及到拦截器的调用,也就是HandlerIntercepter。
    在调用完成页面控制器之后会返回ModelAndView对象。 最后通过页面渲染器(ViewResolver)把对应的页面模板以及数据进行渲染返回给请求。
  4. 其实在调用hander方法前后有2个动作就是对于HandlerMethod里面的请求参数解析(HandlerMethodArgumentResolver)以及返回参数解析(HandlerMethodReturnValueHandler)。现在主要的是讨论请求参数解析。

但是Spring MVC中,在路径参数中如果带”.”的话“.”后面的值将会被忽略。例如访问http://www.wlgdo.com/hido/index.do。Spring MVC就会把“.”后面的do忽略。

网上有很多解决方案,但是都不是最合理的方案,最合理的方案是使用SpEL即可以处理该情况:如下代码


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值