问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java编程如何获取本地ip并显示在文本框中

发布网友 发布时间:2022-04-24 17:34

我来回答

1个回答

热心网友 时间:2023-10-26 20:28

jsp中:
request方法
客户端IP: request.getRemoteAddr()
输出:192.168.0.106
客户端主机名:request.getRemoteHost()
输出:abc
request.getHeader("Host")
输出:192.168.0.1:8080
Web服务器名字:request.getServerName()
输出:192.168.0.1
服务器监听的端口:request.getServerPort()
输出:8080
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP。

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪 原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp 文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过 request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

于是可得出获得客户端真实IP地址的方法一:

public String getRemortIP(HttpServletRequest request) {

if (request.getHeader("x-forwarded-for") == null) {

return request.getRemoteAddr();

}

return request.getHeader("x-forwarded-for");

}

获得客户端真实IP地址的方法二:

public String getIpAddr(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;

}

可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?

答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。如:

X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实IP为: 192.168.1.110

参考资料:http://apps.hi.baidu.com/share/detail/5465573

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
64岁的老头感冒了,还喝一瓶啤酒,又喝3包感冒药,吃了3个阿莫西林消炎药... ...今天中午12点喝了一瓶啤酒,不会有反应死了吧? 喝一瓶啤酒吃药没事吧 养育孩子有哪些正确的方式? 联想电脑一开机就蓝屏怎么解决 光遇冥想任务怎么完成_冥想任务攻略 光遇 光遇云野的锦鲤池冥想怎么做? 光遇 光遇在滑冰场旁冥想的任务怎么做? 光遇在仙乡的金塔下冥想任务怎么做 任务达成方法介绍 光遇 光遇在禁阁的神坛旁冥想怎么做? 5分钟左右的视频剪辑后期制作需要多少钱? 《java》中如何提取本地IP? java里面如何获取服务器的ip地址,帮帮忙 java获取局域网ip地址 具体代码 影视后期剪辑收费方式 java获取客户端IP 剪辑一条5分钟的视频一般收费多少? java 如何验证ip地址 电脑蓝屏 错误代码0x00000001a 怎样通过Java程序 获取本机IP地址..试了几种方法都不行 获取的都是192.168.*.*这种.想得到网络IP那种,求 java 获取客户端ip地址 怎么修改呀? 梦见已故的妈妈想要白瓜子和鱼缸里的小鱼 求java获取手机ip或者平板ip的代码 白瓜和什么能间作? 白瓜里有蛆吃了怎么办? 外面像西瓜,里面是白瓜叫什么爪 梦见和老公去摘芒果,在回程的时候,看到个白瓜,去摘,然后一条红色纹的大蟒蛇追着我跑,跑到家关门。 梦见茄瓜长进白瓜里? 孕28周做梦去捡白瓜确被藏在白瓜下的蝙蝠咬了手,预示着什么呀? java里,怎么取得IP地址 了java查看ip地址 Java中的ip检查 JAVA判断正确ip号 java 正则表达式 提取IP 用java语言 截取字符串中的Ip地址,并判断是否合法,请问怎么做? 例“ip addess 192.160.2.3” 判断合法 事业单位编制调动具体程序?是否征求个人意见? 考取事业单位后怎么调档案? 事业单位跨县区调动需要盖那几个部门的章 考上事业单位,调档流程是什么呢? oppo手机来信息铃声怎么换 我想要更改信息铃声。 多股铜电线怎么接法,有图吗 多股电线接法图解 多股铜电线怎么接法,有图吗 电线怎么接(见图) 接电线要怎样接才算牢固,图片 在哪里可以看接电线正确接法图解? 我梦见满山遍野的青松绿油油的是什么意思? 电线连接有多少种连接方法,求图片 图片中电线怎么接,电工知识。