七、@RequestMapping注解的headers属性
在学习这个属性前,我想问大家什么是 header ?大家是不是很熟悉?
header:
用于HTTP协义交互的信息被称为HTTP报文,客户端发送的HTTP报文被称为请求报文,服务器发回给客户端的HTTP报文称为响应报文,报文由报文头部和报文体组成。
请求头部(Request Headers):请求头包含许多有关客户端环境和请求正文的信息,例如浏览器支持的语言、请求的服务器地址、客户端的操作系统等。
响应头部(Rsponse Headers):响应头也包含许多有用的信息,包括服务器类型、日期、响应内容的类型及编码,响应内容的长度等等。
和 params 使用方式相似:
“header”:要求请求映射所匹配的请求必须携带header请求头信息。
“!header”:要求请求映射所匹配的请求必须不能携带header请求头信息。
“header=value”:要求请求映射所匹配的请求必须携带header请求头信息且header=value。
“header!=value”:要求请求映射所匹配的请求必须携带header请求头信息且header!=value。
我们来测试一下代码吧:
@RequestMapping( //我们的一般端口是8080 headers = "Host=localhost:8081" ) public String testParams(){ return "success"; }
我们请求8081端口号,来看一下运行结果:
我们这个肯定是访问不到的啦。所以这个参数一般一般可以用来设置请求头。
八、@RequestMapping注解的consumes属性
consumes: 指定处理请求的提交内容类型(Content-Type),例如:application/json、text/html时,才能够让该方法处理请求。
@RequestMapping( value = "/test", params = "username", headers = "Host=localhost:8080", consumes = "application/json" ) public String testParams(){ return "success"; }
九、@RequestMapping注解的produces属性
produces: 指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型。
@RequestMapping( value = "/test", params = "username", headers = "Host=localhost:8080", consumes = "application/json", //可设置编码! produces = "application/json , charset=utf-8" ) public String testParams(){ return "success"; }
十、@RequestMapping注解支持ant路径风格
?:表示任意的单个字符
*:表示任意的0个或多个字符
**:表示任意的一层或多层目录
注意: 在使用时,只能使用//xxx的方式
测试案例一:
@RequestMapping( value = "/test/a?a/ant" ) public String testParams(){ return "success"; }
请求: http://localhost:8080/SpringMVC/test/a1a/ant
结果:
测试案例二:
@RequestMapping( value = "/test/*/ant" ) public String testParams(){ return "success"; }
请求: http://localhost:8080/SpringMVC/test/afasdfa/ant
结果:
测试案例三:
@RequestMapping( value = "/test/**/ant" ) public String testParams(){ return "success"; }
请求: http://localhost:8080/SpringMVC/test/a/b/c/ant
运行结果:
十一、SpringMVC支持路径中的占位符
原始方式: /deleteUser?id=1
rest方式: /deleteUser/1
SpringMVC路径中的占位符常用于RESTful 风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的**@RequestMapping** 注解的 value 属性中通过占位符 {xxx} 表示传输的数据,在通过 @PathVariable 注解,将占位符所表示的数据赋值给控制器方法的形参
<a th:href="@{/testRest/1/admin}">测试路径中的占位符-->/testRest</a><br>
@RequestMapping("/testRest/{id}/{username}") public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){ System.out.println("id:"+id+",username:"+username); return "success"; }
后端获取的参数: