注解解析
对应SpringMVC
中的注解进行解析
@RequestMapping
@RequestMapping
:请求映射到具体的某个方法上(虚拟地址映射)
作用:用于建立请求URL
和处理器请求方法之间的对应关系(对请求的虚拟地址进行映射到具体的某个方法上)
使用位置:
在类上,请求
URL
的第一级访问目录,此处不写的话,就相当于应用的根目录在方法上,请求
URL
的第二级访问目录,与类上的使用@RequestMapping
标注的一级目录一起组成访问虚拟路径java@Controller // 放到Spring容器中 @RequestMapping("/new") public class UserController { @RequestMapping("/quick") // 请求映射,访问/quick时,就会映射到save()方法 public String save() { System.out.println("Controller save running"); return "/success.jsp"; // 跳转到具体的视图,使用的是相对地址,加上/表示从Webapp文件夹下找具体的.jsp资源 } }
此时的访问地址为
http://loacalhost:8080/new/quick
属性:@RequestMapping
的具体属性参数有:
value
:用于指定请求的URL
,它和path
属性的作用是一样的如:
@RequestMapping(value="/quick")
,只写一个value
属性,value
可以省略method
:用于指定请求的方式如:
@RequestMapping(value="/quick", method=RequestMethod.POST)
当前请求方式必须是
POST
的请求方式才能访问到params
:用于指定限制请求参数的条件,它支持简单的表达式,要求参数请求的key
和value
必须和配置的一样如:
params={"accountName"}
:表示请求参数必须有accountName
params={"money!100"}
:表示请求参数中money
不能是100
@ResponseBody
@ResponseBody
注解用于告知SpringMVC
框架,其方法返回的字符串不是用于页面视图的跳转,而是直接在http
响应体中返回,用于回写数据使用
@RequestMapping("/quick2") // 请求映射,访问/quick2时,就会映射到save()方法
@ResponseBody // 告知SpringMVC框架,其方法返回的字符串不是跳转,而是直接在http响应体中返回
public String quickMethod() throws IOException {
return "hello world";
}
@RequestBody
@RequestBody
表示将请求体的内容,直接封装到后面对应的集合中
@RequestMapping("/quick")
@ResponseBody
public Void quickMethod(@RequestBody List<User> userList) throws IOException {
System.out.println(userList); // [User{username='jlc', age=25}, User{username='lisi', age=20}]
}
@RequestParam
@RequestParam
是一个绑定参数注解
当请求的参数名称与Controller
的业务方法参数名称不一致时,就需要通过@RequestParam
注解显示绑定与形参的关系:
@RequestMapping("/quick")
@ResponseBody
public Void quickMethod(@RequestParam(value="name") String username) throws IOException {
System.out.println(username); // jlc
}
将请求的
name
参数,映射到对应的username
参数,如果@RequestParam()
只有一个参数时,value
可以省略
在浏览器地址栏输入http://localhost:8080/quick?name=jlc
注解@RequestParam
有如下的参数可以进行使用:
value
:与请求参数名称required
:指定的请求是否必须包括参数,默认是true
,提交时如果没有此参数则报错defaultValue
:当没有指定请求参数时,则使用指定的默认值
@RequestMapping("/quick")
@ResponseBody
public Void quickMethod(@RequestParam(value="name",required=false, defaultValue="jlc") String username) throws IOException {
System.out.println(username); // jlc
}
@PathVariavle
使用@PathVariavle
注解进行占位符的匹配获取工作
对应客户端浏览器输入的地址:http://localhost:8080/quick/jlc
获取Restful
风格的参数:
@RequestMapping("/quick/{name}") // {name}是占位的,获取请求地址的对应内容
@ResponseBody
public Void quickMethod(@PathVariavle(value="name", required=true) String name) throws IOException {
System.out.println(name); // jlc
}
@PathVariavle(value="name", required=true)
中的name
要和@RequestMapping("/quick/{name}")
中的name
一致
@RequestHeader
@RequestHeader
注解就可以获取请求头数据,该注解的属性有:
value
:请求头的名称required
:是否必须携带此请求头
@RequestMapping("/quick")
@ResponseBody
public Void quickMethod(@RequestHeader(value="User-Agent", required=false) String headerValue) throws IOException {
System.out.println(headerValue);
}
请求头中的
User-Agent
表示当前客户端浏览器的信息
@CookieValue
@CookieValue
注解获取请求头中的Cookie
的值(session
的一种标识,其值一般是一个键值对JSESSIONID=xxxxxx
),@CookieValue
注解的属性如下:
value
:指定cookie
的名称required
:是否必须携带此cookie
@RequestMapping("/quick")
@ResponseBody
public Void quickMethod(@CookieValue(value="JSESSIONID", required=false) String jsessionid) throws IOException {
System.out.println(jsessionid);
}