千家信息网

Spring中的PathVariable注释怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Spring中的PathVariable注释怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spri
千家信息网最后更新 2026年11月03日Spring中的PathVariable注释怎么用

小编给大家分享一下Spring中的PathVariable注释怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Spring的PathVariable注释

就像@RequestParam一样,@PathVariable批注用于从HTTP request中提取数据。但是,它们略有不同。区别在于@RequestParam从URL获取参数,而@PathVariable只是从URI中提取参数。

例子

让我们假设你有一个以下 URL 的网站:

http://www.yourwebsite.net/employee/1

上面 URL 中的1表示雇员的 ID。 到目前为止一切ok。 但是现在,从 Spring 控制器看,路径看起来是这样的(取决于您给 id 的名称) :

/employee/{id}

上面的 URL 路径对我们有什么帮助? 因为这个{}语法(碰巧被称为 URI 模板) ,你现在可以把它传递给一个使用@pathvariable 的方法,你的方法和注释看起来如下所示:

@RequestMapping(value="/employee/{id}", method=RequestMethod.GET)   (@PathVariable  id) {  }

从上面的代码片段可以看到,现在" id"将从路径中引用{ id }。 让我们用一个真实的例子来尝试:

@Controller@SpringBootApplicationpublic class EmployeeManager {   @RequestMapping(value=" /employee/{id}")   public String pathVariableDemo(Model model, @PathVariable int id) {      model.addAttribute("id", id);      return "demo";   }}

现在,Spring查看输出id参数,并将其与模板变量" id"进行匹配。

请记住,如果我的代码使用" id"(参数)命名为其他名称,那么它将无法工作。 然而,如果你不想对参数和模板变量使用相同的名字,你可以像这样命名 PathVariable 注释的名字:

@Controller@SpringBootApplicationpublic class EmployeeManager {   @RequestMapping(value=" /employee/{id}")   public String pathVariableDemo(Model model, @PathVariable("id") int someRandomName) {      model.addAttribute("id", someRandomName);      return "demo";   }}

从上面的示例中可以看到,我将参数的名称更改为 _someRandomName,_但还添加了@PathVariable (" id"),它再次指定了我们要引用的模板变量。

最终您有两个选择:

  • 1.为方法参数使用相同的名称

  • 2.在@PathVariable批注中指定模板变量的名称

多个@PathVariable批注

如果你可以有多个@pathvariable 会怎么样? 我们能做到吗? 是的,我们可以! 事实上,这和添加一个@pathvariable 非常相似。

我们来演示一下:

@Controller@SpringBootApplicationpublic class EmployeeManager {   @RequestMapping(value="/{company}/employee/{id}", method=RequestMethod.GET)   public String pathVariableDemo(@PathVariable("company") String companyName, @PathVariable("id") int employeeId) {      // handle the code      return "demo";   }}

从上面的代码片段中可以看到,我们有两个模板变量:

  • company

  • id

然后,我们提取每个模板变量,然后通过指定方法参数所引用的临时变量将它们"分配"给方法参数。

@PathVariable vs @RequestParam结论

尽管@PathVariable和@RequestParam都用于从URL提取值,但是可以根据URL的设计使用它们。

通常,@PathVariable通常用于RESTful Web服务中,而@RequestParam用于从查询参数中提取数据。

使用@PathVariable的坑

发现问题

前端路径拼接用户名,因为用户名中是带'.'这个字符的。类似'Oliver.wang'。前端浏览器F12,发现路径正常拼接'xxxxxx/Oliver.wang?xxx=xxx',后端代码发现,controller层的参数,接收到只有'Oliver'。

解决过程

在方法中多加了一个参数(xxx,HttpServletRequest request){},输出request.ServletPath(),发现路径正常'/xxx/xxx/Oliver.wang'。

解决方案

  • 第一种:加上 {:.+} ,比如 @getMapping("xxx/{name:.+}")

  • 第二种:UrlEncode

  • 第三种:request.ServletPath() 拿到路径截取字符串

  • 第四种:不拼接路径,改成'xxxxx?name=Oliver.wang' 请求参数

以上是"Spring中的PathVariable注释怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

参数 路径 变量 模板 方法 注释 名称 代码 面的 批注 篇文章 相同 两个 例子 内容 前端 名字 多个 字符 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 互联网科技公司经营范围 互联网科技公司起名 云信互联网科技有限公司 金融科技与互联网金融 互联网医疗科技 互联网科技论文 深圳天众互联网科技公司 互联网媒体平台算高科技产业 呼和浩特新华互联网科技学院 国大互联网教育科技有限公司工作 世界互联网领先科技成果获奖 徐州市互联网科技有限公司 互联网科技公司营业执照怎么办理 互联网方面的科技前沿 互联网公司高科技产品 山东大美朱楼互联网科技有限公司 神州科技互联网有限公司 保山互联网科技靠谱吗 互联网的科技体现在哪里 中关村互联网科技集团 科技互联网政务服务 艾特科技互联网 鑫亿盛互联网科技 镁科技互联网资讯平台 晓花互联网科技有限公司网址 洛阳共同富裕互联网科技有限公司 翼展科技 首家互联网医院 互联网金融科技名词解释 安徽九吞吴互联网科技有限公司
0