SpringMVC 常用註解
阿新 • • 發佈:2022-02-14
常用註解
-
RequestParam註解
-
作用:把請求中的指定名稱的引數傳遞給控制器中的形參賦值 (作用於形參列表)
-
屬性
- value:請求引數中的名稱
- required:請求引數中是否必須提供此引數,預設值是true,必須提供
@RequestMapping("/useRequestParam") public String useRequestParam(@RequestParam("name")String username, @RequestParam(value="age",required=false)Integer age){ System.out.println(username+","+age); return "success"; }
-
-
RequestBody註解
-
作用:用於獲取請求體的內容(注意:get方法不可以)
-
屬性
- required:是否必須有請求體,預設值是true
<form action="springmvc/useRequestBody" method="post"> 使用者名稱稱:<input type="text" name="username" ><br/> 使用者密碼:<input type="password" name="password" ><br/> 使用者年齡:<input type="text" name="age" ><br/> <input type="submit" value="儲存"> </form>
@RequestMapping("/useRequestBody") public String useRequestBody(@RequestBody(required=false) String body){ System.out.println(body); return "success"; }
-
-
PathVariable註解
-
作用:擁有繫結url中的佔位符的。例如:url中有/delete/{id},{id}就是佔位符
-
屬性
- value:指定url中的佔位符名稱
-
Restful風格的URL
- 請求路徑一樣,可以根據不同的請求方式去執行後臺的不同方法
- restful風格的URL優點
- 結構清晰
- 符合標準
- 易於理解
- 擴充套件方便
jsp 程式碼: <!-- PathVariable 註解 --> <a href="springmvc/usePathVariable/100">pathVariable 註解</a>
控制器程式碼: @RequestMapping("/usePathVariable/{id}") public String usePathVariable(@PathVariable("id") Integer id){ System.out.println(id); return "success"; }
-
-
RequestHeader註解
-
作用:獲取指定請求頭的值
-
屬性
- value:請求頭的名稱
ps:實際開發不怎麼用
-
-
CookieValue註解
- 作用:用於獲取指定cookie的名稱的值
- 屬性
- value:cookie的名稱
- required:是否必須有此 cookie。
@RequestMapping("/useCookieValue") public String useCookieValue(@CookieValue(value="JSESSIONID",required=false) String cookieValue){ System.out.println(cookieValue); return "success"; }
-
ModelAttribute註解
-
作用
- 出現在方法上:表示當前方法會在控制器方法執行前先執行。
- 出現在引數上:獲取指定的資料給引數賦值。
-
應用場景
當提交表單資料不是完整的實體資料時,保證沒有提交的欄位使用資料庫原來的資料。
控制器程式碼: 控制器中的程式碼: /** * 查詢資料庫中使用者資訊 * @param user */ @ModelAttribute public void showModel(String username,Map<String,User> //模擬去資料庫查詢 User user = findUserByName(username); System.out.println("執行了 showModel 方法"+user); map.put("abc",user); } /** * 模擬修改使用者方法 * @param user * @return */ @RequestMapping("/updateUser") public String testModelAttribute(@ModelAttribute("abc")User user) { System.out.println("控制器中處理請求的方法:修改使用者:"+user); return "success"; } /** * 模擬去資料庫查詢 * @param username * @return */ private User findUserByName(String username) { User user = new User(); user.setUsername(username); user.setAge(19); user.setPassword("123456")return user; }
-
-
SessionAttributes註解
-
作用:用於多次執行控制器方法間的引數共享
-
屬性
- value:指定存入屬性的名稱
- type:用於指定存入的資料型別。
jsp 中的程式碼: <!-- SessionAttribute 註解的使用 --> <a href="springmvc/testPut">存入 SessionAttribute</a> <hr/> <a href="springmvc/testGet">取出 SessionAttribute</a> <hr/> <a href="springmvc/testClean">清除 SessionAttribute</a>
控制器的程式碼: @RequestMapping("/springmvc") @SessionAttributes(value ={"username","password"},types={Integer.class}) public class SessionAttributeController { /** * 把資料存入 SessionAttribute * @param model * @return * Model 是 spring 提供的一個介面,該介面有一個實現類 ExtendedModelMap * 該類繼承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子類 */ @RequestMapping("/testPut") public String testPut(Model model){ model.addAttribute("username", "泰斯特"); model.addAttribute("password","123456"); model.addAttribute("age", 31); //跳轉之前將資料儲存到 username、password 和 age 中,因為註解@SessionAttribute 中有這幾個引數 return "success"; } @RequestMapping("/testGet") public String testGet(ModelMap model){ System.out.println(model.get("username")+";"+model.get("password")+";"+model.get("age")); return "success"; } @RequestMapping("/testClean") public String complete(SessionStatus sessionStatus){ sessionStatus.setComplete(); return "success"; } }
-