【问题标题】:How to get the domain name from host file in java?如何从java中的主机文件中获取域名?
【发布时间】:2012-03-03 11:13:49
【问题描述】:

我在 JSP 文件中有以下代码 sn-p。在这段代码 sn-p 中,我用 IP 地址构成 URL。我想要的是域名,而不是 IP 地址。 (这里的域名,是指我在host文件中为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/ 这样的网址,但如果我不贴花 它应该返回像 http://machineName/ 这样的机器名称。它背后的意图是我将这个 url 发送到另一台机器上,比如网络上的 B。使用此 URL 机器 B 将反向连接到 A。希望它澄清

【问题讨论】:

    标签: java web-applications


    【解决方案1】:

    有两种方法可以获取域/主​​机名,但它们标识不同的东西。一个标识客户端使用的 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。

    因为: 小服务程序 2.3

    【讨论】:

    • 但是 request.getServerName() 总是返回 localhost 虽然我已经在 hosts 文件中声明了条目,即 127.0.0.1 myProjectApp。所以在这种情况下,我希望它应该返回 myProjectApp?
    • 如果您尝试读取与您的配置相关的信息,请考虑使用环境变量。您可能还想更新您的问题以包含您正在使用的框架和更多代码示例。在您的问题中,您要求获取 URL 而不是 IP 地址,并且没有详细信息,我假设您的意思是域名,就像用户在浏览器中键入的域名一样。
    • 您在寻找 Servlet 上下文名称吗? docs.oracle.com/javaee/1.3/api/javax/servlet/…
    猜你喜欢
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多