成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
指定在發生重定向時使用的屬性(即要附加到查詢字符串中的屬性)以及要在重定向請求期間臨時存儲的屬性。

環境:SpringBoot3.2.5

1. Optional包裝參數

請求參數通過java.util.Optional包裝

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

通過Optional接受參數,效果等同于

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

與將required設置為false效果一樣(@RequestHeader同樣)

2. 便捷獲取Servlet API

在請求參數中你可以使用WebRequest, NativeWebRequest兩個任意對象來獲取Request,Response,Session等對象。

@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" ;
}

當然你可以直接寫你需要的具體對象

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

NativeWebRequest本身提供了很多通用的方法,并且還可以獲取其它對象,使用起來更加方便。

3. 獲取當前認證用戶

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

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

輸出如下:

圖片圖片

4. 獲取請求其它信息

你還可以非常方便的獲取當前請求Method及Locale等信息。

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

除此之外,你還可以獲取時區信息java.util.TimeZone, java.time.ZoneId。

5. 讀取輸入流

將請求body中的內容以流InputStream形式獲取。

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

輸出結果:

圖片圖片

6. 獲取Header&Body

通過HttpEntity獲取請求header及body內容信息;

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

輸出結果:

圖片圖片

7. 獲取當前請求URI

如果你想獲取當前請求的Schema,Host,Port,上下文,那么你可以通過如下參數獲取

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

輸出結果:

http://localhost:9001/api。

只包含了schema://host:port/context

8. 獲取請求的部分

如果你的請求是multipart/form-data,那么你可以通過如下方式獲取部分請求信息

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

請求結果:

圖片圖片

你還可以以JSON對象讀取,如下:

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

注意,對象接受時,你需要設置每part的Content-Type

Content-Type: multipart/mixed


--edt7Tfrdusa7r3lNQc79vXuhIIMlatb7PQg7Vp
Content-Disposition: form-data; name="user"
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: 8bit


{
  "age": 20,
  "name": "張三"
}

沒有設置Content-Type將會拋出415錯誤。

9.重定向保存屬性

指定在發生重定向時使用的屬性(即要附加到查詢字符串中的屬性)以及要在重定向請求期間臨時存儲的屬性。

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

通過該種方式,重定向后頁面中也能獲取設置的屬性信息。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2024-08-06 09:51:21

SpringHTTPJSON

2024-08-02 08:38:20

Controller接口地址

2019-01-29 10:00:59

GitHub開源搜索

2024-05-17 09:37:26

format屬性Spring

2024-12-03 09:45:34

2021-03-03 08:05:53

C++項目函數

2022-09-26 07:32:24

開發接口編程

2022-12-06 17:30:04

2021-02-01 13:35:28

微信Python技巧

2016-09-29 17:48:32

騰訊云語音質檢珍愛網

2022-07-30 23:45:09

內存泄漏檢測工具工具

2022-05-17 07:26:33

動畫CSS前端

2023-07-03 16:49:47

5G

2012-10-12 10:13:26

eclips代碼編寫Editplus

2013-09-18 10:44:01

搜狗輸入法詞語

2013-08-22 10:28:50

.NET MVC.NETRazor

2017-11-27 12:24:02

命令行代碼指令

2020-08-24 07:19:13

主鍵自增數據庫

2023-12-11 13:57:00

RFM模型激勵機制

2020-12-28 08:36:30

C語言編程泛型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久久蜜桃 | 国产精品久久久久久久免费观看 | 欧美日韩综合视频 | 国产一级特黄视频 | 亚洲欧洲精品一区 | 91免费看片| 精品日韩在线 | 日韩欧美国产精品一区二区三区 | 欧美中文在线 | 国产高清精品一区二区三区 | 看特级黄色片 | 亚洲成人一区二区 | 噜久寡妇噜噜久久寡妇 | 欧美日在线| 中文字幕亚洲精品在线观看 | 精品视频免费 | 日韩精品免费 | 亚洲精品专区 | 亚洲二区在线 | 在线观看中文字幕亚洲 | 亚洲三区视频 | 久草在线中文888 | 国产成人免费视频网站高清观看视频 | 国产精品一区二区三区久久 | 久久国产精品99久久久大便 | 欧美一区2区三区4区公司二百 | 色综久久 | 中文字幕av一区二区三区 | 日韩高清一区 | 国产精品视频综合 | 国产精品久久久久久亚洲调教 | 91大神在线资源观看无广告 | 在线看日韩 | 亚洲成人免费视频 | 成人欧美一区二区三区黑人孕妇 | 人干人人| 污污免费网站 | 成人免费看片又大又黄 | 久久久久久色 | 午夜寂寞福利视频 | 欧美一级在线视频 |