1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值
2. 属性
1. value:请求参数中的名称
2. required:请求参数中是否必须提供此参数,默认值是true
3. 代码如下
/**
* 测试RequestParam注解,默认必须传参数,可以使用required=false配置可以不传参
* 参数的名字必须为value的值
* @param name
* @return
*/
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value="username",required=false)String name) {
System.out.println("执行了。。。");
System.out.println(name);
return "success";
}
}
1. 作用:用于获取请求体的内容(注意:get方法不可以)
2. 属性
1. required:是否必须有请求体,默认值是true
3. 代码如下
/**
* 获取请求体的内容
* @return
*/
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body) {
System.out.println("执行了。。。");
System.out.println(body); //username=admin&password=123456&money=6666
return "success";
}
/**
* 获取请求体的内容
* @return
*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable(value = "id") String id) {
System.out.println("执行了。。。");
System.out.println(id);
return "success";
}
1. 作用:获取指定请求头的值
2. 属性
1. value:请求头的名称
3. 代码如下
/**
* 获取请求头的值
* @param header
* @return
*/
@RequestMapping("/testRequestHeader")
public String sayHello(@RequestHeader(value="Accept") String header) {
System.out.println("执行了。。。");
System.out.println(header);
return "success";
}
1. 作用:用于获取指定cookie的名称的值
2. 属性
1. value:cookie的名称
3. 代码
/**
* 测试注解testCookieValue
* @param cookieValue
* @return
*/
@RequestMapping("/testCookieValue")
public String CookieValue(@CookieValue(value = "JSESSIONID") String cookieValue) {
System.out.println("执行了。。。");
System.out.println(cookieValue);
return "success";
}
1. 作用
1. 出现在方法上:表示当前方法会在控制器方法执行前线执行。
2. 出现在参数上:获取指定的数据给参数赋值。
2. 应用场景
1. 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。
3. 具体的代码
* 修饰的方法有返回值
/**
* 测试ModelAttribute注解
* 后执行
* @param
* @return
*/
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user) {
System.out.println("testModelAttribute执行了。。。");
System.out.println(user);
return "success";
}
/*
* 该方法先执行
* 然后再执行后执行的方法
*/
@ModelAttribute
public User sayHello(String username){
System.out.println("sayHello执行了。。。");
User user = new User();
user.setUname(username);
user.setAge(666);
return user;
}
/**
* 测试ModelAttribute注解
* 后执行
* @param
* @return
*/
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute(value="abc") User user) {
System.out.println("testModelAttribute执行了。。。");
System.out.println(user);
return "success";
}
/*
* 该方法先执行
* 然后再执行后执行的方法
*/
@ModelAttribute
public void sayHello(String username, Map<String, User> map){
System.out.println("sayHello执行了。。。");
User user = new User();
user.setUname(username);
user.setAge(666);
map.put("abc", user);
// return user;
}
1. 作用:用于多次执行控制器方法间的参数共享
2. 属性
1. value:指定存入属性的名称
3. 代码如下
/**
* 测试注解SessionAttributes
* @param
* @return
*/
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Model model) {
System.out.println("testSessionAttributes执行了。。。");
model.addAttribute("msg","model存的session");
return "success";
}
/**
* 测试注解SessionAttributes
* 从session域中获取值
* @param
* @return
*/
@RequestMapping("/getSessionAttributes")
public String getSessionAttributes(ModelMap modelMap) {
System.out.println("getSessionAttributes。。。");
String msg = (String)modelMap.get("msg");
System.out.println(msg);
return "success";
}
/**
* 测试注解SessionAttributes
* 清除session域中获取值
* @param
* @return
*/
@RequestMapping("/delSessionAttributes")
public String delSessionAttributes(SessionStatus status) {
System.out.println("delSessionAttributes执行了。。。");
status.setComplete();
return "success";
}
package cn.kt.controller;/*
*Created by tao on 2020-04-09.
*/
import cn.kt.domian.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.support.SessionStatus;
import java.util.Map;
@Controller
@SessionAttributes(value = {"msg"}) //把msg存入到了session域中
@RequestMapping("/anno")
public class AnnoController {
/**
* 测试RequestParam注解,默认必须传参数,可以使用required=false配置可以不传参
* 参数的名字必须为value的值
*
* @param name
* @return
*/
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value = "username", required = false) String name) {
System.out.println("执行了。。。");
System.out.println(name);
return "success";
}
/**
* 获取请求体的内容
*
* @return
*/
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body) {
System.out.println("执行了。。。");
System.out.println(body); //username=admin&password=123456&money=6666
return "success";
}
/**
* 获取请求体的内容
*
* @return
*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable(value = "id") String id) {
System.out.println("执行了。。。");
System.out.println(id);
return "success";
}
/**
* 获取请求头的值
*
* @param header
* @return
*/
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value = "Accept") String header) {
System.out.println("执行了。。。");
System.out.println(header);
return "success";
}
/**
* 测试注解testCookieValue
* @param cookieValue
* @return
*/
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue) {
System.out.println("执行了。。。");
System.out.println(cookieValue);
return "success";
}
/**
* 测试ModelAttribute注解
* 后执行
* @param
* @return
*/
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute(value="abc") User user) {
System.out.println("testModelAttribute执行了。。。");
System.out.println(user);
return "success";
}
/*
* 该方法先执行
* 然后再执行后执行的方法
*/
@ModelAttribute
public void sayHello(String username, Map<String, User> map){
System.out.println("sayHello执行了。。。");
User user = new User();
user.setUname(username);
user.setAge(666);
map.put("abc", user);
// return user;
}
/**
* 测试注解SessionAttributes
* @param
* @return
*/
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Model model) {
System.out.println("testSessionAttributes执行了。。。");
model.addAttribute("msg","model存的session");
return "success";
}
/**
* 测试注解SessionAttributes
* 从session域中获取值
* @param
* @return
*/
@RequestMapping("/getSessionAttributes")
public String getSessionAttributes(ModelMap modelMap) {
System.out.println("getSessionAttributes。。。");
String msg = (String)modelMap.get("msg");
System.out.println(msg);
return "success";
}
/**
* 测试注解SessionAttributes
* 清除session域中获取值
* @param
* @return
*/
@RequestMapping("/delSessionAttributes")
public String delSessionAttributes(SessionStatus status) {
System.out.println("delSessionAttributes执行了。。。");
status.setComplete();
return "success";
}
}
<%--
Created by IntelliJ IDEA.
User: tao
Date: 2020-04-09
Time: 0:22
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h4>常用注解</h4>
<a href="/anno/testRequestParam" rel="nofollow noopener" >testRequestParam</a><br>
<form action="/anno/testRequestBody" method="post">
姓名:<input type="text" name="username"></br>
密码:<input type="password" name="password"> <br>
金额:<input type="text" name="money"></br>
<input type="submit" value="提交">
</form>
<br>
<a href="/anno/testPathVariable/10" rel="nofollow noopener" >testPathVariable(restful风格)</a><br>
<a href="/anno/testRequestHeader" rel="nofollow noopener" >testRequestHeader测试</a><br>
<a href="/anno/testCookieValue" rel="nofollow noopener" >CookieValue测试</a><br>
<form action="/anno/testModelAttribute" method="post">
姓名:<input type="text" name="username"></br>
<input type="submit" value="提交">
</form>
<a href="/anno/testSessionAttributes" rel="nofollow noopener" >SessionAttributes注解测试</a><br>
<a href="/anno/getSessionAttributes" rel="nofollow noopener" >SgetSessionAttributes注解测试</a><br>
<a href="/anno/delSessionAttributes" rel="nofollow noopener" >delSessionAttributes注解测试</a><br>
</body>
</html>
package cn.kt.domian;/*
*Created by tao on 2020-04-08.
*/
public class User {
private String uname;
private int age;
@Override
public String toString() {
return "User{" +
"uname='" + uname + '\'' +
", age=" + age +
'}';
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}