国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot獲取Request請(qǐng)求的三種方式

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot獲取Request請(qǐng)求的三種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Request對(duì)象包含了請(qǐng)求的各種信息,比如請(qǐng)求方法、請(qǐng)求URL、請(qǐng)求參數(shù)、請(qǐng)求內(nèi)容等等,這些信息可以供服務(wù)器進(jìn)行處理和響應(yīng)。那么在SpringBoot中,怎么才能獲取到Request對(duì)象?

本文將介紹三種方法,并提示例參考。

一、直接在Controller方法參數(shù)上注入HttpServletRequest

這是最常用的一種方法。在Controller的方法參數(shù)上直接注入HttpServletRequest對(duì)象,Spring會(huì)自動(dòng)將請(qǐng)求對(duì)象賦值到該參數(shù)中。

原理講解:當(dāng)Spring接收到HTTP請(qǐng)求時(shí),會(huì)尋找一個(gè)合適的方法來(lái)處理該請(qǐng)求。如果該方法參數(shù)上標(biāo)注了@RequestMapping或@Get、@Post等注解,Spring就會(huì)將HttpServletRequest對(duì)象注入到該參數(shù)中。

示例代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-757687.html

@RestController
public class MyController {
    @RequestMapping("/test")
    public String test(HttpServletRequest request) {
        String ip = request.getRemoteAddr();
        String method = request.getMethod();
        String uri = request.getRequestURI();
        return "ip:" + ip + ", method:" + method + ", uri:" + uri;
    }
}

二、通過(guò)RequestContextHolder獲取

在非Controller方法中,可以使用RequestContextHolder來(lái)獲取ServletRequestAttributes對(duì)象,再?gòu)脑搶?duì)象中獲取HttpServletRequest和HttpServletResponse。

原理講解:Spring會(huì)將所有的請(qǐng)求參數(shù)、頭部信息等封裝到ServletRequestAttributes對(duì)象中。通過(guò)調(diào)用RequestContextHolder的getRequestAttributes()方法可以獲取到該對(duì)象,再通過(guò)ServletRequestAttributes對(duì)象可以獲取到HttpServletRequest對(duì)象。

示例代碼:

@Service
public class MyService {
    public String test() {
        ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = sra.getRequest();
        String ip = request.getRemoteAddr();
        String method = request.getMethod();
        String uri = request.getRequestURI();
        return "ip:" + ip + ", method:" + method + ", uri:" + uri;
    }
}

三、通過(guò)@Autowired注解注入HttpServletRequest對(duì)象

如果需要在非Controller方法中獲取HttpServletRequest對(duì)象,可以使用@Autowired注解將該對(duì)象注入到對(duì)應(yīng)的變量中。

原理講解:在初始化一個(gè)Bean時(shí),如果發(fā)現(xiàn)該Bean中有一個(gè)@Autowired注解標(biāo)注的屬性,Spring就會(huì)自動(dòng)尋找一個(gè)合適的Bean來(lái)注入到該屬性中。如果該屬性是HttpServletRequest對(duì)象,Spring就會(huì)將當(dāng)前的請(qǐng)求對(duì)象注入到該屬性中。

示例代碼:

@Component
public class MyComponent {
    @Autowired
    private HttpServletRequest request;
    public String test() {
        String ip = request.getRemoteAddr();
        String method = request.getMethod();
        String uri = request.getRequestURI();
        return "ip:" + ip + ", method:" + method + ", uri:" + uri;
    }
}
	以上是SpringBoot獲取Request的三種方法,分別是直接在Controller方法參數(shù)上注入HttpServletRequest、通過(guò)RequestContextHolder獲取、以及通過(guò)@Autowired注解注入HttpServletRequest對(duì)象。

到了這里,關(guān)于SpringBoot獲取Request請(qǐng)求的三種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)分頁(yè)的三種方式

    一 自己封裝Page對(duì)象實(shí)現(xiàn) 博客鏈接 二 使用sql實(shí)現(xiàn)分頁(yè) 2.1 場(chǎng)景分析 前段傳遞給給后臺(tái)什么參數(shù)? 當(dāng)前頁(yè)碼 currentPage 每頁(yè)顯示條數(shù) pageSize 后臺(tái)給前端返回什么數(shù)據(jù)? 當(dāng)前頁(yè)數(shù)據(jù) List 總記錄數(shù) totalCount 2.2 前段代碼 2.3 后端代碼 PageBean mapper service impl controller 三 使用PageHelper插件

    2024年02月10日
    瀏覽(28)
  • SpringBoot導(dǎo)出Word文檔的三種方式

    SpringBoot導(dǎo)出Word文檔的三種方式

    1、直接在Java代碼里創(chuàng)建Word文檔,設(shè)置格式樣式等,然后導(dǎo)出。(略) 需要的見(jiàn):https://blog.csdn.net/qq_42682745/article/details/120867432 2、富文本轉(zhuǎn)換后的HTML下載為Word文檔。相當(dāng)于把HTML轉(zhuǎn)為Word導(dǎo)出 3、使用模板技術(shù)導(dǎo)出。固定格式、可以寫入不同數(shù)據(jù) 其他: springboot版本:2.7.11 導(dǎo)

    2024年02月02日
    瀏覽(21)
  • Springboot中使用線程池的三種方式

    前言 多線程是每個(gè)程序員的噩夢(mèng),用得好可以提升效率很爽,用得不好就是埋汰的火葬場(chǎng)。 這里不深入介紹,主要是講解一些標(biāo)準(zhǔn)用法,熟讀唐詩(shī)三百首,不會(huì)作詩(shī)也會(huì)吟。 這里就介紹一下springboot中的多線程的使用,使用線程連接池去異步執(zhí)行業(yè)務(wù)方法。 由于代碼中包含詳

    2024年02月08日
    瀏覽(24)
  • SpringBoot+MyBatis批量插入數(shù)據(jù)的三種方式

    最近導(dǎo)入表格數(shù)據(jù)時(shí)需要同時(shí)插入修改大量數(shù)據(jù),研究了一下有三種實(shí)現(xiàn)方式 1、用for循環(huán)調(diào)用sql插入數(shù)據(jù) 這種方式插入大量數(shù)據(jù)時(shí),效率非常底下,不推薦 2、利用mybatis的foreach來(lái)實(shí)現(xiàn)循環(huán)插入 這種方式插入大量數(shù)據(jù)時(shí),好處是不用頻繁訪問(wèn)數(shù)據(jù)庫(kù),一條sql搞定,效率比較

    2024年02月16日
    瀏覽(19)
  • SpringBoot實(shí)現(xiàn)過(guò)濾器Filter的三種方式

    SpringBoot實(shí)現(xiàn)過(guò)濾器Filter的三種方式

    過(guò)濾器 Filter 由 Servlet 提供,基于函數(shù)回調(diào)實(shí)現(xiàn)鏈?zhǔn)綄?duì)網(wǎng)絡(luò)請(qǐng)求與響應(yīng)的攔截與修改。由于基于 Servlet ,其可以對(duì)web服務(wù)器管理的幾乎所有資源進(jìn)行攔截(JSP、圖片文件、HTML 文件、CSS文件等)。 Filter 的生命周期 init(): 初始化Filter 實(shí)例,F(xiàn)ilter 的生命周期與 Servlet 是相同的,

    2024年02月14日
    瀏覽(17)
  • Springboot接入OpenAi/Chat GPT的三種方式

    由于現(xiàn)在網(wǎng)上的相關(guān)教程并不多外加沒(méi)有使用代理的demo,所以拋磚引玉,寫了三種調(diào)用方式,分別是直接訪問(wèn)、非官方SDK訪問(wèn)、官方開(kāi)源的SDK訪問(wèn) 1、導(dǎo)入pom文件(2023.3.30最新版本) 2、入?yún)?這里的TalkDto 還可以入?yún)axToken,用于返回最大量的數(shù)據(jù),官方計(jì)算token大小的方式:

    2023年04月19日
    瀏覽(21)
  • idea社區(qū)版本創(chuàng)建springboot項(xiàng)目的三種方式

    ? 文章目錄 一、前言 一、方式1:spring 官方創(chuàng)建 springboot項(xiàng)目 1、打開(kāi)在線的 spring initializr 2、選擇項(xiàng)目的語(yǔ)言、版本、依賴等 3、 解壓源碼包,并使用IDEA打開(kāi) 4、測(cè)試接口 二、方式2:社區(qū)idea安裝Spring插件 1、添加插件 三、方式3:(麻煩)手動(dòng)maven 創(chuàng)建springboot項(xiàng)目 一、前言

    2023年04月09日
    瀏覽(22)
  • 【SpringBoot】讀取application.yml配置中的三種方式

    applicaiton.yml BootValueApplicationTests.java 打印如下所示 注意的地方 當(dāng)對(duì)應(yīng)的值不存在時(shí),系統(tǒng)會(huì)報(bào)錯(cuò)。我們可以給定一個(gè)默認(rèn)值即可。 如下所示: 在這里,sys.noValue這個(gè)值是不存在的,我們可以給定一個(gè)默認(rèn)值為123,當(dāng)然,我們?nèi)绻恢付J(rèn)值的,它的默認(rèn)值為空字符串。 優(yōu)

    2024年02月13日
    瀏覽(21)
  • java篇-Springboot解決跨域問(wèn)題的三種方式

    第一種:添加 @CrossOrigin 注解 在Controller層對(duì)應(yīng)的方法上添加@CrossOrigin或者類上添加@CrossOrigin?? 第二種:添加CORS過(guò)濾器 新建配置類CorsConfig,創(chuàng)建 CorsFilter 過(guò)濾器,允許跨域 ?第三種:實(shí)現(xiàn) WebMvcConfigurer ,重寫 addCorsMappings 方法 全局配置有可能出現(xiàn)跨域失敗的情況,改為過(guò)濾

    2024年04月23日
    瀏覽(23)
  • 生產(chǎn)項(xiàng)目中基于springboot項(xiàng)目解決循環(huán)依賴的三種方式

    在生產(chǎn)項(xiàng)目中,可以使用Spring Boot框架來(lái)快速開(kāi)發(fā)Spring應(yīng)用程序。Spring Boot提供了一種方便的方式來(lái)創(chuàng)建獨(dú)立的,基于Spring的應(yīng)用程序,并且有著高度的自動(dòng)化配置和開(kāi)箱即用的特性。 可以使用@Lazy注解來(lái)控制Bean的延遲初始化,同時(shí)可以使用AOP切面編程來(lái)解決循環(huán)依賴問(wèn)題。

    2024年02月11日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包