什么是地址请求映射?
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。