springboot如何获取请求者的ip地址

 更新时间:2024年07月18日 11:32:26   作者:禾火.  
在Spring框架中,可以使用拦截器(Interceptor)来监听每个控制器(Controller)的请求,并记录请求者的IP地址,这篇文章主要介绍了springboot如何获取请求者的ip地址,需要的朋友可以参考下

在Spring框架中,可以使用拦截器(Interceptor)来监听每个控制器(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 {
        // 在请求处理之前调用,可以记录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 {
        // 在请求处理之后调用,但在视图渲染之前
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // 在整个请求完成后调用,可以进行一些清理工作
    }
    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 类实现了 HandlerInterceptor 接口,其中的 preHandle 方法在请求处理之前被调用。在该方法中,我们获取了请求者的IP地址,并进行了简单的打印。可以根据需要,将这些信息记录到日志文件或其他存储设备中。

接下来,需要将这个拦截器注册到Spring应用中。在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());
    }
}

到此这篇关于springboot如何获取请求者的ip地址的文章就介绍到这了,更多相关springboot请求者的ip地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 整合 MongoDB的示例

    Spring Boot 整合 MongoDB的示例

    这篇文章主要介绍了Spring Boot 整合 MongoDB的示例,帮助大家更好的理解和学习spring boot框架,感兴趣的朋友可以了解下
    2020-10-10
  • Spring @Scheduled定时器注解使用方式

    Spring @Scheduled定时器注解使用方式

    这篇文章主要介绍了Spring @Scheduled定时器注解使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Spring Boot中KafkaListener的介绍、原理和使用方法案例详解

    Spring Boot中KafkaListener的介绍、原理和使用方法案例详解

    本文介绍了Spring Boot中 @KafkaListener 注解的介绍、原理和使用方法,通过本文的介绍,我们希望读者能够更好地理解Spring Boot中 @KafkaListener 注解的使用方法,并在项目中更加灵活地应用
    2023-09-09
  • java爬取豆瓣电影示例解析

    java爬取豆瓣电影示例解析

    这篇文章主要介绍了java爬取豆瓣电影示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java中自己如何实现log2(N)

    Java中自己如何实现log2(N)

    这篇文章主要介绍了Java中自己实现log2(N)的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • swagger如何返回map字段注释

    swagger如何返回map字段注释

    这篇文章主要介绍了swagger如何返回map字段注释的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 基于Java实现一个简单的数据同步组件

    基于Java实现一个简单的数据同步组件

    这篇文章主要为大家详细介绍了如何基于Java实现一个简单的数据同步组件,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
    2023-06-06
  • Java面试题冲刺第二十五天--并发编程3

    Java面试题冲刺第二十五天--并发编程3

    这篇文章主要为大家分享了最有价值的三道关于并发编程的面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • java面试中经常会问到的mysql问题有哪些总结(基础版)

    java面试中经常会问到的mysql问题有哪些总结(基础版)

    MySQL作为常见的数据库技术,其掌握程度往往是评估候选人综合能力的重要组成部分,下面这篇文章主要介绍了java面试中经常会问到的mysql问题有哪些的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-10-10
  • 使用Mybatis时SqlSessionFactory对象总是报空指针

    使用Mybatis时SqlSessionFactory对象总是报空指针

    本文主要介绍了使用Mybatis时SqlSessionFactory对象总是报空指针,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09

最新评论