搜尋
首頁Javajava教程springmvc常用5種註解是哪些?

springmvc常用5種註解是哪些?

Jun 22, 2020 pm 04:53 PM
springmvc註解

springmvc常用5種註解是哪些?

推薦教學:《java影片教學

#springmvc常用5種註解是哪些?

springmvc常用5種註解為:

#一、元件型註解:

1、@Component 在類別定義之前加上@ Component註解,他會被spring容器識別,並轉為bean。

2、@Repository 對Dao實作類別進行註解(特殊的@Component)

3、@Service 用於對業務邏輯層進行註解, (特殊的@Component)

4、@Controller 用於控制層註解, (特殊的@Component)

以上四種註解都是註解在類別上的,被註解的類別將被spring初始話為一個bean,然後統一管理。

二、請求和參數型註解:

1、#@RequestMapping:用於處理請求位址映射,可以作用於類別和方法上。

●value:定義request請求的對應位址

●method:定義地request址請求的方式,包括【GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. 】預設接受get請求,如果請求方式和定義的方式不一樣則請求無法成功。

●params:定義request請求中必須包含的參數值。

●headers:定義request請求中必須包含某些指定的請求頭,如:RequestMapping(value = "/something", headers = "content-type=text/*")說明請求中必須要包含"text/html", "text/plain"這中類型的Content-type頭,才是符合的請求。

●consumes:定義請求提交內容的類型。

●produces:指定傳回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才傳回

@RequestMapping(value="/requestTest.do",params = {"name=sdf"},headers = {"Accept-Encoding=gzip, deflate, br"},method = RequestMethod.GET)
 
   public String getIndex(){
 
     System.out.println("请求成功");
 
     return "index";
 
   }

上面程式碼表示請求的方式為GET請求,請求參數必須包含name=sdf這一參數,然後請求頭中必須有Accept-Encoding=gzip, deflate, br這個型別頭。

這樣透過註解就能對一個請求進行約束了。

2.@RequestParam:用於取得傳入參數的值

●value:參數的名稱

●required:定義該傳入參數是否必須,預設為true,(和@RequestMapping的params屬性有點類似)

@RequestMapping("/requestParams1.do")
 
  public String requestParams1(@RequestParam(required = false) String name){
 
    System.out.println("name = "+name);
 
    return "index";
 
  }
 
  @RequestMapping("/requestParams2.do")
 
  public String requestParams2(@RequestParam(value = "name",required = false) String names){
 
    System.out.println("name = "+names);
 
    return "index";
 
  }

兩種請入參方式是一樣的,顯示聲明value的名稱時,入參參數名稱和value一樣,沒有顯示宣告的話,像第一種方式宣告的,入參參數名和函數參數變數名一樣。

3.@PathViriable:用於定義路徑參數值

●value:參數的名稱

##●required:定義傳入參數是否為必須值

@RequestMapping("/{myname}/pathVariable2.do")  public String pathVariable2(@PathVariable(value = "myname") String name){
 
    System.out.println("myname = "+name);    return "index";
 
  }

這個路徑宣告了{myname}作為路徑參數,那麼這段路徑將為任意值,@PathVariable將可以根據value取得路徑的值。

4.@ResponseBody:作用於方法上,可以將整個傳回結果以某種格式傳回,如json或xml格式。

@RequestMapping("/{myname}/pathVariable2.do")
 
   @ResponseBody
 
   public String pathVariable2(@PathVariable(value = "myname") String name){
 
     System.out.println("myname = "+name);
 
     return "index";
 
   }

它回傳的不是一個頁面,而是把字串「index」直接在頁面印出來了,這其實和如下程式碼時類似的。

PrintWriter out = resp.getWriter();
 
 out.print("index");
 
 out.flush();

5、##@CookieValue:用於取得請求的Cookie值

@RequestMapping("/requestParams.do")
 
   public String requestParams(@CookieValue("JSESSIONID") String cookie){
 
     return "index";
 
   }


6、@ModelAttribute:

用於把參數儲存到model中,可以註解方法或參數,註解在方法上的時候,該方法將在處理器方法執行之前執行,然後把傳回的物件存放在session(前提時要有@SessionAttributes註解) 或模型屬性中,@ModelAttribute(“attributeName”) 在標記方法的時候指定,若未指定,則使用傳回類型的類別名稱(首字母小寫)作為屬性名稱。

@ModelAttribute("user")
 
  public UserEntity getUser(){
 
    UserEntity userEntityr = new UserEntity();
 
    userEntityr.setUsername("asdf");
 
    return userEntityr;
 
  }
 
  
 
  @RequestMapping("/modelTest.do")
 
  public String getUsers(@ModelAttribute("user") UserEntity user){
 
    System.out.println(user.getUsername());
 
    return "/index";
 
  }

如上程式碼中,使用了@ModelAttribute("user")註解,在執行控制器前執行,然後將產生一個名稱為user的model數據,在控制器中我們透過註解在參數上的@ModelAttribute取得參數,然後將model應用到控制器中,在jsp頁面中我們同樣可以使用它,

<body>   ${user.username} </body>

7、@SessionAttributes

#預設情況下Spring MVC將模型中的資料儲存到request域。當一個請求結束後,資料就失效了。如果要跨頁面使用。那就需要使用到session。而@SessionAttributes註解就可以使得模型中的資料儲存一份到session域中。配合@ModelAttribute("user")使用的時候,會將對應的名稱的model值存到session中,

@Controller
 
@RequestMapping("/test")
 
@SessionAttributes(value = {"user","test1"})
 
public class LoginController{
 
  @ModelAttribute("user")
 
  public UserEntity getUser(){
 
    UserEntity userEntityr = new UserEntity();
 
    userEntityr.setUsername("asdf");
 
    return userEntityr;
 
  }
 
  
 
  @RequestMapping("/modelTest.do")
 
  public String getUsers(@ModelAttribute("user") UserEntity user ,HttpSession session){
 
    System.out.println(user.getUsername());
 
    System.out.println(session.getAttribute("user"));
 
    return "/index";
 
  }
 
}

結合上一個例子的代碼,加了@SessionAttributes註解,然後請求了兩次,第一次session中不存在屬性名為user的值,第二次請求的時候發現session中又有了,這是因為,這是因為第一次請求時,model資料還未儲存到session中又有了,這是因為,這是因為第一次請求時,model資料還未儲存到session中請求結束回傳的時候才保存,在第二次請求的時候已經可以取得上一次的model了

注意:@ModelAttribute("user") UserEntity user取得註解內容的時候,會先查詢session中是否有對應的屬性值,沒有才去查詢Model。

推薦相關文章:《java開發教學

以上是springmvc常用5種註解是哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。