Java獲取服務(wù)器IP及端口的方法實(shí)例分析
本文實(shí)例講述了Java獲取服務(wù)器IP及端口的方法。分享給大家供大家參考,具體如下:
前幾天寫(xiě)過(guò)一個(gè)獲取遠(yuǎn)程服務(wù)器的IP和端口的程序,從網(wǎng)上查了一些資料順便加一些自己的理解,希望對(duì)大家有所幫助:
struts2 獲取request
HttpServletRequest requet=ServletActionContext.getRequest(); requet.getScheme()+"://"+requet.getServerName()+":"+requet.getServerPort()
(例如)結(jié)果為:http://localhost:8080/
request.getHeader("User-Agent"); //就是取得客戶(hù)端的系統(tǒng)版本 request.getRemoteAddr(); //取得客戶(hù)端的IP request.getRemoteHost() //取得客戶(hù)端的主機(jī)名 request.getRemotePort(); //取得客戶(hù)端的端口 request.getRemoteUser(); //取得客戶(hù)端的用戶(hù) request.getLocalAddr(); //取得服務(wù)器IP request.getLocalPort(); //取得服務(wù)器端口
1、JSP中獲得當(dāng)前應(yīng)用的相對(duì)路徑和絕對(duì)路徑
根目錄所對(duì)應(yīng)的絕對(duì)路徑:request.getRequestURI()
文件的絕對(duì)路徑 :application.getRealPath(request.getRequestURI());
當(dāng)前web應(yīng)用的絕對(duì)路徑 :application.getRealPath("/");
取得請(qǐng)求文件的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()
2 Servlet中獲得當(dāng)前應(yīng)用的相對(duì)路徑和絕對(duì)路徑
根目錄所對(duì)應(yīng)的絕對(duì)路徑:request.getServletPath();
文件的絕對(duì)路徑 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
當(dāng)前web應(yīng)用的絕對(duì)路徑 :servletConfig.getServletContext().getRealPath("/");
ServletContext對(duì)象獲得幾種方式:
javax.servlet.http.HttpSession.getServletContext() javax.servlet.jsp.PageContext.getServletContext() javax.servlet.ServletConfig.getServletContext()
3.Java類(lèi)中獲得絕對(duì)路徑
根據(jù)java.io.File的Doc文擋,可知: 默認(rèn)情況下new File("/")代表的目錄為:System.getProperty("user.dir")
。
擴(kuò)展:
上面的獲取IP方法,只能獲取到127.0.0.1,無(wú)語(yǔ)
在window下使用
InetAddress.getLocalHost().getHostAddress()
這種方法在linux卻只能取到127.0.0.1這個(gè)讓人無(wú)奈的地址。。。這簡(jiǎn)直是讓人不能忍受的啊。。。這種地址不用獲取,我們誰(shuí)不知道。。。
在網(wǎng)上搜索了很多,發(fā)現(xiàn)說(shuō)這個(gè)問(wèn)題的并不多,所以,我把找到的一段代碼分享給大家。。。當(dāng)然這段代碼需要jdk1.5以上版本
Java代碼:
Enumeration<NetworkInterface> netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { System.out.println("IP:" + ips.nextElement().getHostAddress()); } } } catch (Exception e) { e.printStackTrace(); } Enumeration<NetworkInterface> netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { System.out.println("IP:" + ips.nextElement().getHostAddress()); } } } catch (Exception e) { e.printStackTrace(); }
這段代碼會(huì)輸出計(jì)算機(jī)中所有設(shè)備的ip,找需要的用吧,呵呵
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java Socket編程技巧總結(jié)》、《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
一文搞懂Java頂層類(lèi)之Object類(lèi)的使用
java.lang.Object類(lèi)是Java語(yǔ)言中的根類(lèi),即所有類(lèi)的父類(lèi)。它中描述的所有方法子類(lèi)都可以使用。本文主要介紹了Object類(lèi)中toString和equals方法的使用,感興趣的小伙伴可以了解一下2022-11-11

MyBatisPlus條件構(gòu)造器圖文實(shí)例詳解

java四種訪(fǎng)問(wèn)權(quán)限實(shí)例分析

詳解關(guān)于Spring Cloud 框架熱部署的方法

Java中可以實(shí)現(xiàn)負(fù)載均衡的算法詳解

springboot 配置日志 打印不出來(lái)sql的解決方法