@PathVariable URL变量

2023-11-07

 

在Web应用中URL通常不是一成不变的,例如微博两个不同用户的个人主页对应两个不同的URL:http://weibo.com/user1,http://weibo.com/user2。我们不能对于每一个用户都编写一个被@RequestMapping注解的方法来处理其请求,也就是说,对于相同模式的URL(例如不同用户的主页,它们仅仅是URL中的某一部分不同,为他们各自的用户名,我们说它们具有相同的模式)。

1@RequestMapping  中的引用变量,即定义URL变量规则

可以在@RequestMapping注解中用{}来表明它的变量部分,例如:

@RequestMapping("/users/{username}")

这里{username}就是我们定义的变量规则,username是变量的名字,那么这个URL路由可以匹配下列任意URL并进行处理:

  • /users/tianmaying
  • /users/ricky
  • users/tmy1234

需要注意的是,在默认情况下,变量中不可以包含URL的分隔符/,例如路由不能匹配/users/tianmaying/ricky,即使你认为tianmaying/ricky是一个存在的用户名。

2获取请求中的URL变量

@RequestMapping("/users/{username}")
    @ResponseBody
    public String userProfile(@PathVariable String username){
//        return String.format("user %s", username);
        return "user" + username; 
    }

url  中的{username}  会被spring   传递给参数通过  @PathVariable   所修饰的注解上,当然如果  修饰的参数名字与URL 变量的名字不同则可以指定:

 public String userProfile(@PathVariable("username") String username){

3请求路径中 定义多个URL变量

@RequestMapping("/user/{username}/blog/{blogId}")
    @ResponseBody
    public String getUerBlog(@PathVariable String username , @PathVariable int blogId) {
        return "user: " + username + "blog->" + blogId;
    }

所以你可能注意到,    请求路径中的变量名字与方法参数的名字一样的情况下,springmvc 会直接入参,当然如果不一样,还需要向上面那样   @PathVariable("username") String username   

4 请求路径设置表达式

对于请求路径中变量只可能包含小写字母,数字,下划线

@RequestMapping("/user/{username:[a-zA-Z0-9_]+}/blog/{blogId}")

如此设置URL变量规则后,不合法的URL则不会被处理,直接由SpringMVC框架返回404Not Found。

摘自

https://www.cnblogs.com/fangpengchengbupter/p/7823493.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@PathVariable URL变量 的相关文章

随机推荐

  • 行走在路,偶有弯道——致这半年

    不知不觉半年又转瞬即逝 不得不说总结是一个回顾过去开创未来的时刻 一直在拖着半年总结 因为害怕面对自己不好的一面 害怕想象半年前的目前 对比半年后的成果 但是总结终究是要有的 因为有总结 我们才会更加系统的认识自己 反思自己 然后在今后的生
  • linux的文件安装路径

    如果是别人发布的二进制包 可执行文件通常都安装到 usr bin 下面 如果是自己从源代码安装的 可执行文件通常都在 usr local bin 下面 除非配置时指定了安装位置 例如 rpm ivh xxx1 rpm 可执行文件通常都安装到
  • UIViewAnimation动画与Core Animation的CATransition类动画

    void leftClick UIView beginAnimations nil context nil display mode slow at beginning and end UIView setAnimationCurve UI
  • Dubbo+spring+springmvc+mybatis+Maven+Jetty+Mysql+Ajax多框架融合学习网址收藏

    原文地址 http blog csdn net wp1603710463 article details 49232797 Dubbo spring springmvc mybatis Maven Jetty Mysql Ajax多框架融合
  • keras的Sequential神经网络,keras实现卷积神经网络

    1 如何用keras实现多变量输入神经网络 要点如下 1 神经网络基本结构 应该是输入层 若干个隐含层 输出层 2 输入层应该有7个输入变量 3 隐含层层数自定 但每层要超过7个神经元 4 输出层可以用softmax之类的函数 将隐含层的输
  • C/C++中时间函数的介绍

    1 概念 在C C 中 对字符串的操作有很多值得注意的问题 同样 C C 对时间的操作也有许多值得大家注意的地方 最近 在技术群中有很多网友也多次问到过C 语言中对时间的操作 获取和显示等等的问题 下面 在这篇文章中 笔者将主要介绍在C C
  • M1芯片运行ReactNative踩坑

    运行 报 Flipper 什么找不到的错 具体什么错记不清了 解决办法 编辑 ios Podfile 删除以下内容 use flipper post install do installer flipper post install ins
  • 技术栈选型之微服务公共关注点及Dubbo、Spring Cloud和K8s横向比对

    技术栈选型之微服务公共关注点及Dubbo Spring Cloud和K8s横向比对 文章目录 技术栈选型之微服务公共关注点及Dubbo Spring Cloud和K8s横向比对 前言 微服务公共关注点 Dubbo Spring Cloud和
  • Mac电脑不能读取您的磁盘怎么办

    品牌型号 MacBook Air 系统 macOS 10 13 软件版本 Tuxera Ntfs for mac 2021 Mac电脑不能读取磁盘数据 无非是两种情况 一是固件故障 二是磁盘格式问题 在常用的三种磁盘格式NTFS FAT 3
  • Quartz 的使用

    项目代码 https github com yuleiqq quartz example tree master quartz study 使用Quartz 的调度器之前 需要先实例化该调度器 Scheduler 实例化完成之后 就可以启动
  • python学习:异常处理、with用法以及utf8中文显示

    usr bin env python coding utf8 为文件中每行的开头添加行号 def addLineNumberForFile srcFilePath dstFilePath if srcFilePath dstFilePath
  • SpringWeb(SpringMVC)

    目录 SpringWeb介绍 搭建 SpringWeb SpringWeb介绍 Spring Web是一个基于 Servlet API 构建的原始 web 框架 用于构建基于MVC模式的Web应用程序 在 web 层框架历经 Strust1
  • Hive实现分组排序、分组求取topN或者分页的实现方法

    使用到的语法 ROW NUMBER OVER PARTITION BY COL1 ORDER BY COL2 简单的说row number 从1开始 为每一条分组记录返回一个数字 这里的ROW NUMBER OVER ORDER BY xl
  • vue 刷新当前页面或者跳转页面时候刷新

    为什么会有这篇文章 1 用vue router 重新路由的时候到当前页面的时候是不进行刷新的 2 采用window reload 或者router go 0 hisory go 0 刷新的时候整个浏览器进行刷新加载 但是页面闪烁 体验不好
  • Android动态生成UI

    android 动态创建布局及关于LayoutParams 解释 其实这个LayoutParams类是用于child view 子视图 向 parent view 父视图 传达自己的意愿的一个东西 孩子想变成什么样向其父亲说明 其实子视图父
  • python 利用plt.plot绘柱状图横坐标刻度均设为整数

    在使用python进行音频信号处理时 使用plt plot绘柱状图时 希望横坐标为整数 即音频通道号 通常使用的方法是 xticksig np arange 1 1 MicNum 或给它加个步长 xticksig np arange 1 1
  • 统计学习方法:第一章 统计学习及监督学习概论

    统计学习方法 第一章 统计学习及监督学习概论 1 1 统计学习 1 2 统计学习的分类 1 2 1 基本分类 1 监督学习 2 无监督学习 3 强化学习 4 半监督学习和主动学习 第一章 统计学习及监督学习概论 监督学习是从标注数据中学习模
  • css渐变色

    css渐变色 渐变色只会作用域背景图片background image这个属性 线性渐变 参数1 角度 to 方向 默认方向是从上到下 参数2 开始的颜色 参数3 结束的颜色 background image linear gradient
  • Json库的使用

    文章目录 Json库的概述 Json库的解析 Python 编码为 JSON 类型转换对应表 JSON 解码为 Python 类型转换对应表 实例 Json库的概述 json库主要包括两类函数 操作类函数和解析类函数 操作类函数主要完成外部
  • @PathVariable URL变量

    在Web应用中URL通常不是一成不变的 例如微博两个不同用户的个人主页对应两个不同的URL http weibo com user1 http weibo com user2 我们不能对于每一个用户都编写一个被 RequestMapping