第五天:SpringMVC常用注解
(一)常用注解
1、@RequestParam
@RequestParam主要用于在SpringMVC后台控制层获取参数时,前端传入的参数和方法形参不一致时。
它支持三个属性:
value:默认属性,用于指定前端传入的参数名称
required:用于指定此参数是否必传
defaultValue:当参数为非必传参数且前端没有传入参数时,指定一个默认值。
public void demo1(
@RequestParam(value = "name",required = false,defaultValue = "sss") String username){
}
2、@RequestHeader
@RequestHeader主要用于从请求头中获取参数。它支持的属性跟@RequestParam一样
public String demo2(@RequestHeader("cookie") String cookie){}
3、 @CookieValue
@CookieValue 用于从cookie中取值。
public String demo3(@CookieValue("JSESSIONID") String jsessionid){}
4、 @RequestBody
@RequestBody用于接收前端传入的消息体,注意:只有POST请求才有消息体。
<form method="post" action="${pageContext.request.contextPath}/demo4">
<input type="text" name="name" value="zhangsan">
<input type="submit">
</form>
public String demo4(@RequestBody String body){
}
它的另一个主要用法是用于接收Ajax提交的异步数据。
<script type="application/javascript" language="JavaScript" src="js/jquery.js"></script>
<script>
$(function () {
$("#sub").click(function () {
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/demo6",
contentType:"application/json",
dataType:"json",
data:'{"name":"admin","id":"1"}',
success:function(data){}
});
});
})
</script>
public String demo6(@RequestBody String body){}
public String demo6(@RequestBody User user){}
5、 @ResponseBody
将我们的返回值异步响应为json数据
@ResponseBody
public List<Object> showInfo(){
}
面试题:@RequestBody和@ResponseBody都是用来干什么的?
6、 @SessionAttributes(value = { "a",”b”...})
可以将ModelMap中共享的内容存放到session域中
@SessionAttributes(value = { "a",”b”...})
public class AnotationController {
@RequestMapping("setSessionScope")
public String setSessionScope(Map map,Model model, ModelMap modelMap, HttpServletRequest request) {
map.put("a", "1");
model.addAttribute("b", "2");
modelMap.addAttribute("c", "3");
mav.addObject("d", "4");
request.setAttribute("e", "5");
return "success";
}
}:
7、@ModelAttribute()
向请求域中添加信息
(1)将这个注解放入到参数位置
a.从表单中获取普通的数据,同时将这个数据以表单控件的名称为key放入到了请求域中
b.表单的数据被封装成了一个自己定义pojo对象,注解中的key可以任意命名
@RequestMapping("a4")
public String a4(ModelMap modelMap, String name) {
return "success";
}
(2) 将这个注解放到方法上面
注解中的key,任意赋值.
作用: 为当前的controller 中所有的可以访问的方法提供公共数据.
@ModelAttribute("dogs")
public Object a6() {
return list;
}
8、 @RequestMapping
设置控制的访问路径
@RequestMapping(value= {"a1"},method= {RequestMethod.GET,RequestMethod.PUT})
9、 @PathVariable
RESTREST是一种软件架构风格,或者说是一种规范,其强调HTTP应当以资源为中心。 它规范了HTTP请求动作,使用四个词语分别表示对资源的CRUD操作: GET(获取)、POST(新建)、PUT(更新)、DELETE(删除)
@PathVariable就是用来从Rest风格的URL中获取参数的注解
//访问/demo7/Tom
@RequestMapping("/demo7/{name}")
public void demo7(@PathVariable String name){
}