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

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

SpringBoot中Controller接口參數還可以這樣玩?

來源: 責編: 時間:2024-06-13 08:48:40 171觀看
導讀環境:SpringBoot3.2.51. Optional包裝參數請求參數通過java.util.Optional包裝@GetMapping("/optional")public Object optional(Optional<String> name) { return String.format("請求參數: %s", name.orElse("")) ;

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

1. Optional包裝參數

請求參數通過java.util.Optional包裝Ehp28資訊網——每日最新資訊28at.com

@GetMapping("/optional")public Object optional(Optional<String> name) {  return String.format("請求參數: %s", name.orElse("")) ;}

通過Optional接受參數,效果等同于Ehp28資訊網——每日最新資訊28at.com

public Object optional(@RequestParam(required=false) String name){}

與將required設置為false效果一樣(@RequestHeader同樣)Ehp28資訊網——每日最新資訊28at.com

2. 便捷獲取Servlet API

在請求參數中你可以使用WebRequest, NativeWebRequest兩個任意對象來獲取Request,Response,Session等對象。Ehp28資訊網——每日最新資訊28at.com

@GetMapping("/servlet/api")public Object servletApi(WebRequest request, NativeWebRequest webRequest) {  String name = request.getParameter("name") ;  // 獲取Servlet API  HttpServletRequest req = webRequest.getNativeRequest(HttpServletRequest.class) ;  HttpServletResponse resp = webRequest.getNativeResponse(HttpServletResponse.class) ;  HttpSession session = webRequest.getNativeRequest(HttpSession.class) ;  return "servlet api" ;}

當然你可以直接寫你需要的具體對象Ehp28資訊網——每日最新資訊28at.com

public Object servletApi(HttpServletRequest req,   HttpServletResponse resp) {  // ...}

NativeWebRequest本身提供了很多通用的方法,并且還可以獲取其它對象,使用起來更加方便。Ehp28資訊網——每日最新資訊28at.com

3. 獲取當前認證用戶

你的請求參數還可以使用java.security.Principal該對象用來獲取當前請求中已經認證過的用戶信息。這尤其在使用Spring Security時非常有用,在Security中的Authentication接口實現了Principal。Ehp28資訊網——每日最新資訊28at.com

@GetMapping("/principal")public Object principal(Principal principal) {  return principal ;}

輸出如下:Ehp28資訊網——每日最新資訊28at.com

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

4. 獲取請求其它信息

你還可以非常方便的獲取當前請求Method及Locale等信息。Ehp28資訊網——每日最新資訊28at.com

@GetMapping("/other")public Object other(HttpMethod method, Locale locale) {  return method.name() + ", " + locale.toString() ;}// 輸出GET, zh_CN

除此之外,你還可以獲取時區信息java.util.TimeZone, java.time.ZoneId。Ehp28資訊網——每日最新資訊28at.com

5. 讀取輸入流

將請求body中的內容以流InputStream形式獲取。Ehp28資訊網——每日最新資訊28at.com

@PostMapping("/inputStream")public Object inputStream(InputStream is) throws Exception {  return String.format("讀取到內容: %s",     StreamUtils.copyToString(is, StandardCharsets.UTF_8)) ;}

輸出結果:Ehp28資訊網——每日最新資訊28at.com

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

6. 獲取Header&Body

通過HttpEntity獲取請求header及body內容信息;Ehp28資訊網——每日最新資訊28at.com

@PostMapping("/httpentity")public Object httpentity(HttpEntity<String> entity) {  return Map.of(    "headers", entity.getHeaders(),     "body", entity.getBody()  ) ;}

輸出結果:Ehp28資訊網——每日最新資訊28at.com

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

7. 獲取當前請求URI

如果你想獲取當前請求的Schema,Host,Port,上下文,那么你可以通過如下參數獲取Ehp28資訊網——每日最新資訊28at.com

@GetMapping("/uri")public Object uri(UriComponentsBuilder builder) {  return builder.toUriString() ;}

輸出結果:Ehp28資訊網——每日最新資訊28at.com

Ehp28資訊網——每日最新資訊28at.com

http://localhost:9001/api。Ehp28資訊網——每日最新資訊28at.com

Ehp28資訊網——每日最新資訊28at.com

只包含了schema://host:port/contextEhp28資訊網——每日最新資訊28at.com

8. 獲取請求的部分

如果你的請求是multipart/form-data,那么你可以通過如下方式獲取部分請求信息Ehp28資訊網——每日最新資訊28at.com

@PostMapping("/requestpart")public Object requestpart(@RequestPart("user") String user) {  return user ;}

請求結果:Ehp28資訊網——每日最新資訊28at.com

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

你還可以以JSON對象讀取,如下:Ehp28資訊網——每日最新資訊28at.com

public Object requestpart(@RequestPart("user") User user)

注意,對象接受時,你需要設置每part的Content-TypeEhp28資訊網——每日最新資訊28at.com

Content-Type: multipart/mixed--edt7Tfrdusa7r3lNQc79vXuhIIMlatb7PQg7VpContent-Disposition: form-data; name="user"Content-Type: application/json; charset=UTF-8Content-Transfer-Encoding: 8bit{  "age": 20,  "name": "張三"}

沒有設置Content-Type將會拋出415錯誤。Ehp28資訊網——每日最新資訊28at.com

9.重定向保存屬性

指定在發生重定向時使用的屬性(即要附加到查詢字符串中的屬性)以及要在重定向請求期間臨時存儲的屬性。Ehp28資訊網——每日最新資訊28at.com

@PostMapping("/")public String handleFileUpload(RedirectAttributes redirectAttributes) {  // 重定向后能夠獲取到這里指定的屬性信息  redirectAttributes.addFlashAttribute("message", "You successfully uploaded file!");  // 重定向  return "redirect:/";}

通過該種方式,重定向后頁面中也能獲取設置的屬性信息。Ehp28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-93507-0.htmlSpringBoot中Controller接口參數還可以這樣玩?

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

上一篇: Spring Cloud Gateway中優化Netty線程池,提升系統性能

下一篇: VS Code 常用快捷鍵大全

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領先
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 共享單車的故事講到哪了?

    來源丨海克財經與共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發報道稱,成都、天津、鄭州等地多個共享單
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 造車兩年股價跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個交易日起持有小米集團的股票,那么截至2023年上半年最后一個交易日,投資者將浮虧59.16%,同區間的恒生科技指數跌幅為52.78%
  • AMD的AI芯片轉單給三星可能性不大 與臺積電已合作至2nm制程

    據 DIGITIMES 消息,英偉達 AI GPU 出貨逐季飆升,接下來 AMD MI 300 系列將在第 4 季底量產。而半導體業內人士表示,近日傳出 AMD 的 AI 芯片將轉單給
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
Top 主站蜘蛛池模板: 巢湖市| 克什克腾旗| 手游| 乐亭县| 聂拉木县| 澳门| 锡林浩特市| 延长县| 沙湾县| 泸水县| 澄江县| 赣州市| 西乡县| 惠来县| 健康| 利津县| 中阳县| 宣城市| 宜君县| 巴楚县| 绥中县| 亳州市| 繁昌县| 舟山市| 湘乡市| 河池市| 老河口市| 得荣县| 南宁市| 宝山区| 高邮市| 策勒县| 黄陵县| 马山县| 吉林省| 荆州市| 晋城| 仁寿县| 德惠市| 绩溪县| 崇州市|