SpringMVC的注解
@RequestMapping
指定请求的路径
-
value
:用于指定请求的url。它和path属性的作用是一样的。 -
path
:路径 -
method
:请求的方法。RequestMethod.GET
,RequestMethod.POST
-
params
:指定请求中的参数。params = {"username"}
,请求参数必须有"accountName" -
headers
:用于指定限制请求消息头的条件。headers ={"Accept"}
表示请求头要有Accept参数
@RequestParam
把请求中的指定名称的参数传递给控制器中的形参赋值. testRequestParam(@RequestParam(name = "name",required = true) String username)
-
value:请求参数中的名称
-
required:请求参数中是否必须提供此参数,默认值是true,必须提供
@RequestBody注解
用于获取请求体的内容(注意:get方法不可以)saveUser(@RequestBody String body)
- required:是否必须有请求体,默认是true
@PathVariable
拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符.
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") String id){}
- value:指定url中的占位符名称
@RequestHeader
获取请求头中的参数
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader("Cookie") String header){
System.out.println(header);
return "success";
}
@CookieValue
用于获取指定cookie的名称的值
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String header){
System.out.println(header);
return "success";
}
@ModelAttribute
/*
ModelAttribute注解
作用
出现在方法上:表示当前方法会在控制器方法执行前执行。
出现在参数上:获取指定的数据给参数赋值。
应用场景
当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。
*/
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute("abc") User user){
System.out.println(user);
return "success";
}
/**
* ModelAttribute注解
* 会在RequestMapping注解执行之前执行
*/
@ModelAttribute
public void showUser(String uname, Map<String,User> map){
User user = new User();
user.setUname(uname);
user.setAge(18);
user.setDate(new Date());
map.put("abc",user);
System.out.println("showUser方法执行了。。。"+user);
}
@SessionAttributes
把值存入session中
@Controller
@RequestMapping("sessionAttribute")
@SessionAttributes(names = {"name"})//把name的值存到session域对象中一份
public class SessionAttributeController {
/**
* 存值
* @param model
* @return
*/
@RequestMapping("testPut")
public String testPut(Model model){
String name = "张三";
model.addAttribute("name",name);
System.out.println("put:" + name);
return "success";
}
/**
* 取值
* @param modelMap
* @return
*/
@RequestMapping("testGet")
public String testGet(ModelMap modelMap){
String name = (String) modelMap.get("name");
System.out.println("get:" + name);
return "success";
}
/**
* 删除
* @param status
* @return
*/
@RequestMapping("testDel")
public String testDel(SessionStatus status){
status.setComplete();
System.out.println("delete session");
return "success";
}
}
@ResponseBody
自动将返回的对象转换成 JSON 格式
@RequestMapping("/testAjax")
@ResponseBody
public User testAjax(@RequestBody User user){
System.out.println("testAjax方法执行了。。。。");
System.out.println(user);
User resUser = new User();
resUser.setUsername("zjw");
resUser.setPassword("654321");
resUser.setAge(19);
return resUser;
}
@RequestMapping(value = "/testJson2", produces = {"application/json;charset=UTF-8"})
表明当一个 HTTP 请求的 URL 匹配/testJson2
且客户端期望的响应内容为 JSON 格式时,这个方法将被触发。这个方法的输出将是一个 JSON 格式的字符串,且以 UTF-8 编码。
@ResponseBody
@RequestMapping(value = "/testJson2" , produces = {"application/json;charset=UTF-8"})
public String testJson2() throws JsonProcessingException {
System.out.println("testJson2方法执行了。。。。");
User resUser = new User();
resUser.setUsername("zzz");
resUser.setPassword("654321");
resUser.setAge(19);
System.out.println(resUser);
ObjectMapper objectMapper = new ObjectMapper();
String userJson = objectMapper.writeValueAsString(resUser);
return userJson;
}