文章目录
1.RequestParam注解
- 作用:把请求中的指定名称的参数传递给控制器中的形参赋值
- 属性1. value:请求参数中的名称 2. required:请求参数中是否必须提供此参数,默认值是true,必须提供
参数名字要和注解的值相同pname
<a href="anno/testRequestParam?pname=xxx">testRequestParam</a>
@Controller
@RequestMapping("/anno")
public class AnnotationController {
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam("pname") String name){
System.out.println(name);
return "success";
}
}
2.RequestBody注解
注意:这个注释 参数个数没对上出现415错误
- 作用:用于获取请求体的内容(注意:get方法不可以,get没有请求体)
name=xx&age=18
<form action="anno/testRequestBody" method="post">
uname;<input type="text" name="name"><br>
age;<input type="text" name="age"><br>
<input type="submit" value="submit">
</form>
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body){
System.out.println(body);
return "success";
}
3.PathVariable注解
- 作用:拥有绑定url中的占位符的。例如:url中有/anno/{id},{id}就是占位符
- 属性1. value:指定url中的占位符名称
不用id=1
<a href="anno/testPathVariable/1">testPathVariable</a><br>
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") String id){
System.out.println(id);
return "success";
}
4.RequestHeader
- 作用:获取指定请求头的值
- 属性1. value:请求头的key
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
<a href="anno/testRequestHeader">testRequestHeader</a><br>
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader("User-Agent") String header){
System.out.println(header);
return "success";
}
5.CookieValue注解
- 作用:用于获取指定cookie的key的值
- 属性1. value:cookie的key
<a href="anno/testCookieValue">testCookieValue</a><br>
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String cookie){
System.out.println(cookie);
return "success";
}
6.ModelAttribute注解
- 作用1. 出现在方法上:表示当前方法会在控制器方法执行前执行。2. 出现在参数上:获取指定的数据给参数赋值。
- 应用场景1. 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。
<form action="anno/testModelAttribute" method="post">
uname;<input type="text" name="name"><br>
age;<input type="text" name="age"><br>
<input type="submit" value="submit">
</form>
demo01
first
null
@RequestMapping("/testModelAttribute")
public String testModelAttribute( String cookie){
System.out.println(cookie);
return "success";
}
@ModelAttribute
public void first(){
System.out.println("first");
}
demo02和demo03需要
public class Person {
private String name;
private Integer age;
private String address;
public Person() {
}
public Person(String name, Integer age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
demo02
修饰的方法有返回值
Person{name=‘张三’, age=18, address=‘羊村’}
@RequestMapping("/testModelAttribute")
public String testModelAttribute(Person person){
System.out.println(person);
return "success";
}
@ModelAttribute
public Person first(String name,String age){
Person person = new Person();
person.setName(name);
person.setAge(Integer.valueOf(age));
person.setAddress("羊村");
return person;
}
demo03
修饰的方法无返回值
效果同demo02
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute("temp") Person person){
System.out.println(person);
return "success";
}
@ModelAttribute
public void first(String name, String age, Map<String, Person> map){
Person person = new Person();
person.setName(name);
person.setAge(Integer.valueOf(age));
person.setAddress("羊村");
map.put("temp",person);
}
7.SessionAttributes注解
1.requestScope
success.jsp
<body>
<h3>成功跳转</h3>
${requestScope.username}
${requestScope.password}
${requestScope.age}
</body>
index.jsp
<a href="anno/save">save</a><br>
<a href="anno/find">find</a><br>
<a href="anno/delete">delete</a><br>
@RequestMapping(path = "/save")
public String save(Model model) {
System.out.println("向request域中保存数据");
model.addAttribute("username", "xxx");
model.addAttribute("password", "123");
model.addAttribute("age", 18);
return "success";
}
success.jsp效果
2.sessionScope
加入如下即可
注意此时save方法将在requestScope和sessionScope同时存储
@SessionAttributes({"username","password","age"})
public class AnnotationController {
如需查找或修改
/**
* 从session中获取值 *
* @return
*/
@RequestMapping(path = "/find")
public String find(ModelMap modelMap) {
String username = (String) modelMap.get("username");
String password = (String) modelMap.get("password");
Integer age = (Integer) modelMap.get("age");
System.out.println(username + " : " + password + " : " + age);
return "success";
}
/**
* 清除值 * 需要执行两次
* 第一次删除requestScope
* 第二次删除sessionScope
* @return
*/
@RequestMapping(path = "/delete")
public String delete(SessionStatus status) {
// 清除当前处理器通过@SessionAttribute注册的session属性
status.setComplete();
return "success";
}