我们有个项目,需要获取客户端ip地址,之前使用request.getRemoteAddr(),在公司内网中可以获取到客户端的ip,但后来用了F5以后,获取的ip就成了F5的地址了,请问高手们有没有什么好的办法解决????????????

解决方案 »

  1.   

    在到servlet上先判断...
    String str=request.getRemoteAddr();if(str.equals("F5")){
    跳转到主页面...让用户重新进入
    }else{
    正常执行...
    }
      

  2.   

    那个取到的只是127.0.0.1吧??这个是不行的。
    给你上个代码,给我点分吧哈哈。。
    import java.net.InetAddress;
    import java.net.UnknownHostException;        InetAddress inet = InetAddress.getLocalHost();
            System.out.println("ip=" + inet.getHostAddress());你可以结贴了朋友!
      

  3.   


    这样试试。。
    http://wen66.javaeye.com/blog/375148
      

  4.   

    request.getrealUrl
    request.getPathlz如果设了快捷键的话,可以找到,我在网吧,没法实验啊!
    就是得到请求的真正地址而已!
      

  5.   

    在 F5 上配置 X-Forwarded-For参考 F5 的文档:https://support.f5.com/kb/en-us/solutions/public/4000/800/sol4816.html (需要注册登录后才能看到)
      

  6.   

    我感觉这个问题和你的很想,你去看看
    http://topic.csdn.net/u/20100612/15/e0cac50d-8a6d-45f5-9f14-f109eb3ae4c5.html?16938
        public static String getIP4(HttpServletRequest request){
            String ip = request.getHeader("x-forwarded-for");
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
            return ip;    }使用这种方式才可以获得真实的IP地址,
    使用"request.getRemoteAddr()"只能获得上一次请求机器的地址。
    在实际的系统使用时,你的项目服务器前端可以还会有一些防火墙、WEB服务器缓存等等,
    如是使用request.getRemoteAddr()就只能获得防火墙或是WEB服务器的IP了。
      

  7.   

    用JSPGen通用工具包可解决此问题
      

  8.   

    http://product.zdnet.com.cn/files/productlist.php?subcateid=609&manuid=922&iorder=3------》F5