jsp获取客户端局域网的ip,第1张

String ip = requestgetHeader("x-forwarded-for");

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetHeader("Proxy-Client-IP");

}

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetHeader("WL-Proxy-Client-IP");

}

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetRemoteAddr();

}

这样获取的ip就是内网的IP了 请记住我们的团队

假如用代理服务器,requestgetRemoteAddr(); 只能得到代理服务器地址,以下方法是得到正确所有ip的方法

在jsp声明这个函数

<%!public String getIpAddr(HttpServletRequest request) {

String ip = requestgetHeader("x-forwarded-for");

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetHeader("Proxy-Client-IP");

}

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetHeader("WL-Proxy-Client-IP");

}

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetRemoteAddr();

}

return ip;

}%>

嵌入jsp网页中,然后用<%String ip=getIpAddr(request);%>得到访问者ip

ip就是访问者的ip,你保存到数据库或者缓存中,就由你自己了

127001是回送地址,指本地机,一般用来测试使用。回送地址(127xxx)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。

假如你测试的是www服务器所在的计算机当然会返回这样的结果

如果你在本地使用localhost或127001地址来测试,那只能获取到127001,而对于外网访问者,是一定可以获取得到他的真实IP的。 String realIP=requestgetHeader("x-forwarded-for");

String ip = requestgetRemoteAddr();

if(realIP==null||realIPlength()==0)

{

outprintln("真实IP:"+ip);

}

else

{

outprintln("真实IP:"+realIP);

}

1, 在JSP页面导入javanet

2 获得IP地址代码

   

 InetAddress hostAndIP = null;

    try {

             hostAndIP = InetAddressgetLocalHost();

     } catch (UnknownHostException e) {

            eprintStackTrace();

     }

     String ip = hostAndIPtoString();

3 获得mac地址的方法, 接上

   

  byte[] mac = new byte[0];

        try {

            InetAddress hostAndIP = hostAndIPgetLocalHost();

            mac = NetworkInterfacegetByInetAddress(hostAndIP)getHardwareAddress();

        } catch (SocketException e) {

        } catch (UnknownHostException e) {

        }

        StringBuffer buffer = new StringBuffer("");

        for (int i = 0; i < maclength; i++) {

            if (i != 0) {

                bufferappend("-");

            }

            //字节转换为整数

            int temp = mac[i] & 0xff;

            String str = IntegertoHexString(temp);

            if (strlength() == 1) {

                bufferappend("0" + str);

            } else {

                bufferappend(str);

            }

        }

        String mac= buffertoString();

这种是直接把代码写在页面上,建议封装一个工具类直接在页面上导入后调用方法获得IP和MAC,或者写成自定义标签

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » jsp获取客户端局域网的ip

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情