jsp获取客户端局域网的ip
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,或者写成自定义标签
0条评论