注解解析
对应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"}:表示请求参数必须有accountNameparams={"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);
}