JSP中获取IP地址的方法

原创 2017年09月17日 00:19:39

对于在jsp得到客户端的ip地址有下面的方法

1.<input type="hidden" id="jiqiIP" name="jiqiIP"value="<%=request.getRemoteAddr()%>"/> 

同样分情况,本机访问的时候,value是127.0.0.1同在局域网里的其他机器的value是他们机器的ip,外网的也是他们机器的ip,不是客户端公网ip地址,这个没法得到客户端公网的ip

2.<script language="JavaScript" src="http://www.hashemian.com/js/visitorIP.js.php"></script>这一段,可以得到客户端的公网ip地址,只是我没有用这个方法得公网ip我用的是上面的java方法

3.<iframe src="http://www.ip138.com/ip2city.asp"id="frame1"></iframe>用这个iframe也可以得到客户端公网ip,但是IE却很难得到iframe里面的值,不论是控制iframe还是用ajax访问那个url路径都不能得到,因为IE会报错说拒绝访问,最主要的原因是你跨域了(从网上找到的:如果可以跨的话,你不是可以随便修改别人网站的内容了吗?比如你在iframe里加载了百度,你又能通过js控制它,这不是为黑客提供了便利的途径吗),因此无法得到ip,当你不跨域的时候是可以的,如下
myiframe.contentWindow.document.body.innerHTML方式直接通过iframe的id引用,只有IE系列浏览器支持,在其它标准浏览器中无效。

火狐还支持这种方法得到iframe的值,但是IE不支持contentDocument

<html>
<head>
<script type="text/javascript">
function getText(){
  varx=document.getElementByIdx_x_x_x_x("frame1").contentDocument;
 alert(x.getElementsByTagName_r("h3")[0].childNodes[0].nodeValue);
 }
</script>
</head>
<body>

<iframe src="http://www.ip138.com/ip2city.asp"id="frame1"></iframe>
<br /><br/>
<input type="button" onclick="getText()" value="Gettext" />

</body>
</html>

下面还有一个类可以得到服务器所在的公网ip

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExternalIpAddressFetcher {
    //外网IP提供者的网址
    privateString externalIpProviderUrl;

    //本机外网IP地址
    privateString myExternalIpAddress;

    publicExternalIpAddressFetcher(String externalIpProviderUrl) {
       this.externalIpProviderUrl = externalIpProviderUrl;

       String returnedhtml =fetchExternalIpProviderHTML(externalIpProviderUrl);
       parse(returnedhtml);
    }
    privateString fetchExternalIpProviderHTML(String externalIpProviderUrl){
       // 输入流
       InputStream in = null;
       // 到外网提供者的Http连接
       HttpURLConnection httpConn = null;

       try {
           // 打开连接
           URL url = new URL(externalIpProviderUrl);
           httpConn = (HttpURLConnection)url.openConnection();         
           // 连接设置
           HttpURLConnection.setFollowRedirects(true);
           httpConn.setRequestMethod("GET");
           httpConn.setRequestProperty("User-Agent",
                   "Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");

           // 获取连接的输入流
           in = httpConn.getInputStream();
           byte[] bytes=new byte[1024];// 此大小可根据实际情况调整 
           // 读取到数组中
           int offset = 0;
           int numRead = 0;
           while (offset < bytes.length
                  && (numRead=in.read(bytes, offset,bytes.length-offset)) >= 0) {
               offset += numRead;
           } 
           //将字节转化为为UTF-8的字符串       
           String receivedString=newString(bytes,"UTF-8");    
           // 返回
           return receivedString;
       } catch (MalformedURLException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           try {
               in.close();
       

版权声明:版权声明:本作品采用知识共享署名-非商业性使用。转载时请标注http://blog.csdn.net/kangbin825

jsp中 如何得到客户端的访问来源和真实IP地址

http://blog.csdn.net/liuqiwen0512/article/details/7567727 得到网页访问来源的常用方法:     js获取来源页地址方法:     v...
  • liyanlei5858
  • liyanlei5858
  • 2016年09月07日 15:28
  • 3100

JSP 获取真实IP地址的代码

转载:http://www.jb51.net/article/21272.htm 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情...
  • awawfwfw
  • awawfwfw
  • 2015年07月26日 15:18
  • 1283

用Java来获取访问者真实的IP地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I...
  • libaolin198706231987
  • libaolin198706231987
  • 2016年06月07日 14:36
  • 15840

JSP 获取访问者真正的IP地址

request.getRemoteAddr(),这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了, 如果使用了反向代理软件,用re...
  • LeefengBoy
  • LeefengBoy
  • 2016年10月02日 15:41
  • 3656

Jsp 获取访问者IP地址

request.getRemoteAddr(),这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用req...
  • maxracer
  • maxracer
  • 2011年01月05日 17:19
  • 16180

JSP如何获取用户的真实IP地址

JSP如何获取用户的真实IP地址
  • wconvey
  • wconvey
  • 2014年10月20日 09:36
  • 1286

如何用Java和jsp获取服务器ip

Java中: 1、获取服务端ip String ip = InetAddress.getLocalHost().getHostAddress(); 2、获取客户端本机ip String rem...
  • miaoyitao
  • miaoyitao
  • 2017年08月04日 10:15
  • 434

JAVA与Jsp取本机ip地址的正确方法,ipv6有效

//[转]JAVA取本机ip地址的正确方法,ipv6有效 //除普通环境,还能适用于多网卡的、Linux环境 import java.net.Inet6Address; import java....
  • tanyit
  • tanyit
  • 2011年11月01日 15:28
  • 6020

jsp中获取本机ip

  • wzy42563
  • wzy42563
  • 2011年09月20日 13:08
  • 2160

jsp页面获取服务器Ip地址

jsp导入 java.util.* 即可调用其中的方法来获取了 Server Info
  • lipei1220
  • lipei1220
  • 2016年05月04日 17:40
  • 7377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP中获取IP地址的方法
举报原因:
原因补充:

(最多只允许输入30个字)