本文介绍springmvc的常用注解以及其属性
@RequestMapping
作用:建立请求url与处理请求方法之间的对应关系
作用范围:类、方法
属性:
value:等同于path,用于指定请求的url
path:等同于value,用于指定请求的url
method:接收请求的方式,如果对应url的请求方式未按照指定方式进行请求,那么不会执行对应的方法
params:指定请求参数条件,即请求中必须包含某参数、或请求中某参数的值必须等于某值,否则不会执行对应方法
header:指定字符串,请求中必须包含该字符串key的消息头(不常用)
@RequestParam
作用:把请求中指定名称的参数给控制器中的形参赋值
作用范围:方法参数声明处
属性:
value:等同于name,请求参数中的名称
name:等同于value,请求参数中的名称
required:是求参数中是否必须提供这个参数,默认为true(如果未提供则报错,不执行方法)
@RequestBody
作用:用于获取请求体的内容,以key1=value1&key2=value2&key3=value3的形式存于字符串中
作用范围:方法参数声明处
属性:
required:是否必须有请求体,默认true,如果为get请求方式,报错,当为false的时候,get请求方式参数为null
@PathVariable
作用:url占位符,把url中的路径解析为参数
作用范围:方法参数声明处
属性:
value:指定url中的占位符的名称
例子:
controller:
@RequestMapping("/login/{name}")
public String login(@PathVariable("name") String name){
return "success";
}
页面:
<a href="login/123">测试</a>
如此将参数作为url的一部分,在login方法中,通过@PathVariable注解中的value找到@RequestMapping中对应名称占位符的值,赋值给name
@ModelAttribute
作用:
1.用在方法上:再执行当前controller任意方法之前,都要执行此方法
2.用在参数上:获取指定数据给参数赋值
作用范围:
1.方法上、2.参数声明处
例子:
1.作用方法上:目标方法需要完整信息的对象,而前台传来的对象信息不全,通过@modelAttribute修饰的方法,在进入目标方法之前,对对象进行封装,结束后,目标方法接收的参数对象,前台传来的部分不会被覆盖,前台没传的,会被@modelAttribute修饰的方法所覆盖:
@ModelAttribute
public Studet test(String name){
Studet studet = new Studet();
studet.setUsername("1");
studet.setPassworld("1");
studet.setDate(new Date());
return studet;
}
@RequestMapping("/login")
public String login(Studet studet){
System.out.println(studet);//userName=前台传来的(!不是1!)passworld=1 date=...
return "success";
}
2.作用在参数上:首先需要一个无返回值的@modelAttribute修饰的方法,其有一个Map类型参数,将封装对象放入map中,在请求目标方法中,对参数前添加@modelAttribute修饰,那么该对象就会补充为经过@modelAttribute修饰的方法修饰的对象:
@ModelAttribute
public void test(String name,Map<String,Studet> map){
Studet studet = new Studet();
studet.setUsername("1");
studet.setPassworld("1");
studet.setDate(new Date());
map.put("student",studet);
}
@RequestMapping("/login")
public String login(@ModelAttribute("student") Studet student){
return "success";
}