この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:atom
更新日時:2026-05-17 06:28:42

タイトル: コンテキストパスの取得

JSPでコンテキストパス(アプリケーションのベースパス)を取得する方法を説明します。Webアプリ内のリソースを絶対URLで指す際に必須の処理です。

基本:EL式で取得

以下のコードを実装することでJSP側でコンテキストパスを取得することが可能。

${pageContext.request.contextPath}

これがJSPで最も使われる書き方です。例えば /myapp としてデプロイされている場合、${pageContext.request.contextPath}/myapp を返します。

典型的な利用例

CSS・JS・画像のパスを安全に書く際に使います。

<!-- CSS -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css">

<!-- JS -->
<script src="${pageContext.request.contextPath}/js/app.js"></script>

<!-- 画像 -->
<img src="${pageContext.request.contextPath}/img/logo.png">

<!-- リンク -->
<a href="${pageContext.request.contextPath}/user/list">ユーザー一覧</a>

スクリプトレットで取得する書き方

古い書き方ですが、スクリプトレットでも取得できます。新規実装ではEL式を推奨。

<%= request.getContextPath() %>

JSTL の c:url を使う書き方

JSTLが使える環境では <c:url> も選択肢です。コンテキストパスが自動補完され、セッションIDのURL書き換え(URL rewriting)にも対応します。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<a href="<c:url value='/user/list' />">ユーザー一覧</a>

取得結果の例

デプロイ状況contextPathの値
ROOT.war としてデプロイ""(空文字)
myapp.war としてデプロイ/myapp
独自パス指定 (server.xml)指定したパス

関連する取得

取得対象書き方
コンテキストパス${pageContext.request.contextPath}
リクエストURI${pageContext.request.requestURI}
リクエストURL${pageContext.request.requestURL}
サーバー名${pageContext.request.serverName}
ポート${pageContext.request.serverPort}
プロトコル${pageContext.request.scheme}

注意点

  • 絶対パスのスラッシュに注意: ${pageContext.request.contextPath} は先頭にスラッシュを含むので、続けて書く相対パスは /css/... のように / で始める
  • ROOT配下にデプロイすると空文字になる。${pageContext.request.contextPath}/css/.../css/... になり問題ないが、自前で連結処理する場合は注意
  • リバースプロキシ経由のときは、外部URLとコンテキストパスがズレることがある

関連