簡體   English   中英

如何從Java中的主機文件獲取域名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM