处理java获取ip为0:0:0:0:0:0:0:1的问题

在这里插入图片描述

    @Before("log()")
    //利用切面里面的对象来获取类名方法名,JoinPoint来获取类名和方法名
    public void dobefore(JoinPoint joinPoint){
    
    
        //获取httpRequest后期用来获取url和ip
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        //通过attributes对象来获取Request
        HttpServletRequest request = attributes.getRequest();
        //request.getRequestURL()为StringBuffer类型,用toString()转换为String类型
        String url = request.getRequestURL().toString();
        //獲取ip
        String ip = request.getRemoteAddr();
        String classMethod = joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName();
        Object[] args = joinPoint.getArgs();
        RequestLog requestLog = new RequestLog(url,ip,classMethod,args);
        logger.info("Request :"+requestLog);
    }

在这里插入图片描述

request.getRemoteAddr() 获取的值为0:0:0:0:0:0:0:1的原因及解决办法

1、把URL上的localhost改成127.0.0.1

2丶最近在进行web开发时,在jsp页面获取服务器ip时,遇到了request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1,这是为什么呢,照道理讲,应该是127.0.0.1才对,为什么这个获取的值变成了ipv6了呢,而且我发现这种情况只有在服务器和客户端都在同一台电脑上才会出现(例如用localhost访问的时候才会出现),后来上网查了查原因,原来是/etc/hosts这个东西作怪(在windows上应该是C:\Windows\System32\drivers\etc\hosts这个文件),仅仅只需要文件中的

::1 localhost 这一行被注释掉即可解决问题。另外localhost这个文件很有用,这里你可以添加自己的条目,例如添加 192.168.0.212 myweb 这样子,在浏览器中原来只能使用192.168.0.212来访问的,并可以使用myweb来进行替换。

如果还不能解决,本机访问的时候用127.0.0.1或本机ip代替localhost即可解决

猜你喜欢

转载自blog.csdn.net/weixin_45394002/article/details/111050356
0