网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 服务器教程 > JAVA获取IP地址
商业源码 服务器教程 2024-01-10 5:31:02

JAVA获取IP地址

JAVA获取IP地址,第1张

public static void main(String[] args) { try { // 获取计算机名 String name = InetAddressgetLocalHost()getHostName(); // 获取IP地址 String ip = InetAddressgetLocalHost()getHostAddress(); Systemoutprintln("计算机名:"+name); Systemoutprintln("IP地址:"+ip); } catch (UnknownHostException e) { Systemoutprintln("异常:" + e); eprintStackTrace(); } }

是否可以解决您的问题?

使用JAVA后台代码取得WEBROOT物理路径,可以有如下两种方式:

1、使用JSP Servlet取得WEB根路径可以用requestgetContextPath(),相对路径requestgetSession()getServletContext()getRealPath("/"),它们可以使用我们很容易取得根路径。

2、如果使用了spring, 在WEB-INF/webxml中,创建一个webAppRootKey的param,指定一个值(默认为webapproot)作为键值,然后通过Listener,或者Filter,或者Servlet执行String webAppRootKey = getServletContext()getRealPath("/"); 并将webAppRootKey对应的webapproot分别作为Key,Value写到System Properties系统属性中。之后在程序中通过SystemgetProperty("webapproot")来获得WebRoot的物理路径。

具体示例代码如下:

webxml

<xml version="10" encoding="UTF-8">

<web-app version="24"

xmlns="http://javasuncom/xml/ns/j2ee"

xmlns:xsi="http://wwww3org/2001/XMLSchema-instance"

xsi:schemaLocation="http://javasuncom/xml/ns/j2ee

http://javasuncom/xml/ns/j2ee/web-app_2_4xsd">

<context-param>

<param-name>webAppRootKey</param-name>

<param-value>csc2root</param-value>

</context-param>

<listener>

<listener-class>testApplicationListener</listener-class>

</listener>

</web-app>

ApplicationListenerjava

package test;

import javaxservletServletContextEvent;

import orgspringframeworkwebcontextContextLoaderListener;

public class ApplicationListener extends ContextLoaderListener {

public void contextDestroyed(ServletContextEvent sce) {

// TODO Auto-generated method stub

}

public void contextInitialized(ServletContextEvent sce) {

// TODO Auto-generated method stub

String webAppRootKey = scegetServletContext()getRealPath("/");

SystemsetProperty("csc2root" , webAppRootKey);

String path =SystemgetProperty("csc2root");

Systemoutprintln("sssss:::"+path);

}

}

testjava

public class test {

public void remve(){

String path =SystemgetProperty("csc2root");

Systemoutprintln("result::::::::"+path);

}

}

indexjsp

<%@ page language="java" import="javautil" pageEncoding="UTF-8"%>

<%@ page import="javautil" %>

<%@ page import="testtest" %>

<%

String path = requestgetContextPath();

String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/";

%>

<%

test t = new test();

tremve();

%>

<html>

</html>

部署程序发布 启动TOMCAT 运行indexjsp 就可以调用JAVA中全局设置的物理路径了(说明这里的JSP 只是调用了TESTJAVA 的remove方法,不做其他使用。原理解释,TOMCAT启动和读取WEBXML 监听方式加载SPRING ApplicationListener继承SPRING ContextLoaderListener加载SPRING顺便吧全局路径赋值给csc2root 描述,这样之后JAVA 代码中就可以使用SystemgetProperty("csc2root")调用全路路径了。

嗨 你好

据网上了解到:

在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。

如果使用了反向代理软件,将http://1921681110:2046/ 的URL反向代理为 http://wwwjavapeixuncomcn / 的URL时,用requestgetRemoteAddr()方法获取的IP地址是:127001 或 1921681110,而并不是客户端的真实IP。

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

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

public String getRemortIP(HttpServletRequest request) { if (requestgetHeader("x-forwarded-for") == null) { return requestgetRemoteAddr(); } return requestgetHeader("x-forwarded-for"); }

可是当我访问http://www5a520cn /indexjsp/ 时,返回的IP地址始终是unknown,也并不是如上所示的127001 或 1921681110了,而我访问http://1921681110:2046/indexjsp 时,则能返回客户端的真实IP地址,写了个方法去验证。原因出在了Squid上。squidconf 的配制文件 forwarded_for 项默认是为on,如果 forwarded_for 设成了 off则:X-Forwarded-For: unknown

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

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; }

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

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

如:X-Forwarded-For:1921681110, 1921681120, 1921681130, 1921681100用户真实IP为: 1921681110

希望可以帮到你的忙

祝你学习愉快

   获得项目服务器的IP大概做法是在配置文件里面进行配置,可以使服务器已启动便执行,示例如下:

启动服务器的时候启动一个类,可以在webxml中配置,如下:

<servlet>

    <servlet-name></servlet-name>

    <servlet-class></servlet-class>

    <init-param>

      <param-name>basedir</param-name>

      <param-value></param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

  </servlet>

指明你需要启动的servlet即可

requestgetHeader("REDIRECT_URL");

或试试

那在servlet里边或者action调用requestgetRequestURL()就是了。

如果是获得容器内部的请求URI:requestgetRequestURI(),两个方法挺象的。

/

  获取访问者IP地址

  <p>在一般情况下使用RequestgetRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。</p>

  <p>本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割)。</p>

  <p>如果还不存在则调用RequestgetRemoteAddr()。</p>

  @param request

  @return

 /

public static String getIp(HttpServletRequest request) {

String ip = requestgetHeader("X-Real-IP");

if (ValidateUtilisNotEmpty(ip) && !"unknown"equalsIgnoreCase(ip)) {

return ip;

}

ip = requestgetHeader("X-Forwarded-For");

if (ValidateUtilisNotEmpty(ip) && !"unknown"equalsIgnoreCase(ip)) {

int index = ipindexOf(",");

if (index != -1) {

return ipsubstring(0, index);

} else {

return ip;

}

} else {

return requestgetRemoteAddr();

}

}

地址 客户端 路径 方法 反向
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » JAVA获取IP地址

商业源码 钻石

分享到:
上一篇
玩剑三电脑关机之后宏就没有了
下一篇
minecraft国际版免费下载手机版1.20

相关推荐

网页502错误怎么解决

网页502错误怎么解决

win7策略服务器被禁用不能联网怎么办??

win7策略服务器被禁用不能联网怎么办??

什么是服务器

什么是服务器

linux服务器架构ipv6

linux服务器架构ipv6

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...