最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot獲取HttpServletRequest的3種方式總結

 更新時間:2023年08月10日 09:33:42   作者:太空眼睛  
這篇文章主要給大家介紹了關于SpringBoot獲取HttpServletRequest的3種方式,在Spring boot項目中經(jīng)常要用到Servlet的常用對象如HttpServletRequest request,HttpServletResponse response,HttpSession session,需要的朋友可以參考下

方法一: Controller中增加request參數(shù)

@RestController
public class DemoController { 
    @RequestMapping("/demo")
    public void demo(HttpServletRequest request) {        
        System.out.println(request.getParameter("hello"));
    }
}
  • 線程安全
  • 缺點: 每個方法都需要寫一遍

方法二: 自動注入

@Slf4j
@RequestMapping(path = "/request")
@RestController
public class DemoRequestController {
    @Resource
    private HttpServletRequest request1;
    @RequestMapping(path = "/demo")
    public String demo(HttpServletRequest request2) {
        log.info("request1: {}", request1.getClass());
        log.info("request2: {}", request2.getClass());
        return "Hello, world!";
    }
}
  • 線程安全
  • Spring中,DemoRequestControllerscopesingleton(單例),也就是說在整個web系統(tǒng)中,只有一個DemoRequestController;但是其中注入的request卻是線程安全的,原因在于:使用這種方式,當Bean(本例的DemoRequestController)初始化時,Spring并沒有注入一個request對象,而是注入了一個代理(proxy);當Bean中需要使用request對象時,通過該代理獲取request對象。
  • 代理對象中用到了 ThreadLocal , 因此request對象也是線程局部變量;這就保證了request對象的線程安全性。
  • 不限于Controller中,可以在任何地方進行注入
  • 注入的對象不限于request:除了注入request對象,該方法還可以注入其他scoperequestsession的對象,如HttpServletResponse對象、HttpSession對象等;并保證線程安全
  • 如果Controller有很多,那么我們需要在每個Controller里面進行注入

方法三: 基類中自動注入

本質與方法二類似

public class BaseController {   
   @Autowired 
   protected HttpServletRequest request;
}
  • 線程安全
  • 與方法2相比,避免了在不同的Controller中重復注入request
  • 但是java只允許繼承一個基類

方法四: 手動調用

@Slf4j
@RequestMapping(path = "/request")
@RestController
public class DemoRequestController {
    @Resource
    private HttpServletRequest request1;
    @RequestMapping(path = "/demo")
    public String demo(HttpServletRequest request2) {
        HttpServletRequest request3 = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
        log.info("request1: {}", request1.getClass());
        log.info("request2: {}", request2.getClass());
        log.info("request3: {}", request3.getClass());
        return "Hello, world!";
    }
}
  • 線程安全
  • 可以在非Bean中直接獲得
  • 缺點與方法一類似

總結

獲取HttpServletRequest共有三種方式

  • Controller的方法增加HttpServletRequest參數(shù)
  • 自動注入

建議使用繼承來減少代碼冗余

  • 通過RequestContextHolder.currentRequestAttributes()手動獲取

適合在非Bean中獲取

到此這篇關于SpringBoot獲取HttpServletRequest的3種方式的文章就介紹到這了,更多相關SpringBoot獲取HttpServletRequest內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot中@PostConstruct 注解的實現(xiàn)

    SpringBoot中@PostConstruct 注解的實現(xiàn)

    在Spring Boot框架中,?@PostConstruct是一個非常有用的注解,它用于在依賴注入完成后執(zhí)行初始化方法,本文將介紹?@PostConstruct的基本概念、使用場景以及提供詳細的代碼示例,感興趣的可以了解一下
    2024-09-09
  • Java如何固定大小的線程池

    Java如何固定大小的線程池

    這篇文章主要介紹了Java固定大小的線程池操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring Boot應用Docker化的步驟詳解

    Spring Boot應用Docker化的步驟詳解

    這篇文章主要給大家介紹了關于Spring Boot應用Docker化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    這篇文章主要介紹了Java 單鏈表數(shù)據(jù)結構的增刪改查教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • springboot項目引入外部jar包的詳細圖文教程

    springboot項目引入外部jar包的詳細圖文教程

    在項目中有時候需要引入外部jar包,啟動運行,下面這篇文章主要給大家介紹了關于springboot項目引入外部jar包的詳細圖文教程,需要的朋友可以參考下
    2023-09-09
  • Spring Boot 把配置文件和日志文件放到jar外部

    Spring Boot 把配置文件和日志文件放到jar外部

    如果不想使用默認的application.properties,而想將屬性文件放到jar包外面,怎么做呢?下面小編給大家?guī)砹藘煞N方法解決Spring Boot 把配置文件和日志文件放到jar外部問題,感興趣的朋友一起看看吧
    2018-02-02
  • SpringBoot配置項目訪問路徑URL的根路徑方式

    SpringBoot配置項目訪問路徑URL的根路徑方式

    這篇文章主要介紹了SpringBoot配置項目訪問路徑URL的根路徑方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 淺談mybatis-plus批量保存異常及效率優(yōu)化

    淺談mybatis-plus批量保存異常及效率優(yōu)化

    本文主要介紹了mybatis-plus批量保存異常及效率優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • IDEA實現(xiàn)一鍵部署項目到服務器過程

    IDEA實現(xiàn)一鍵部署項目到服務器過程

    本文介紹了在阿里云服務器上通過開放2375端口、配置Docker及IDEA插件,實現(xiàn)項目打包、編寫Dockerfile、構建鏡像和容器,并最終通過瀏覽器訪問部署服務的全過程
    2025-10-10
  • Java實現(xiàn)字節(jié)數(shù)組轉int(IEEE754標準)的完整指南

    Java實現(xiàn)字節(jié)數(shù)組轉int(IEEE754標準)的完整指南

    在計算機科學中,IEEE 754 標準是浮點數(shù)表示的基石,本文將從 IEEE 754 的底層結構出發(fā),結合 Java 平臺的特性,系統(tǒng)探討字節(jié)數(shù)組到 int 的轉換機制、IEEE 754 的語義映射、字節(jié)序的影響以及工程實踐中的關鍵考量
    2026-05-05

最新評論

石林| 渭源县| 兴隆县| 治县。| 凌海市| 水城县| 云和县| 延吉市| 图木舒克市| 门源| 万盛区| 蒙山县| 固镇县| 右玉县| 东方市| 岐山县| 广水市| 莱西市| 彭州市| 安溪县| 绥宁县| 高邮市| 泽库县| 右玉县| 晋城| 蒙山县| 思南县| 成都市| 边坝县| 镇原县| 毕节市| 江门市| 林芝县| 子洲县| 如皋市| 商水县| 青阳县| 株洲市| 永康市| 会同县| 海林市|