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

springboot實(shí)現(xiàn)獲取客戶端IP地址的示例代碼

 更新時(shí)間:2024年11月18日 09:38:28   作者:這個(gè)名字應(yīng)該沒(méi)人用吧  
本文介紹了在SpringBoot中獲取客戶端IP地址的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

引言

在Web開(kāi)發(fā)中,獲取客戶端的IP地址是一項(xiàng)常見(jiàn)需求,無(wú)論是用于日志記錄、安全策略實(shí)施還是個(gè)性化服務(wù)。在Spring Boot應(yīng)用程序中,有多種方法可以實(shí)現(xiàn)這一功能。本文將介紹在Spring Boot中如何獲取請(qǐng)求頭和客戶端IP地址的不同方法。

在Controller組件中

在Spring Boot的Controller組件中,可以通過(guò)自動(dòng)注入HttpServletRequest對(duì)象來(lái)獲取客戶端的IP地址。

直接通過(guò)HttpServletRequest獲取

最直接的方法是使用HttpServletRequest對(duì)象的getRemoteAddr()方法來(lái)獲取IP地址。

@GetMapping
public String getIpAddress(HttpServletRequest request) {
    String ip = request.getRemoteAddr();
    return ip;
}

這種方法是最簡(jiǎn)單的,但是如果應(yīng)用部署在代理服務(wù)器,就無(wú)法獲取真實(shí)的客戶端IP。

使用X-Forwarded-For

如果應(yīng)用部署在代理服務(wù)器上,可以通過(guò)檢查X-Forwarded-For請(qǐng)求頭來(lái)獲取真實(shí)的客戶端IP地址。

@GetMapping
public String getIpAddress(HttpServletRequest request) {
    String ipAddress = request.getHeader("X-Forwarded-For");
    if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("Proxy-Client-IP");
    }
    if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("WL-Proxy-Client-IP");
    }
    if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getRemoteAddr();
    }
    return ipAddress.split(",")[0];
}

X-Forwarded-For頭可以包含一個(gè)或多個(gè)IP地址,第一個(gè)通常是客戶端的真實(shí)IP。

在非Controller組件中

在非Controller組件中,可以通過(guò)RequestContextHolder獲取當(dāng)前請(qǐng)求的HttpServletRequest對(duì)象。

使用RequestContextHolder

public String getIpAddress() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        // 上面兩個(gè)獲取Ip的邏輯都可以
    }

這種方法可以在任何Spring管理的Bean中使用,提供了一種靈活的方式來(lái)獲取客戶端IP地址。

誤區(qū)

Spring Boot中的bean,那不是可以使用@Autowired 注解自動(dòng)注入嗎?

直接使用 @Autowired 注解通常不能自動(dòng)注入 HttpServletRequest 對(duì)象,因?yàn)?nbsp;HttpServletRequest 是與單個(gè) HTTP 請(qǐng)求關(guān)聯(lián)的,它的作用域是請(qǐng)求級(jí)別的,而不是整個(gè)應(yīng)用程序。

總結(jié)

本文介紹了在Spring Boot中獲取客戶端IP地址的幾種方法,包括在Controller中直接獲取、使用X-Forwarded-For頭、以及在非Controller組件中通過(guò)RequestContextHolder獲取。在實(shí)際應(yīng)用中,可能需要根據(jù)具體情況選擇最合適的方法。

到此這篇關(guān)于springboot實(shí)現(xiàn)獲取客戶端IP地址的示例代碼的文章就介紹到這了,更多相關(guān)springboot 獲取客戶端IP地址內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中數(shù)組協(xié)變和范型不變性踩坑記錄

    Java中數(shù)組協(xié)變和范型不變性踩坑記錄

    數(shù)組的協(xié)變性來(lái)源于數(shù)組的一個(gè)優(yōu)勢(shì),這篇文章主要給大家介紹了關(guān)于Java中數(shù)組協(xié)變和范型不變性踩坑的一些內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • SpringBoot2底層注解@Import用法詳解

    SpringBoot2底層注解@Import用法詳解

    這篇文章主要為大家介紹了SpringBoot2底層注解@Import用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • springboot+rabbitmq實(shí)現(xiàn)指定消費(fèi)者才能消費(fèi)的方法

    springboot+rabbitmq實(shí)現(xiàn)指定消費(fèi)者才能消費(fèi)的方法

    當(dāng)項(xiàng)目部署到測(cè)試環(huán)境后,QA測(cè)試過(guò)程中,總是“莫名其妙”的發(fā)現(xiàn)所保存的用戶付款單數(shù)據(jù)有問(wèn)題。這篇文章主要介紹了springboot+rabbitmq實(shí)現(xiàn)指定消費(fèi)者才能消費(fèi),需要的朋友可以參考下
    2021-11-11
  • IDEA使用SpringAssistant插件創(chuàng)建SpringCloud項(xiàng)目

    IDEA使用SpringAssistant插件創(chuàng)建SpringCloud項(xiàng)目

    IDEA 功能強(qiáng)大,可以用來(lái)高效的開(kāi)發(fā)應(yīng)該程序。它還支持第三方插件、用戶可以根據(jù)需要添加自己喜歡的插件。下面介紹如何使用 IDEA 創(chuàng)建 Spring Cloud 項(xiàng)目
    2021-06-06
  • mybatis-plus中更新null值的問(wèn)題解決

    mybatis-plus中更新null值的問(wèn)題解決

    本文主要介紹 mybatis-plus 中常使用的 update 相關(guān)方法的區(qū)別,以及更新 null 的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • java異步調(diào)用的4種實(shí)現(xiàn)方法

    java異步調(diào)用的4種實(shí)現(xiàn)方法

    日常開(kāi)發(fā)中,會(huì)經(jīng)常遇到說(shuō),前臺(tái)調(diào)服務(wù),本文主要介紹了java異步調(diào)用的4種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java使用CollectionUtils工具類判斷集合是否為空方式

    java使用CollectionUtils工具類判斷集合是否為空方式

    這篇文章主要介紹了java使用CollectionUtils工具類判斷集合是否為空方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制

    使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制

    這篇文章主要介紹了使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • mybatis插件優(yōu)雅實(shí)現(xiàn)字段加密的示例代碼

    mybatis插件優(yōu)雅實(shí)現(xiàn)字段加密的示例代碼

    在很多時(shí)候,我們都需要字段加密,比如郵箱,密碼,電話號(hào)碼等,本文主要介紹了mybatis插件優(yōu)雅實(shí)現(xiàn)字段加密的示例代碼,感興趣的可以了解一下
    2023-11-11
  • 聊聊SpringBoot中組件無(wú)法被注入的問(wèn)題

    聊聊SpringBoot中組件無(wú)法被注入的問(wèn)題

    這篇文章主要介紹了SpringBoot中組件無(wú)法被注入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

长岛县| 分宜县| 项城市| 永靖县| 隆子县| 永丰县| 杂多县| 高州市| 湄潭县| 自贡市| 乌兰浩特市| 个旧市| 安顺市| 阿鲁科尔沁旗| 两当县| 西宁市| 无锡市| 临西县| 汝阳县| 金塔县| 和田市| 阜平县| 连平县| 甘南县| 兴业县| 汉中市| 江都市| 天气| 阳信县| 常宁市| 刚察县| 永济市| 友谊县| 新和县| 宁城县| 武邑县| 定南县| 琼海市| 合川市| 平阳县| 安平县|