springboot如何獲取請求者的ip地址
在Spring框架中,可以使用攔截器(Interceptor)來監(jiān)聽每個控制器(Controller)的請求,并記錄請求者的IP地址。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IpLoggingInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 在請求處理之前調(diào)用,可以記錄IP地址等信息
String clientIpAddress = getClientIpAddress(request);
System.out.println("IP地址:" + clientIpAddress);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 在請求處理之后調(diào)用,但在視圖渲染之前
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// 在整個請求完成后調(diào)用,可以進(jìn)行一些清理工作
}
private String getClientIpAddress(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;
}
}上述代碼中的 IpLoggingInterceptor 類實現(xiàn)了 HandlerInterceptor 接口,其中的 preHandle 方法在請求處理之前被調(diào)用。在該方法中,我們獲取了請求者的IP地址,并進(jìn)行了簡單的打印??梢愿鶕?jù)需要,將這些信息記錄到日志文件或其他存儲設(shè)備中。
接下來,需要將這個攔截器注冊到Spring應(yīng)用中。在Spring Boot項目中,可以使用WebMvcConfigurer來注冊攔截器。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new IpLoggingInterceptor());
}
}到此這篇關(guān)于springboot如何獲取請求者的ip地址的文章就介紹到這了,更多相關(guān)springboot請求者的ip地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot實現(xiàn)獲取客戶端IP地址的示例代碼
- SpringBoot項目中使用OkHttp獲取IP地址的示例代碼
- SpringBoot項目中獲取IP地址的實現(xiàn)示例
- SpringBoot如何獲取客戶端的IP地址
- SpringBoot實現(xiàn)IP地址解析的示例代碼
- SpringBoot獲取客戶端的IP地址的實現(xiàn)示例
- SpringBoot整合Ip2region獲取IP地址和定位的詳細(xì)過程
- springboot獲取真實ip地址的方法實例
- springboot 獲取訪問接口的請求的IP地址的實現(xiàn)
- springboot獲取訪問的ip地址的實現(xiàn)步驟
相關(guān)文章
java中Spring事務(wù)失效的8個常見案例和解決方案
本文分析了8種Spring事務(wù)失效問題及解決方案,涵蓋注解應(yīng)用、方法調(diào)用、異常處理、數(shù)據(jù)庫支持、傳播行為、類管理與事務(wù)管理器配置等,強(qiáng)調(diào)正確配置對數(shù)據(jù)一致性的重要性2025-06-06
Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊問題
這篇文章主要介紹了Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊,簡單介紹了lock鎖及鎖的底層知識,結(jié)合案例給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
springtask 的使用方法和 cron 表達(dá)式解析
這篇文章主要介紹了springtask 的使用方法和 cron 表達(dá)式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10
SpringBoot事務(wù)源碼從注解到數(shù)據(jù)庫的全解析
本文深度解析SpringBoot事務(wù)源碼:從@Transactional注解觸發(fā)AOP代理,到TransactionInterceptor攔截,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2026-03-03
在Windows上設(shè)置JAVA_HOME環(huán)境變量方式
在Windows上設(shè)置JAVA_HOME環(huán)境變量,以便管理和使用JDK,同時對開發(fā)工具和應(yīng)用至關(guān)重要,本文詳細(xì)介紹了如何設(shè)置JAVA_HOME環(huán)境變量,包括下載JDK、查找安裝路徑、設(shè)置JAVA_HOME和Path環(huán)境變量的步驟2026-05-05

