- PR -

サーバURLの取得

1
投稿者投稿内容
みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2005-04-14 03:09
サーブレット、JSPに対して
次のURLにリクエストがあったときに
http://hogehoge.com/myweb/sub/hoge.jsp

次のところまでの文字列を取得したいと思っています。
http://hogehoge.com/myweb/

この文字列をメソッド一発ぐらいでとれる簡単な方法ってないでしょうか?
よろしくお願いします。


[補足]
-HTMLのBASEタグで上のURLを指定して、個別のリンク箇所にはコンテキストルートからのパスを指定したいと思っています。
-カスタムタグは利用せず、生サーブレット/JSPの範囲内で解決できる手段を探しています
-ちなみに今、こんな感じです。

String base
= request.getScheme()
+ "://"
+ request.getServerName()
+ ":"
+ request.getServerPort()
+ request.getContextPath()
+ "/"
;
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2005-04-14 10:41
一発ではムリですが、こんなのはどうでしょう。

StringBuffer sbRequestURL = request.getRequestURL ();
String sServletPath = request.getServletPath ();
int index = sbRequestURL.lastIndexOf (sServletPath);
String base = sbRequestURL.substring (0, index+1);


[ メッセージ編集済み 編集者: yos 編集日時 2005-04-14 10:43 ]
みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2005-04-14 20:33
yosさん。
回答ありがとうございます。

リクエストURL
http://hogehoge.com/myweb/sub/hoge.jsp

からサーブレットパス
/sub/hoge.jsp

の差分をとるとは、面白い方法ですね。
<del>あ、サーブレットパスだと、フォワードしたときリクエストのURLと違っちゃいますね(それがよい場合もあるでしょうけど)。</del>


うーん。
JSPの式に書いて、あまり目立たないぐらいの長さだといいんですけど、
ユーテリティなり何なり作って呼ぶしかないか。。。


[ メッセージ編集済み 編集者: みやも 編集日時 2005-04-14 20:34 ]

[ メッセージ編集済み 編集者: みやも 編集日時 2005-04-18 20:24 ]
みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2005-04-14 20:38
ちなみにStrutsの<html:base/>タグ(から使われるRequestUtils)はこんな感じのようです。

コード:
    public static StringBuffer createServerStringBuffer(String scheme,String server,int port) {

        StringBuffer url = new StringBuffer();
        if (port < 0) {
            port = 80; // Work around java.net.URL bug
        }
        url.append(scheme);
        url.append("://");
        url.append(server);
        if ((scheme.equals("http") && (port != 80)) || (scheme.equals("https") && (port != 443))) {
            url.append(':');
            url.append(port);
        }
        return url;

    }

1

スキルアップ/キャリアアップ(JOB@IT)