2012-03-03 25 views
1

以下のコードスニペットがJSPファイルにあります。このコードスニペットでは、IPアドレスでURLを構成しています。 IPアドレスの代わりに、ドメイン名が必要です。 (ここでは、ドメイン名、私はホストファイルにlocalhostのために定義されています。それが定義されていない場合、それはおそらくマシン名を返す必要があります。それは、私はそれがあるべきだと思うものだエントリを意味する)javaでホストファイルからドメイン名を取得するには?

String ip = ""; 
    InetAddress inetAddress = InetAddress.getLocalHost(); 
    ip = inetAddress.getHostAddress(); 
    appUrl=<%=(new java.net.URL(request.getScheme(),ip,request.getServerPort(), "")).toString() %> 

私はこれらのオプションを試しました

inetAddress.getCanonicalHostName(); 
    inetAddress.getHostName(); 

しかし、どちらもコンピュータ名を返します。ドメイン名を取得するにはどうすればよいですか?

EDITこの詳細については、 と明記しています。つまり、hostsファイルに127.0.0.1 myProjectAppという項目があります。 このシナリオでは、私はhttp://myProjectApp/のようなURLを形成したいと思いますが、デカールしない場合は http://machineName/のようなマシン名を返さなければなりません。その背後にある意図は、ネットワーク上のBという別のマシンにこのURLを送信していることです。このURLマシンBを使用して、Aへのバック接続を行います。

答えて

0

ドメイン/ホスト名を取得するには2通りの方法がありますが、それらは異なるものを識別します。 1つはクライアントが使用するURLを識別し、もう1つはデプロイメント記述子で定義されたサーブレットの名前を識別します。

は、クライアントが使用するドメインを取得:

String servletContextName = request.getServletContext().getServletContextName(); 

ServletContext.getServletContextName()参照してください:

パブリックJavaを

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

は、サーブレットが使用するホストを取得します.lang.String getServletContextNam

display-name要素によってこのWebアプリケーションのデプロイメント記述子で指定されている、このServletContextに対応するこのWebアプリケーションの名前を返します。

戻り値: Webアプリケーションの名前。デプロイメント記述子に名前が宣言されていない場合はnull。

以来: サーブレット2.3

+0

しかしrequest.getServerName()私はhostsファイルに127.0.0.1 myProjectAppすなわちエントリを宣言したものの、常にローカルホストを返します。だからこのシナリオで私はそれがmyProjectAppを返す必要が期待ですか? –

+0

設定に関連する情報を読む場合は、環境変数の使用を検討してください。また、使用しているフレームワークやその他のコード例を含めるように質問を更新することもできます。あなたの質問では、IPアドレスの代わりにURLを取得するように頼んだが、詳細がなければ、ユーザーがブラウザに入力するドメイン名のようにドメイン名を意味すると仮定した。 – jmort253

+1

サーブレットコンテキスト名をお探しですか? http://docs.oracle.com/javaee/1.3/api/javax/servlet/ServletContext.html#getServletContextName() – jmort253

関連する問題