JSP获取IPv4的解决方案 而不是IPv6:0:0:0:0:0:0:0:1 !!!!

我的工具:eclipse JEE
从今天上午11:30到今天下午17.40:终于解决了一个心头大患;脑壳痛

问题来源:只要电脑和手机连得是同一个网络,我的手机就能访问我本机服务器上面的网络页面,也就是局域网。但是每次用eclipse运行jsp程序的时候,因为我是自己电脑做服务器,url用的是localhost例如【http://localhost:8080/secondary_market_web/getID_test.jsp
在我的电脑上面访问当然没有问题,但是直接把含有”localhost”的链接发给局域网内的其他人却是打不开的,必须要用电脑IP(IPv4)地址代替“localhost”字符串,这样别人才能访问。 问题是,服务器上(本人的电脑)网页众多,何况IP地址每天都会换,换一个WiFi也会随之换一个IP,难道每次要用局域网内其他客户端访问服务器上网页的时候,我都要去我的电脑上改变源代码,在JSP文件的超链接中的地址值修改成当前的IP吗?
对不起我很懒,也不太现实去一个个改源代码里面的地址。
所以我需要调用一个函数每次运行时帮我自动获取IP地址,再用连接字符串的方式与文件路径一起拼接成一个链接!

问题来了!用网络上面的方法/函数request.getRemoteAddr()运行得到的我的IP地址怎么都是“0:0:0:0:0:0:0:1”。查询CSDN的答案是“在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1”
ps:localhost==127.0.01==”0:0:0:0:0:0:0:1(IPv6形式)”,是等价的。

继续在网上看了一下午一直在尝试各种解决方案,不管怎样,测试时在jsp上out.println的ip值都是0:0:0:0:0:0:0:1,终于我看到了一个别出心裁的方法,正巧我自己也是这样的想法,碰到了大牛用代码实现了—————调用cmd获取电脑IP值!!!

用CMD命令的方法返回本机IP值:
代码实现如下
在eclipse JEE中找到web项目文件–>Java Resources–>src中新建一个包getIP,再新建一个类名为
getIP.java:
代码:

package getIP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class getIP {
    public static String getLocalIPForCMD(){
        StringBuilder sb = new StringBuilder();
        String command = "cmd.exe /c ipconfig | findstr IPv4";  
        try {
            Process p = Runtime.getRuntime().exec(command);
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
            String line = null;
            while((line = br.readLine()) != null){
                line = line.substring(line.lastIndexOf(":")+2,line.length());
                sb.append(line);
            }
            br.close();
            p.destroy();
        } catch (IOException e) {
            e.printStackTrace();
        }  
        return sb.toString();
    }
}

在eclipse JEE中找到web项目文件–>WebContent中找到需要使用IP的jsp文件:
在该JSP文件中部分引入包含头文件

<head>
<%@ page import="getIP.getIP" %>
</head>

在body中直接调用自己写的函数,如下:

<body>
<% 
 String IP=getIP.getLocalIPForCMD();
 %>
 通过cmd查找到您的 IPv4为:<%=IP %>
</body>

调试即可!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值