日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

在SpringBoot項目中這幾個注解你們還用嗎?

來源: 責編: 時間:2024-07-03 17:14:35 185觀看
導讀環境:SpringBoot3.3.01. 簡介在SpringBoot應用開發中,傳統的請求屬性處理方式如@ModelAttribute,@SessionAttribute,@RequestAttribute以及RedirectAttributes似乎用的越來越少了,但是在一些特定場景下它們發揮著不可或缺

環境:SpringBoot3.3.0Edt28資訊網——每日最新資訊28at.com

1. 簡介

在SpringBoot應用開發中,傳統的請求屬性處理方式如@ModelAttribute,@SessionAttribute,@RequestAttribute以及RedirectAttributes似乎用的越來越少了,但是在一些特定場景下它們發揮著不可或缺的作用尤其是當涉及到表單提交、會話狀態管理和重定向屬性傳遞時。Edt28資訊網——每日最新資訊28at.com

  • @ModelAttribute:主要用于綁定請求中的數據到方法參數或模型屬性上,常用于處理表單提交,使得復雜的對象綁定變得簡單直接。它允許你預處理傳入的數據,或者初始化一個命令對象供表單使用。
  • @SessionAttribute:用于從HttpSession中存取屬性,這對于存儲非敏感的用戶信息或臨時數據非常有用,比如用戶設置或購物車信息。
  • @RequestAttribute:處理單一請求上下文,允許你在控制器間通過HttpServletRequest傳遞自定義屬性,適合傳遞那些不需要跨請求持久化的數據。
  • RedirectAttributes:是在執行重定向操作時用來傳遞閃存屬性的利器,這些屬性在重定向后的一次請求中可用,之后自動移除,非常適合于向用戶展示操作成功或失敗的消息,同時保持URL的干凈。

接下來將詳細接上上面幾個注解及類的使用。Edt28資訊網——每日最新資訊28at.com

2. 實戰案例

2.1 @ModelAttribute

該注解可用于方法參數及方法上;Edt28資訊網——每日最新資訊28at.com

用于方法參數

@GetMapping("/product/{cateId}/{id}")public ProductDTO test(@ModelAttribute ProductDTO dto) {  return dto ;}

圖片圖片Edt28資訊網——每日最新資訊28at.com

首先,SpringMVC會自動將請求URI中的占位符數據綁定到當前ProductDTO對象上,這個綁定與@ModelAttribute注解沒有關系。而這里注解的作用是將當前ProductDTO對象綁定到模型數據中,接下來如果你使用的thymeleaf則可以直接在頁面中訪問,如下示例:Edt28資訊網——每日最新資訊28at.com

@GetMapping("/product/{cateId}/{id}")public String test(@ModelAttribute ProductDTO dto) {  return "modelattribute" ;}

在頁面中直接訪問ProductDTO;Edt28資訊網——每日最新資訊28at.com

<div th:if="${productDTO}">  <ul>    <li>cateId: <a th:text="${productDTO.cateId}"></a></li>    <li>id: <a th:text="${productDTO.id}"></a></li>  </ul></div>

頁面顯示

圖片圖片Edt28資訊網——每日最新資訊28at.com

在上面你看到了,默認訪問的key是當前類型的首字母改為小寫,我們可以通過配置屬性修改默認keyEdt28資訊網——每日最新資訊28at.com

public String test(@ModelAttribute("dto") ProductDTO dto)

這樣在頁面中訪問的key將是:dto。Edt28資訊網——每日最新資訊28at.com

用于方法

@GetMapping("/product/{cateId}/{id}")public String test() {  return "modelattribute" ;}@ModelAttribute("dto")public ProductDTO dto(ProductDTO dto) {  System.out.println("dto....") ;  return dto ;}

將注解用于方法上后,當前的Controller中的所有接口都會先執行該方法將請求中的參數信息綁定到ProductDTO對象中,最后將該dto綁定到模型數據上。通過上面的配置你在頁面上一樣也可以訪問該對象數據。Edt28資訊網——每日最新資訊28at.com

2.2 @SessionAttribute

該注解只能用于方法參數上。Edt28資訊網——每日最新資訊28at.com

該注解的作用用于讀取session中的數據到當前的參數中,如下示例:Edt28資訊網——每日最新資訊28at.com

@GetMapping("/user")@ResponseBodypublic User user(@SessionAttribute("user") User user) {  return user ;}// 模擬登錄后將User對象存入Session中@GetMapping("/login")@ResponseBodypublic String login(HttpSession session) {  session.setAttribute("user", new User(666L, "Admin")) ;  return "login success" ;}

這里會讀取Session中key=user的數據到當前User對象中,你需要先登錄,然后再訪問/user接口。Edt28資訊網——每日最新資訊28at.com

如果session中沒有user,那么程序將會報錯Edt28資訊網——每日最新資訊28at.com

圖片圖片Edt28資訊網——每日最新資訊28at.com

錯誤提示,session對象中沒有user屬性。通過如下方式設置不是必須的;Edt28資訊網——每日最新資訊28at.com

public User user(@SessionAttribute(value = "user", required = false) User user)

也可以將參數設置為Optional;Edt28資訊網——每日最新資訊28at.com

public User user(@SessionAttribute("user") Optional<User> user)

通過上面2中方式設置,在Session中不存在對應的屬性時也不會報錯。Edt28資訊網——每日最新資訊28at.com

注:還有一個@SessionAttributes注解,該注解可以用于類上。Edt28資訊網——每日最新資訊28at.com

2.3 @RequestAttribute

該注解同樣只能用于方法參數上。Edt28資訊網——每日最新資訊28at.com

與 @SessionAttribute 類似,你也可以使用 @RequestAttribute 注解來訪問先前創建的請求屬性(例如,由 Servlet Filter或 HandlerInterceptor 創建的屬性),如下示例:Edt28資訊網——每日最新資訊28at.com

先定義一個Filter,該Filter作用是向Request中設置值;Edt28資訊網——每日最新資訊28at.com

@Componentpublic class UserFilter extends OncePerRequestFilter {  @Override  protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)      throws ServletException, IOException {    request.setAttribute("user", new User(888L, "Guest")) ;    filterChain.doFilter(request, response) ;  }}

接下來在Controller中通過@RequestAttribute訪問user屬性。Edt28資訊網——每日最新資訊28at.com

@GetMapping("/user")@ResponseBodypublic User user(@RequestAttribute("user") Optional<User> user) {  return user.orElse(new User()) ;}

圖片圖片Edt28資訊網——每日最新資訊28at.com

與@SessionAttribute一樣,參數可以通過Optional設置不是必須的。Edt28資訊網——每日最新資訊28at.com

2.4 RedirectAttributes

當頁面通過redirect進行跳轉時,可以通過該類定義在接口方法參數中,將數據保存到該對象中后,你就可以在調整到的頁面中使用配置的屬性了,如下示例:Edt28資訊網——每日最新資訊28at.com

@GetMapping("")public String index(RedirectAttributes ra) {  // 將你需要的數據存入該對象中  ra.addFlashAttribute("message", "hello") ;  // redirect其它頁面  return "redirect:/page/tm" ;}@GetMapping("tm")public String tm(RedirectAttributes ra) {  return "test" ;}

test.html頁面如下:Edt28資訊網——每日最新資訊28at.com

<body>  <h1>Test Page</h1>  <div th:if="${message}">    <h2 th:text="${message}" />  </div></body>

訪問上面的/page,將redirec到最終的test.html頁面;Edt28資訊網——每日最新資訊28at.com

圖片圖片Edt28資訊網——每日最新資訊28at.com

redirect過來后我們可以訪問到配置的數據。Edt28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-98547-0.html在SpringBoot項目中這幾個注解你們還用嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 變量命名的藝術:五分鐘速成秘籍

下一篇: C++ this 指針到底是個什么特殊的指針

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美怡红院视频| 一区二区三区中文在线观看 | 亚洲第一毛片| 在线电影欧美日韩一区二区私密| 亚洲国产精品va在线看黑人| 亚洲精品四区| 午夜视频一区| 欧美成年人视频网站| 欧美视频在线观看一区二区| 国产一区二区精品久久91| 亚洲黄色av| 亚洲承认在线| 中文一区二区在线观看| 久久精品99国产精品| 欧美黄色网络| 国产日韩精品在线观看| 亚洲黄一区二区| 亚洲欧美第一页| 美乳少妇欧美精品| 国产精品啊啊啊| 在线播放日韩专区| 亚洲视频综合| 美腿丝袜亚洲色图| 国产精品永久| 99在线精品观看| 久久免费视频在线观看| 国产精品二区三区四区| 亚洲国产日韩一区| 欧美诱惑福利视频| 欧美日韩免费在线观看| 在线观看欧美成人| 午夜精品视频| 欧美日韩一区成人| 亚洲电影在线| 久久aⅴ国产欧美74aaa| 欧美色区777第一页| 亚洲大片在线| 久久gogo国模裸体人体| 欧美体内谢she精2性欧美| 亚洲第一在线综合网站| 欧美在线free| 欧美视频免费看| 亚洲国产精品成人| 久久电影一区| 国产精品久久久久久久午夜| 亚洲精品1234| 久久噜噜亚洲综合| 国产视频久久久久| 亚洲一区亚洲二区| 欧美人与禽猛交乱配视频| 一区二区三区在线不卡| 欧美一区视频| 国产精品视频一区二区高潮| aa级大片欧美| 欧美精品一区在线| 亚洲国产精品一区在线观看不卡| 久久激情婷婷| 国产欧美午夜| 亚洲欧美日韩成人| 欧美视频中文字幕| 9色国产精品| 欧美日韩国产a| 亚洲欧洲在线免费| 蜜桃久久精品乱码一区二区| 国模私拍视频一区| 欧美一区亚洲二区| 国产欧美日本在线| 香港久久久电影| 国产精品免费观看视频| 亚洲午夜一级| 欧美网站在线观看| 中文亚洲字幕| 国产精品久久久久久久久| 一区二区三区欧美| 欧美视频一区二区| 亚洲视频网在线直播| 欧美人成在线| 中日韩男男gay无套| 欧美日韩三区四区| 一本色道久久88亚洲综合88| 欧美久久综合| 一本色道久久综合亚洲精品不卡| 欧美激情一级片一区二区| 亚洲黄网站黄| 欧美精品久久久久久久免费观看| 亚洲激情国产精品| 欧美黑人国产人伦爽爽爽| 亚洲黄色av| 欧美人牲a欧美精品| 在线视频免费在线观看一区二区| 欧美色欧美亚洲另类七区| 亚洲在线国产日韩欧美| 国产美女精品视频| 久久九九免费视频| 亚洲大片av| 欧美激情一区二区三区在线视频 | 午夜精品久久久久久久男人的天堂| 欧美午夜精品理论片a级按摩| 一本色道久久综合一区| 国产精品va在线| 亚洲欧美激情一区二区| 国产欧美一区二区精品性| 久久精品成人一区二区三区| 在线观看欧美| 欧美另类在线观看| 亚洲一区二区三区在线播放| 国产免费成人av| 久久全球大尺度高清视频| 91久久精品国产91性色tv| 欧美日韩精品中文字幕| 午夜免费在线观看精品视频| 韩国成人精品a∨在线观看| 米奇777在线欧美播放| 99国产精品久久久久久久久久 | 蜜臀久久久99精品久久久久久| 亚洲人成亚洲人成在线观看| 欧美日韩一区二区在线观看视频| 亚洲欧美日韩在线不卡| 国内精品久久久久国产盗摄免费观看完整版| 卡一卡二国产精品| 一区二区国产日产| 国产欧美va欧美va香蕉在| 久久综合伊人77777| av成人手机在线| 国产欧美精品一区二区色综合 | 一区二区视频欧美| 欧美乱在线观看| 午夜天堂精品久久久久| 亚洲第一视频| 欧美午夜电影完整版| 久久久久**毛片大全| 亚洲精选中文字幕| 国产精品自拍小视频| 欧美大片91| 香蕉久久精品日日躁夜夜躁| 亚洲国产另类久久精品| 国产精品日韩精品欧美在线| 美女爽到呻吟久久久久| 亚洲永久免费观看| 亚洲国产精品日韩| 国产精品一区二区三区成人| 欧美成人一二三| 欧美一区二区成人| 99精品久久| 一色屋精品亚洲香蕉网站| 国产精品成人一区二区网站软件 | 在线观看一区欧美| 欧美午夜精品久久久久久久 | 麻豆精品视频在线观看视频| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲高清一区二区三区| 国产精品午夜视频| 欧美精品久久天天躁| 久久九九精品| 亚洲在线视频观看| 亚洲精品日韩在线观看| 国产综合av| 欧美亚洲第一页| 欧美电影免费观看高清| 欧美淫片网站| 亚洲一本视频| 亚洲免费电影在线| 在线不卡中文字幕播放| 国产伦精品一区二区三区免费迷 | 国产主播精品| 国产精品播放| 欧美精品色综合| 久久天天综合| 欧美呦呦网站| 亚洲免费中文字幕| 一本综合久久| 亚洲精品人人| 亚洲高清视频在线| 精品成人一区二区三区| 国产日韩欧美日韩大片| 国产精品久久久久久久7电影| 欧美国产日韩在线观看| 久久久www免费人成黑人精品| 亚洲欧美日韩天堂一区二区| 一区二区国产在线观看| 亚洲精品免费观看| 亚洲国产综合在线| 亚洲大胆美女视频| 精品999久久久| 国产综合色在线| 国产一区二区精品丝袜| 国产伦精品免费视频 | 亚洲第一区在线| 一区二区三区在线观看国产| 国产日韩精品一区二区三区在线| 国产精品久久波多野结衣| 欧美日韩一区在线播放| 欧美日韩国产影院| 欧美日韩国产一区二区三区| 欧美激情精品| 欧美久久久久免费| 欧美日韩国产综合新一区| 欧美女同视频| 欧美日韩国产影院| 欧美午夜精品久久久久免费视| 欧美日韩在线一二三| 欧美午夜精彩| 国产精品青草久久久久福利99| 国产精品99一区|