0%

springmvc注解的使用

springmvc注解的使用

@RequestMapping

地址映射,可以用在类和方法上

@PathVariable

基于REST风格的API,可以在URI地址上拼接参数

如:get/{id}

@PathVariable中的value值要设置为和地址栏中一致,如@PathVariable(“id”)

@RequestParam

可以接收拼接在地址栏中的参数

如: get?id=1&name=张三

1
@RequestParam("id") int id,@RequestParam("name") String name

@RequestHeader

可以获取请求头参数

@CookieValue

可以绑定请求中的cookie值

@CookieValue(“JSESSIONID”) String sessionId

@SessionAttribute

默认情况下Spring MVC将模型中的数据存储到request域中,当一个请求结束后,数据就失效了,如果要跨页面使用,那么需要使用到session,而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中

@ModelAttribute

可以放到方法上或者参数上,它将方法参数或方法返回值绑定到命名中的Model属性中,然后将其公开给Web视图。如果我们在方法级别使用它,则表明该方法的目的是添加一个或多个模型属性。另一方面,当用作方法参数时,它表示应从模型中检索参数。如果不存在,我们应该首先实例化它,然后将其添加到Model中。一旦出现在模型中,我们应该填充所有具有匹配名称的请求参数的参数字段

1
2
3
4
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ModelAttribute

方法上

标记在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到ModelMap中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@ModelAttribute
public void before(@RequestParam("id") String id, Model model){
// 方法返回值为void,所以需要手动添加到model中
model.addAttribute("id",id);
}


@ModelAttribute("name")
public String beforeWith(@RequestParam("name") String name, Model model){
// 将返回结果放入到model中
return name;
}

@RequestMapping("/modelAttributeTest")
public String test(Model model){
Map<String, Object> stringObjectMap = model.asMap();
return "id:"+stringObjectMap.get("id")+",name:"+stringObjectMap.get("name");

}

参数上

标记在方法的参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用

1
2
3
4
5
6
7
@RequestMapping("/modelAttributeTest2")
public String testParam(Model model,@ModelAttribute("pass") String pass){
Map<String, Object> stringObjectMap = model.asMap();
return "id:"+stringObjectMap.get("id")+",name:"+stringObjectMap.get("name")
+",pass:"+stringObjectMap.get("pass");

}