前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring通过URL传值不能携带"."???

Spring通过URL传值不能携带"."???

作者头像
taixingyiji
发布于 2022-07-25 07:35:46
发布于 2022-07-25 07:35:46
59200
代码可运行
举报
运行总次数:0
代码可运行

# Spring通过URL传值不能携带"."???

在开发中暴露的问题,URL携待参数竟然不能包含"."

# 解决方案

将url传值,改为参数传递

  • 修改前:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@GetMapping("/{ip}")
public Result getList(@PathVariable("ip") String ip){
    return Result.getSuccess(serviceA.getList(ip))
}

1 2 3 4

  • 修改后:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@GetMapping("/")
public Result getList(@RequestParam("ip") String ip){
    return Result.getSuccess(serviceA.getList(ip))
}

# 问题分析

在开发过程中,突然遇到这个问题,发现前端传给后台的字符串被截断

"." 后面的内容后台无法获取

例:

后台接口如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@GetMapping("/{ip}")
public Result getList(@PathVariable("ip") String ip){
    return Result.getSuccess(serviceA.getList(ip))
}

前端传值方式如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/192.168.1.1

那么我们再看后台,发现接收到的值为 192.168.1

很奇怪,为什么后面的.1不见了???

我们再来看下SpringMvc的解析方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManager">
    <constructor-arg>
        <array>
            <bean class="org.springframework.web.accept.HeaderContentNegotiationStrategy"/>
            <!-- 根据后缀名来决定请求的视图类型 -->
            <bean class="org.springframework.web.accept.PathExtensionContentNegotiationStrategy">
                <constructor-arg>
                    <map>
                        <entry key="xml" value="application/xml" />
                        <entry key="json" value="application/json" />
                        <entry key="html" value="text/html" />
                        <entry key="htm" value="text/html" />
                        <entry key="txt" value="text/plain" />
                        <entry key="xls" value="application/vnd.ms-excel" />
                    </map>
                </constructor-arg>
            </bean>
        </array>
    </constructor-arg>
</bean>

原来,SpringMvc在解析URL的时候,会把最后一个"."和后面的内容解析为后缀,然后进行内容匹配

那么如果你传的参数中,有携待"."的这种场景的话,就只能通过参数来传值了

# 大功告成

OK,那么我们通过上述方式解决了此类问题,在此也算记录一下。

参考文章:URL地址中含有点号导致参数解析错误的解决办法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringMVC内容协商返回jsonxml格式
springMVC内容协商需要引入以下包 <!--springMVC内容协商需要引入以下包--> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.7</version> </dependency>
stys35
2019/03/05
7500
springmvc学习第二天
Springmvc第二天 回顾第一天课程内容: 1.JAVAEE体系结构 2.什么是springmvc? * mvc设计模式 * springmvc框架原理 3.springmvc第一个程序案例 *
Java帮帮
2018/03/19
1.1K0
springmvc学习第二天
Spring RestFul and RestTemplate
本文节选自《Netkiller Java 手札》 10.8. Spring4 Restful @RestController 首先我要禁告各位,Spring发展过程中,每个版本都有一定差异。如果你做实验失败后在网上搜索答案,切记看一下版本号还有文章帖子的发布时间。否则你可能按照Spring3配置方法去Spring4。 @RestController 默认返回 @ResponseBody, 所以@ResponseBody可加可不加 10.8.1. pom.xml Maven 增加 jackson 开发包
netkiller old
2018/03/05
1K0
Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)
      林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
bear_fish
2018/09/20
1.1K0
Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)
Spring RestFul Example (实例参考)
以下节选择《Netkiller Java 手札》 11.8. Spring4 Restful @RestController 首先我要禁告各位,Spring发展过程中,每个版本都有一定差异。如果你做实验失败后在网上搜索答案,切记看一下版本号还有文章帖子的发布时间。否则你可能按照Spring3配置方法去Spring4。 @RestController 默认返回 @ResponseBody, 所以@ResponseBody可加可不加 11.8.1. pom.xml Maven 增加 jackson 开发包
netkiller old
2018/03/05
9920
spring mvc随笔
用户1141560
2017/12/26
1.3K0
Java学习笔记-全栈-web开发-16-SpringMVC
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。
devi
2021/08/18
6430
spring4.1 请求rest接口406问题解决(转换JSON)[通俗易懂]
前文说明,本来项目使用的是springmvc 的模式,然后接口都是使用的是 @Controller + @ResponseBody 配置json转换的代码是
全栈程序员站长
2022/07/25
1K0
spring4.1 请求rest接口406问题解决(转换JSON)[通俗易懂]
Spring Web MVC框架(二) 控制器
在前面我们搭建了基本的Spring Web MVC环境,并配置了一个控制器。下面我们来详细学习一下控制器。控制器的主要作用就是处理特定URL发过来的HTTP请求,然后进行业务逻辑处理,将结果返回给某个特定的视图。
乐百川
2022/05/05
7240
小程序登录及token
官方文档-服务端 目的 实现用户登录小程序,获取当前用户的信息,发送到后端服务器,并返回token。 设计思路 在页面加载完成时调用 onLoad; 先检验本地缓存中是否有token,直接请求后端服务器,获取数据库用户信息; 如果没有token,调用 wx.login() ,获取到一个 code; 如果 openId 存在于数据库中,直接根据 openId 查询用户信息,返回用户信息和token; 如果 openId 不存在与数据库中,把 openId 存到数据库当中,相当于插入了新的 User 用户,返
Remember_Ray
2020/10/29
4.4K0
小程序登录及token
【工作篇】再次熟悉 SpringMVC 参数绑定
主要现在项目中使用的参数绑定五花八门的,搞得很头大,例如有些用字符串接收日期,用字符串接受数组等等,完全没有利用好 SpringMVC 的优势,这里自己也总结一下,免得到时又要百度谷歌查找。
玖柒的小窝
2021/12/17
6700
利用Spring MVC搭建REST Service
之前写过一篇 利用JAX-RS快速开发RESTful 服务 今天来看下spring-mvc框架如何实现类似的功能:  一、pom.xml 1 <?xml version="1.0" encodin
菩提树下的杨过
2018/01/24
1.1K0
利用Spring MVC搭建REST Service
SSM整合
spring是一个轻量级的,一站式的潜在Stroe。spring是模块化的,允许只使用所学要组件,不必引入其他组件。
xiaozhangStu
2023/05/04
3590
Spring 4 MVC 视图解析器(XML JSON PDF等) 纯注解(带源码)【推荐】
原文地址:http://websystique.com/springmvc/spring-4-mvc-contentnegotiatingviewresolver-example/
明明如月学长
2021/08/27
2.3K0
ContentNegotiation内容协商机制(二)---Spring MVC内容协商实现原理及自定义配置【享学Spring MVC】
上文 介绍了Http内容协商的一些概念,以及Spring MVC内置的4种协商方式使用介绍。本文主要针对Spring MVC内容协商方式:从步骤、原理层面理解,最后达到通过自己来扩展协商方式效果。
YourBatman
2019/09/03
2K0
ContentNegotiation内容协商机制(二)---Spring MVC内容协商实现原理及自定义配置【享学Spring MVC】
【云+社区年度征文】Spring内容协商
可以配置SpringMVC如何根据请求确定请求的媒体类型。可用选项包括检查文件扩展名的URL路径、检查“accept”头、特定查询参数,或者在不请求任何内容时返回默认内容类型。默认情况下,首先检查请求URI中的路径扩展,然后检查“accept”头。
叔牙
2020/12/03
8090
day64_SpringMVC学习笔记_02
注意:springmvc本身就支持xml格式,所以不用导入其他支持的jar包了。
黑泽君
2018/12/04
8390
day64_SpringMVC学习笔记_02
ssm之spring+springmvc+mybatis整合初探
3、然后在web.xml中加入配置,使spring和springmvc配置文件起作用。
西西嘛呦
2020/08/26
3900
ssm之spring+springmvc+mybatis整合初探
Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)
写在前面的话 原计划这部分代码的更新也是上传到ssm-demo仓库中,因为如下原因并没有这么做: 有些使用了该项目的朋友建议重新创建一个仓库,因为原来仓库中的项目太多,结构多少有些乱糟糟的。 而且这次的代码改动较大,与原来的目录结构及代码风格相比都有很大的差别。 同时也考虑到不同的人所处的学习阶段不同,担心有人不习惯也不适应这种风格及后面的更新,有的朋友甚至可能是初学者,更适合学习ssm-demo这个基础项目。 基于以上几点,最终并没有选择把几个项目都放在一个代码仓库中,而是另外花了些时间改动并且重新创建了
程序员十三
2018/03/15
1K0
Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)
第二章 SpringMVC
Component (controller service Repository)
用户9184480
2024/12/07
1010
相关推荐
SpringMVC内容协商返回jsonxml格式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文