【Java】HttpServletRequestから色々なURLのとり方

JavaのHttpServletRequestから、リクエストされたURLを取得することができますが、このリクエストされたURLというのは色々な形式のものがあります。

例えば、http://からはじまる全URL、ドメインを含まないパスだけのURL(URI)、コンテキストパスすらも含まないURL(URI)、コンテキストパスのみ。

これら4種類のURL(URI)は全てHttpServletRequestから取得することができます。今回はこの4種類のURLの取得方法を紹介していきます。

[スポンサーリンク]

http://からはじまる全URL

    public String top(HttpServletRequest request) {
        System.out.println(request.getRequestURL());
        return "top";
    }
>実行結果
http://localhost:8080/sample/top

ドメインを含まないパスだけのURL(URI)

    public String top(HttpServletRequest request) {
        System.out.println(request.getRequestURI());
        return "top";
    }
>実行結果
/sample/top

コンテキストパスすらも含まないURL(URI)

    public String top(HttpServletRequest request) {
        System.out.println(request.getServletPath());
        return "top";
    }
>実行結果
/top

コンテキストパスのみ

コンテキストが存在しない場合は空で表示されます。(この場合/は表示されません。)

    public String top(HttpServletRequest request) {
        System.out.println(request.getContextPath());
        return "top";
    }
>実行結果
/sample

さいごに

URLとURIの違いですがhttpからの全パスのみがURLと覚えておくとよいでしょう。

個人的にはコンテキストを含めないケースのURIはよく取得するロジックを書いているような気がします。

それでは!