1.@PathVariable 映射 URL 绑定的占位符
- @PathVariable是spring3.0的一个新功能
- 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
1.1 占位符映射:url路径下可以写占位符,可以在任意路径下写变量
- 语法:@RequestMapping("/user/{xxx}") : {xxx} 占位符 ,可以写任意变量
- url:http://localhost:8080/springmvc/user/hah22
- 使用环境:当访问一个父路径下的某个子路径时,这个子路径不确定,我们可以通过 {xxx} 占位符来表示,传入 什么参数,该占位符就是什么参数
实例:
//需求:访问user路径下的某一个用户 ,用户不确定,用占位符表示{userName}
@RequestMapping("/user/{userName}")
public String method(@PathVariable("userName") String name) {
//通过@PathVariable 映射url中的占位符{userName}值 到方法入参中
System.out.println("用户:"+name);
return "/WEB-INF/inner/helloWorld.jsp";
}
测试:
浏览器访问:
控制台:
用户:qe231
2. 占位符的URL 以及 注解@PathVariable获取占位符值 的写法都是 SpringMVC为了去支持 rest 风格的URL。
那么 什么是rest风格的URL呢?
2.1先说说常规的URL
当客户端向服务器发送请求时,意味着客户端要对服务器中的某一个资源做操作,无非就是:增删改查 的操作
假设客户端要对 user用户做一系列的操作
- 新增操作:http://localhost:8080/springMvc/addUser
- 删除操作:http://localhost:8080/springMvc/deleteUser?id=1
- 修改操作:http://localhost:8080/springMvc/updateUser
- 查询操作:http://localhost:8080/springMvc/getUser
仅仅是对一个用户资源做增删改查就需要配置 4个url,这样配置也不是不行。
但,随着我们的项目增大、模块增大、业务量增大、问题就出现了,每一个资源都要这样配置,那么就是成千上万个url,
单单是取url名字都要费老半天,这样的url不够简洁,且安全性不高,有些url路径就完全暴露了对服务器发送的请求操作
而 rest风格的URL就是要去解决 如上的问题
2.2rest 风格的URL
先说说Rest请求方式的好处,首先就是面向资源URI,即http请求的路径,Rest规定中要求URI各层只能用名词不用动词,
这样相比传统的get请求有利于传输数据的稳定性,数据的操作流程不会被人轻易看破,也便于团队开发,各种URI一目了然;
再通过固定的请求方式,对URI中的资源进行各种操作。
例如: 对 user 做操作, 向服务器发送URL:http://localhost:8080/springMvc/user
- GET >>> 查询操作
- POST >>> 新增操作
- PUT >>> 修改操作
- DELETE >>> 删除操作
不以请求URL路径作为操作依据,而是以请求方式作为操作依据的。符合这种请求方式的url ,叫做rest 风格的url
下面做一个实例来演示 rest 风格URL 请求:
1.首先我们编写controller
2.接下来编写 jsp页面,来访问 控制器
注: 页面发送 PUT/ DELETE 请求的 处理方法
1.springMVC中有一个自带的过滤器 Filter,可以把普通的请求转换成规定形式的请求
2.怎么发送其他形式的请求
2.1 创建 一个post请求的form表单
2.2 表单中携带一个参数: _method
2.3 这个参数的值就是: 要转换的请求方式 DELETE、PUT
3.在web.xml 中配置过滤器 转换请求方式
<!-- 配置过滤器HiddenHttpMethodFilter
该过滤器是将 form表单的请求方式转换成规定形式的请求方式
-->
<filter>
<filter-name>RestURL</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter>
<filter-mapping>
<filter-name>RestURL</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
测试:接下来客户端访问jsp页面
控制台输出:
GET:用户查询操作
PUST:用户新增操作
PUT:用户修改操作
DELETE:用户删除操作
部分参考: