SpringBoot @PathVariable 处理相同模式URL请求

首先,看一个例子,以下是一个网站中7个网页的URL请求:

1、首页

<script src="http://localhost:8180/api/demo_index_index/pv.html"></script>

2、体育首页

<script src="http://localhost:8180/api/demo_sport_index/pv.html"></script>

3、体育页面1

<script src="http://localhost:8180/api/demo_sport_1/pv.html"></script>

4、体育页面2

<script src="http://localhost:8180/api/demo_sport_2/pv.html"></script>

5、音乐首页

<script src="http://localhost:8180/api/demo_music_index/pv.html"></script>

6、音乐页面1

<script src="http://localhost:8180/api/demo_music_1/pv.html"></script>

7、音乐页面2

<script src="http://localhost:8180/api/demo_music_2/pv.html"></script>

我们很容易发现这些URL请求中均包含了大量相同重复的地方,这种具有大量重复的URL请求我们称之为具有相同模式的URL。针对这种URL,很显然,我们不能为这7个请求各写一个@RequestMapping注解的方法来处理其请求,但是我们可以在@RequestMapping中用{}来声明它们URL中的变量。
在这里插入图片描述
在这里插入图片描述
如上图所示,{resCode}只是声明了我们定义的一个URL变量,那么现在如何去获取这个URL变量resCode中具体存放的值呢?这就需要用到@PathVariable注解了。由于login方法中的用@PathVariable注解的resCode参数和URL变量resCode是同名的,所以spring会自动为resCode参数进行赋值,将resCode参数的值设置为URL的具体值。
其实这里还有一种写法,即:

@PathVariable("resCode") final String resCode

以上写法指定了具体的URL变量,即指定了具体要将哪个URL变量赋@PathVariable注解过的参数,这样也能获取resCode的值。
获取到了resCode的值,也就相当于获取到了用户URL请求中的“个性”部分,也就达到了区分是哪个用户发出请求的目的。
例如,还是拿上面的例子:

1、首页的URL:在这里插入图片描述
首页的resCode:demo_index_index

2、体育首页的URL:在这里插入图片描述
体育首页的resCode:demo_sport_index

3、体育页面1的URL: 在这里插入图片描述
体育页面1的resCode:demo_sport_1

4、体育页面2的URL:在这里插入图片描述
体育页面2的resCode:demo_sport_2

5、音乐首页的URL:在这里插入图片描述
音乐首页的resCode:demo_music_index

6、音乐页面1的URL:在这里插入图片描述
音乐页面1的resCode:demo_music_1

7、音乐页面2的URL:在这里插入图片描述
音乐页面2的resCode:demo_music_2

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值