SpringMVC常用注解(案例講解)

      網友投稿 698 2022-05-30

      SpringMVC中常用注解

      RequestParam

      RequestBody

      PathVaribale

      先了解下REST 風格 URL

      RequestHeader

      CookieValue

      ModelAttribute

      修飾的方法有返回值

      修飾的方法沒有返回值

      SessionAttribute

      RequestParam

      說明

      作用:

      把請求中指定名稱的參數給控制器中的形參賦值。

      屬性:

      value:請求參數中的名稱。

      required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯。

      代碼示例

      jsp代碼:

      <%-- Created by IntelliJ IDEA. User: Keafmd Date: 2021/1/25 Time: 10:48 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 常用注解 RequestParam

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      控制器代碼:

      package com.Keafmd.controller; import com.Keafmd.domain.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.Date; import java.util.Map; /** * Keafmd * * @ClassName: AnnoConteoller * @Description: 注解的控制器 * @author: 牛哄哄的柯南 * @date: 2021-01-25 10:50 */ @Controller @RequestMapping("/anno") public class AnnoConteoller { /** * requestParams 注解的使用 * @param username * @return */ @RequestMapping("/testRequestParam") public String testRequestParam(@RequestParam(value="name") String username){ // @RequestParam(value="name") 必須傳name,required:請求參數中是否必須提供此參數,默認值是true,必須提供 // 獲得當前類名 String clazz = Thread.currentThread().getStackTrace()[1].getClassName(); // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+clazz+" - "+method); System.out.println("username:"+username); return "success"; } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      輸出結果:

      執行了:com.Keafmd.controller.AnnoConteoller - testRequestParam username:keafmd

      1

      2

      這樣我們在href中傳入name就會賦值給username。

      RequestBody

      說明

      作用:

      用于獲取請求體內容。直接使用得到是 key=value&key=value…結構的數據。

      get 請求方式不適用。

      屬性:

      required:是否必須有請求體。默認值是:true。當取值為 true 時,get 請求方式會報錯。如果取值為 false,get 請求得到是 null。

      代碼示例

      jsp代碼:

      用戶姓名:
      用戶年齡:
      用戶生日:

      1

      2

      3

      4

      5

      6

      控制器代碼:

      /** * 獲取到請求體的內容 RequestBody */ @RequestMapping("/testRequestBody") public String testRequestBody(@RequestBody String body){ String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); System.out.println("body:"+body); return "success"; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      輸出結果:

      執行了: testRequestBody body:uname=Keafmd&age=21&birthday=2000-01-01

      1

      2

      PathVaribale

      先了解下REST 風格 URL

      REST(英文:Representational State Transfer,簡稱 REST)描述了一個架構樣式的網絡系統,比如 web 應用程序。值得注意的是 REST 并沒有一個明確的標準,而更像是一種設計的風格。

      說明

      作用:

      用于綁定 url 中的占位符。例如:請求 url 中 /delete/{id},這個{id}就是 url 占位符。

      url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 風格 URL 的一個重要標志。

      屬性:

      value:用于指定 url 中占位符名稱。

      required:是否必須提供占位符。

      代碼示例

      jsp代碼:

      testPathVariable

      1

      控制器代碼:

      /** * PathVariable * @param id * @return */ @RequestMapping("/testPathVariable/{sid}") public String testPathVariable(@PathVariable(name="sid") String id){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); System.out.println("id:"+id); return "success"; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      輸出結果:

      執行了: testPathVariable id:10

      1

      2

      RequestHeader

      說明

      作用:

      用于獲取請求消息頭。

      屬性:

      value:提供消息頭名稱

      required:是否必須有此消息頭

      提示:

      在實際開發中一般不常用

      代碼示例

      jsp代碼:

      testRequestHeader

      1

      控制器代碼:

      /** * RequestHeader獲取請求頭的值 不常用 * @param head * @return */ @RequestMapping("/testRequestHeader") public String testRequestHeader(@RequestHeader(value = "Accept") String head){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); System.out.println("head:"+head); return "success"; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      輸出結果:

      執行了: testRequestHeader head:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

      1

      2

      CookieValue

      說明

      作用:

      用于把指定 cookie 名稱的值傳入控制器方法參數。

      屬性:

      value:指定 cookie 的名稱。

      required:是否必須有此 cookie。

      代碼示例

      jsp代碼:

      testCookValue

      1

      控制器代碼:

      /** * CookieValue 不常用 * @param cookievalue * @return */ @RequestMapping("/testCookieValue") public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookievalue){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); System.out.println("cookievalue:"+cookievalue); return "success"; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      輸出結果:

      執行了: testCookieValue cookievalue:DCCFE2C1F975AC04D4F55973ADA5C89C

      1

      2

      ModelAttribute

      說明

      作用:

      該注解是 SpringMVC4.3 版本以后新加入的。它可以用于修飾方法和參數。

      出現在方法上,表示

      SpringMVC中常用注解(案例講解)

      當前方法會在控制器的方法執行之前,先執行

      。它可以修飾沒有返回值的方法,也可以修飾有具體返回值的方法。

      出現在參數上,獲取指定的數據給參數賦值。

      屬性:

      value:用于獲取數據的 key。key 可以是 POJO 的屬性名稱,也可以是 map 結構的 key。

      應用場景:

      當表單提交數據不是完整的實體類數據時,保證沒有提交數據的字段使用數據庫對象原來的數據。

      代碼示例

      jsp代碼:

      用戶姓名:
      用戶年齡:

      1

      2

      3

      4

      5

      修飾的方法有返回值

      控制器代碼:

      /** * ModelAttribute * @return */ @RequestMapping("/testModelAttribute") public String testModelAttribute(User user){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); System.out.println(user); return "success"; } //有返回值 @ModelAttribute public User showUser(String uname){ String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); User user = new User(); user.setUname(uname); user.setAge(20); user.setBirthday(new Date()); return user; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      輸出結果:

      執行了: testModelAttribute User{uname='牛哄哄的柯南', age=21, birthday=Mon Jan 25 19:34:46 CST 2021}

      1

      2

      修飾的方法沒有返回值

      注意

      :沒有返回值的時候利用Map把參數傳回去,testModelAttribute的參數User前加上@ModelAttribute(“abc”)接收Map傳回的數據。

      控制器代碼:

      /** * ModelAttribute * @return */ @RequestMapping("/testModelAttribute") public String testModelAttribute(@ModelAttribute("abc")User user){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); System.out.println(user); return "success"; } //無返回值 @ModelAttribute public void showUser(String uname, Map map){ String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); User user = new User(); user.setUname(uname); user.setAge(20); user.setBirthday(new Date()); map.put("abc",user); }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      輸出結果:

      執行了: testModelAttribute User{uname='牛哄哄的柯南', age=21, birthday=Mon Jan 25 19:32:20 CST 2021}

      1

      2

      SessionAttribute

      說明

      作用:

      用于多次執行控制器方法間的參數共享。

      屬性:

      value:用于指定存入的屬性名稱

      type:用于指定存入的數據類型。

      代碼示例

      jsp代碼:

      存入SessionAttributes
      獲取SessionAttributes
      清除SessionAttributes

      1

      2

      3

      控制器代碼:

      注意:需要在類的上面添加@SessionAttributes(value = {"msg"}) //把msg=牛哄哄的柯南存到session域中。

      package com.Keafmd.controller; import com.Keafmd.domain.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.Date; import java.util.Map; /** * Keafmd * * @ClassName: AnnoConteoller * @Description: 注解的控制器 * @author: 牛哄哄的柯南 * @date: 2021-01-25 10:50 */ @Controller @RequestMapping("/anno") @SessionAttributes(value = {"msg"}) //把msg=牛哄哄的柯南存到session域中 public class AnnoConteoller { /** * SessionAttributes注解,存入msg * @return */ @RequestMapping("/testSessionAttributes") public String testSessionAttributes(Model model){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); //底層會存到Request域中 model.addAttribute("msg","牛哄哄的柯南"); return "success"; } /** * 獲取 * @param modelMap * @return */ @RequestMapping("/getSessionAttributes") public String getSessionAttributes(ModelMap modelMap){ // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); //從session域中取出來 String msg = (String)modelMap.get("msg"); System.out.println(msg); return "success"; } /** * 清除 * @param sessionStatus * @return */ @RequestMapping("/delSessionAttributes") public String delSessionAttributes(SessionStatus sessionStatus) { // 獲得當前方法名 String method = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("執行了:"+" "+method); //從session域中清除 sessionStatus.setComplete(); return "success"; } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      依次點擊存入->獲取->清除->獲取。

      輸出結果:

      執行了: testSessionAttributes 執行了: getSessionAttributes 牛哄哄的柯南 執行了: delSessionAttributes 執行了: getSessionAttributes null

      1

      2

      3

      4

      5

      6

      在success.jsp可以通過${msg}和${sessionScope}獲取到在類上面把msg存入到session域的內容:牛哄哄的柯南和{msg=牛哄哄的柯南}

      在success.jsp可以通過${requestScope}獲取到在testSessionAttributes方法中存入Request域中的內容。

      以上就是SpringMVC中常用注解(案例講解)的全部內容。

      看完如果對你有幫助,感謝支持!

      如果你是電腦端的話,看到右下角的 “

      一鍵三連

      ” 了嗎,沒錯點它[哈哈]

      加油!

      共同努力!

      Keafmd

      JSP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格中跨表數據有效性怎么設置和引用
      下一篇:在物聯網設備,邊緣和云上分配機器學習算法
      相關文章
      久久亚洲国产精品123区| 久久亚洲精品无码观看不卡| 亚洲va在线va天堂va四虎 | 亚洲AV无码成H人在线观看| 亚洲熟妇AV乱码在线观看| 亚洲一欧洲中文字幕在线| 亚洲一卡二卡三卡| 91亚洲国产成人久久精品 | 亚洲国产成人久久笫一页| 亚洲成a人无码av波多野按摩| 青草久久精品亚洲综合专区| 精品久久久久久久久亚洲偷窥女厕| 亚洲精品久久无码av片俺去也| 亚洲精品无码国产片| 亚洲成a∨人片在无码2023 | 亚洲AV第一成肉网| 国产亚洲视频在线| 久久精品国产亚洲精品| 亚洲色欲色欲www在线丝| 亚洲国产精品无码久久一线| 亚洲精品高清视频| 亚洲欧洲国产综合| 亚洲国产日韩视频观看| 久久亚洲精品11p| 亚洲国产一级在线观看 | 国产乱辈通伦影片在线播放亚洲 | 亚洲综合伊人制服丝袜美腿| 国产亚洲中文日本不卡二区| 亚洲欧洲免费无码| 亚洲成av人片天堂网老年人| 国产AV无码专区亚洲AV手机麻豆| 国产亚洲人成网站在线观看不卡| 亚洲国产香蕉碰碰人人| 亚洲国产精品成人精品小说| 亚洲性无码一区二区三区| 最新亚洲人成无码网www电影| 中文字幕亚洲专区| 亚洲AV第一页国产精品| 亚洲成a人片在线网站| 亚洲人成欧美中文字幕| 亚洲精品国产高清不卡在线|