1、@RequestParam
<a href="anno/testRequestParam?name=张三">RequestParam</a>
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(name="name") String username){
System.out.println("执行了...");
System.out.println(username);
return "success";
}
@RequestParam
注解配合 @RequestMapping
一起使用,可以将请求的参数同处理方法的参数绑定在一起。
@RequestParam
的属性值有:
(1)name,value
这两个作用相同,当请求参数的名字和方法形参的名字相同时,且没有其他属性时,可以省略@RequestParam
注解,直接获取,放请求中的参数名字和形参不同时,要用该注解来获得
(2)required
用于指定该参数是否是必须的,默认值(不写)为true,请求中必须有该参数,否则报400,BadRequest
(3)defaultValue
用于指定一个默认值,当请求中没有指定名为name的参数的时候,形参username的值就为该默认值
2、@RequestBody
@RequestBody
主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
更多的详细使用方法:https://blog.csdn.net/justry_deng/article/details/80972817
<form action="anno/testRequestBody" method="post">
用户姓名:<input type="text" name="username" /><br/>
用户年龄:<input type="text" name="age" /><br/>
<input type="submit" value="提交" />
</form>
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body){
System.out.println("执行了...");
System.out.println(body);
return "success";
}
执行了...
username=jack&age=34
3、@PathVariable
<a href="anno/testPathVariable/10">testPathVariable</a>
@RequestMapping(value="/testPathVariable/{sid}")
public String testPathVariable(@PathVariable(name="sid") String id){
System.out.println("执行了...");
System.out.println(id);
return "success";
}
@PathVariable
接收请求路径中占位符的值,其属性值有value,name,required,作用同上
可以同时获取多个占位符的值,例如:
值得注意的是,每个占位符/{}/{}
中的值,必须和@PathVariable
name或者value的值相同
@RequestMapping(value="/testPathVariable/{id}/{name}")
public String testPathVariable(@PathVariable(name="id") String id, @PathVariable(name="name") String id){
System.out.println("执行了...");
System.out.println(id);
return "success";
}
4、@CookieValue
@CookieValue
注解用于将请求的cookie数据映射到功能处理方法的参数上
同样有value,name,required,defaultValue四个属性
@RequestMapping(value="/testCookieValue")
public String testCookieValue(@CookieValue(value="JSESSIONID") String cookieValue){
System.out.println("执行了...");
System.out.println(cookieValue);
return "success";
}
5、@SessionAttributes
<a href="anno/testSessionAttributes">testSessionAttributes</a>
<a href="anno/getSessionAttributes">getSessionAttributes</a>
<a href="anno/delSessionAttributes">delSessionAttributes</a>
@Controller
@RequestMapping("/anno")
@SessionAttributes(value={"msg"}) // 把msg存入到session域对中
public class AnnoController {
@RequestMapping(value="/testSessionAttributes")
public String testSessionAttributes(Model model){
System.out.println("testSessionAttributes...");
// 底层会存储到request域对象中
model.addAttribute("msg","testSessionAttributes");
return "success";
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>入门成功</h3>
${ msg }
${sessionScope}
</body>
</html>
发送testSessionAttributes请求
发送getSessionAttributes请求
@RequestMapping(value="/getSessionAttributes")
public String getSessionAttributes(ModelMap modelMap){
System.out.println("getSessionAttributes...");
String msg = (String) modelMap.get("msg");
System.out.println(msg);
return "success";
}
getSessionAttributes...
testSessionAttributes
发送delSessionAttributes请求
@RequestMapping(value="/delSessionAttributes")
public String delSessionAttributes(SessionStatus status){
status.setComplete();//删除session域中的存入的数据
return "success";
}
再次执行getSessionAttributes()
控制台打印:
getSessionAttributes...
null