[英]How to get the domain name from host file in java?
我在JSP文件中有以下代碼段。 在此代碼段中,我將使用IP地址構成URL。 我需要域名而不是IP地址。 (這里是域名,我的意思是我在主機文件中為localhost定義的條目。如果未定義,它可能會返回機器名稱。這就是我認為的樣子)
String ip = "";
InetAddress inetAddress = InetAddress.getLocalHost();
ip = inetAddress.getHostAddress();
appUrl=<%=(new java.net.URL(request.getScheme(),ip,request.getServerPort(), "")).toString() %>
我嘗試了這些選項
inetAddress.getCanonicalHostName();
inetAddress.getHostName();
但是兩者都返回計算機名稱。 我應該如何獲取域名?
編輯來澄清這一點,我已經聲明了條目,即主機文件中的127.0.0.1 myProjectApp。 因此,在這種情況下,我想形成類似於http:// myProjectApp /的url,但是如果我不對它進行除名,它將返回諸如http:// machineName /的機器名稱。 其背后的目的是我將這個url發送到網絡上另一台機器B上。 使用此URL機器B將與A反向連接。希望它能澄清
有兩種獲取域/主機名的方法,但是它們標識不同的事物。 一個標識客戶端使用的URL,另一個標識部署描述符中定義的Servlet的名稱。
檢索客戶端使用的域:
int port = request.getServerPort();
// if port is default or 0, just use the default port.
String appUrl =
request.getScheme() + "://" + request.getServerName();
// if it's not the default port, append the port to your url
if(port != 80 || port != 443 || port != 0) {
appUrl += ":" + new Integer(port).toString();
}
檢索Servlet使用的主機 :
String servletContextName = request.getServletContext().getServletContextName();
參見ServletContext.getServletContextName() :
公共java.lang.String getServletContextName()
返回與該ServletContext相對應的此Web應用程序的名稱,該名稱由display-name元素為此Web應用程序的部署描述符中指定。
返回:Web應用程序的名稱;如果在部署描述符中未聲明任何名稱,則返回null。
由於:Servlet 2.3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.