當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringMVC学习笔记(二)常用注解
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC学习笔记(二)常用注解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SpringMVC學習筆記(二)常用注解
1.RequestParam
- 作用:
- 把請求中指定名稱的參數給控制器中的形參賦值。
- 屬性:
- value:請求參數中的名稱。
- required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯。
使用示例
jsp 中的代碼: <!-- requestParams 注解的使用 --> <a href="springmvc/useRequestParam?name=test">requestParam 注解</a>控制器中的代碼: /** * requestParams 注解的使用 * @param username * @return */ @RequestMapping("/useRequestParam") public String useRequestParam(@RequestParam("name")String username,@RequestParam(value="age",required=false)Integer age){System.out.println(username+","+age);return "success"; }運行結果
2.RequestBody
- 作用:
- 用于獲取請求體內容。直接使用得到是 key=value&key=value...結構的數據。
- get 請求方式不適用。
- 屬性:
- required:是否必須有請求體。默認值是:true。當取值為 true 時,get 請求方式會報錯。如果取值為 false,get 請求得到是 null。
使用示例
post 請求 jsp 代碼: <!-- request body 注解 --> <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>get 請求 jsp 代碼: <a href="springmvc/useRequestBody?body=test">requestBody 注解 get 請求</a>控制器代碼: /** * RequestBody 注解 * @param user * @return */ @RequestMapping("/useRequestBody") public String useRequestBody(@RequestBody(required=false) String body){System.out.println(body);return "success"; }post 請求運行結果:
get 請求運行結果:
3.PathVaribale
- 作用:
- 用于綁定 url 中的占位符。例如:請求 url 中 /delete/{id},這個{id}就是 url 占位符。url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 風格 URL 的一個重要標志。
- 屬性:
- value:用于指定 url 中占位符名稱。
- required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯。
使用示例
jsp 代碼: <!-- PathVariable 注解 --> <a href="springmvc/usePathVariable/100">pathVariable 注解</a>控制器中的代碼: /** * PathVariable 注解 * @param user * @return */ @RequestMapping("/usePathVariable/{id}") public String usePathVariable(@PathVariable("id") Integer id){System.out.println(id);return "success"; }運行結果
4.RequestHeader
- 作用:
- 用于獲取請求消息頭。
- 屬性:
- value:提供消息頭名稱。
- required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯。
使用示例
jsp 代碼: <!-- RequestHeader 注解 --> <a href="springmvc/useRequestHeader">獲取請求消息頭</a>控制器中的代碼: /** * RequestHeader 注解 * @param user * @return */ @RequestMapping("/useRequestHeader") public String useRequestHeader(@RequestHeader(value="Accept-Language", required=false)String requestHeader){System.out.println(requestHeader);return "success"; }運行結果
5.CookieValue
- 作用:
- 用于把指定 cookie 名稱的值傳入控制器方法參數。
- 屬性:
- value:指定 cookie 的名稱。
- required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯。
使用示例
jsp 代碼: <!-- CookieValue 注解 --> <a href="springmvc/useCookieValue">綁定 cookie 的值</a>控制器中的代碼: /** * Cookie 注解注解 * @param user * @return */ @RequestMapping("/useCookieValue") public String useCookieValue(@CookieValue(value="JSESSIONID",required=false) String cookieValue){System.out.println(cookieValue);return "success"; }運行結果
6.ModelAttribute
- 作用:
- 該注解是 SpringMVC4.3 版本以后新加入的。它可以用于修飾方法和參數。
- 出現在方法上,表示當前方法會在控制器的方法執行之前,先執行。它可以修飾沒有返回值的方法,也可以修飾有具體返回值的方法。
- 出現在參數上,獲取指定的數據給參數賦值。
- 屬性:
- value:用于獲取數據的 key。key 可以是 POJO 的屬性名稱,也可以是 map 結構的 key。
- 應用場景:
- 當表單提交數據不是完整的實體類數據時,保證沒有提交數據的字段使用數據庫對象原來的數據。
- 例如:我們在編輯一個用戶時,用戶有一個創建信息字段,該字段的值是不允許被修改的。在提交表單數據是肯定沒有此字段的內容,一旦更新會把該字段內容置為 null,此時就可以使用此注解解決問題。
基于 POJO 屬性使用示例
jsp 代碼: <!-- ModelAttribute 注解的基本使用 --> <a href="springmvc/testModelAttribute?username=test">測試 modelattribute</a>控制器中的代碼: /** * 被 ModelAttribute 修飾的方法 * @param user */ @ModelAttribute public void showModel(User user) {System.out.println("執行了 showModel 方法"+user.getUsername()); } /** * 接收請求的方法 * @param user * @return */ @RequestMapping("/testModelAttribute") public String testModelAttribute(User user) {System.out.println("執行了控制器的方法"+user.getUsername());return "success"; }運行結果
基于 Map 的應用場景示例 1 :ModelAttribute
jsp 代碼: 需求: 修改用戶信息,要求用戶的密碼不能修改 <!-- 修改用戶信息 --> <form action="springmvc/updateUser" method="post"> 用戶名稱:<input type="text" name="username" ><br/> 用戶年齡:<input type="text" name="age" ><br/> <input type="submit" value=" 保存 "> </form>控制器中的代碼: /** * 查詢數據庫中用戶信息 * @param user */ @ModelAttribute public User showModel(String username) {//模擬去數據庫查詢User abc = findUserByName(username);System.out.println("執行了 showModel 方法"+abc);return abc; } /** * 模擬修改用戶方法 * @param user * @return */ @RequestMapping("/updateUser") public String testModelAttribute(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; }運行結果
基于 Map 的應用場景示例 1 :ModelAttribute 修飾方法 不帶返回值
需求: 修改用戶信息,要求用戶的密碼不能修改 jsp 代碼: <!-- 修改用戶信息 --> <form action="springmvc/updateUser" method="post"> 用戶名稱:<input type="text" name="username" ><br/> 用戶年齡:<input type="text" name="age" ><br/> <input type="submit" value=" 保存 "> </form>控制器中的代碼: /** * 查詢數據庫中用戶信息 * @param user */ @ModelAttribute public void showModel(String username,Map<String,User> map) { //模擬去數據庫查詢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; }運行結果
7.SessionAttribute
- 作用:
- 用于多次執行控制器方法間的參數共享。
- 屬性:
- value:用于指定存入的屬性名稱。
- type:用于指定存入的數據類型。
使用示例
jsp 代碼: <!-- SessionAttribute 注解的使用 --> <a href="springmvc/testPut">存入 SessionAttribute</a> <hr/> <a href="springmvc/testGet">取出 SessionAttribute</a> <hr/> <a href="springmvc/testClean">清除 SessionAttribute</a>控制器中的代碼: /** * SessionAttribute 注解的使用 * @author 黑馬程序員 * @Company http://www.ithiema.com * @Version 1.0 */ @Controller("sessionAttributeController") @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";}運行結果
轉載于:https://www.cnblogs.com/yangweiguo123/p/11286606.html
總結
以上是生活随笔為你收集整理的SpringMVC学习笔记(二)常用注解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用深度学习方法进行情感分析以及在海航舆
- 下一篇: 关于vue.js element ui