Spring MVC 地址请求映射

本文介绍了Spring MVC中的地址请求映射,主要讲解了@RequestMapping注解的使用,包括注解的位置、使用表达式限定请求(支持Ant风格和{xxx}占位符)以及限定请求参数的方法,同时提到了HTTP请求的不同方法(GET、POST、DELETE、PUT)及其特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是地址请求映射?

Spring MVC WEB 项目中,每一次请求都会交给用户控制器响应。为了保证用户能请求到用户控制器,则需要 Spring MVC 向外提供用户控制器对外的请求接口。这就是请求地址映射。

如何映射?

答案是:可以使用 @RequestMapping 注解。

@RequestMapping 注解的作用:把用户控制器以 URL 逻辑名的方式向外映射,用于由外向内的请求调用。

@RequestMapping 的位置

@RequestMapping 注解既可以放置在类前面也可以放在方法前面。

@Controller
//类名前面                         
@RequestMapping("/user") 
public class UserController {
	 @RequestMapping(value = "/register") 
	 public String register() {
	           return “user/register”; 
	 }
}

使用表达式限定请求

@RequestMapping 注解的映射描述具有多样性:

  • 支持标准的 URL 格式;
  • 支持 Ant 风格。

什么是 Ant 风格?

所谓 Ant 风格指在 URL 中支持 通配符的语法结构描述。 Ant 的通配符主要是 3 种:

  • ?: 匹配任何单字符;
  • * : 匹配 0 个或者任意数量的字符;
  • ** : 匹配 0 个或者更多的目录。

如下面的地址请求映射:

  • /user/*/saveUser:可匹配类似于 /user/aaa/saveUser、/user/bbb/saveUser 等请求 URL;

  • /user/**/saveUser:可以匹配 /user/saveUser、/user/aaa/bbb/saveUser 等请求 URL;

Spring MVC 的地址请求映射除了支持通配符外,还支持带 {xxx} 占位符的 URL

如下面的地址请求映射:

  • /user/{userId}:可以匹配 user/1、user/2、user/123 等请求 URL;
  • /user/**/{userId}:可以匹配 user/aa/bbb/1、user/aaa/45 等请求 URL;
  • company/{companyId}/user/{userId}/detail:可以匹配 company/1/user/2/detail 等请求 URL。

在 HTTP 协议中请求方法有多种,常用的请求方法如下:

  • GET: 一般用于查询请求,具有幂等性,多次相同的请求返回相同的结果,所以可以使用浏览器缓存。不会影响系统的整体性能;
  • POST: 一般用于数据保存请求。不具有幂等性,多次操作会产生新的资源;
  • DELETE: 一般用于删除资源请求,可以多次删除;
  • PUT: 一般用于更新数据请求,也具有幂等性,无论更新多次性,结果都一样。

限定请求参数

限定请求参数和限定请求方法同工异曲。所谓限定请求参数,Spring MVC 会检查请求包中是否包含符合要求的请求参数。通过 @RequestMapping 注解中的 params() 方法实现参数筛选。

params()方法支持条件运算符构建的表达式。

  • params=“userId”: 指挥响应请求包中包含有名为 userId 参数的请求;
  • params="!userId" : 如果请求包中有名为 userId 的请求参数,则不响应,否则响应;
  • params=“userId!=1”: 对响应的请求有更多的要求,除了请求包中必须包含 userId 参数外,其值必须是 1;
  • params={“userId=1”,“userName”}: 响应的条件是,请求包中必须包含名为 userId 和 userName 这两个参数,且 userId 参数的值必须为 1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值