トップ JSP/Servlet 環境に依存しないURLの書き方

環境に依存しないURLの書き方(getContextPathメソッド)

getContextPathメソッドを用いた環境に依存しないURLの書き方(コードサンプル)をまとめています。

▲記事トップへ

目次

1. getContextPathメソッドとは
2. 環境に依存しないURLの書き方

更新履歴

1. getContextPathメソッドとは

Servlet コンテナは javax.servlet.http.HttpServletRequest オブジェクトを生成し、 Servlet のサービスメソッド (doGet、doPost 等) に引数で渡します。

getContextPathは、javax.servlet.http.HttpServletRequestのメソッドで、 リクエストされた URI のうち、リクエストのコンテキストを指す部分を返すメソッドです。

getContextPathメソッドを用いることで環境に依存しないURLが記述できます。

詳細

2. 環境に依存しないURLの書き方

サンプルを使用して環境に依存しないURLの書き方を解説していきます。

動作確認した環境

アプリの構成

□tomcatホームディレクトリ
├□conf
|└◆server.xml
└□webapps
  └□test
    └◆index.jsp

コンテキスト指定(server.xml)

ここでは、同じアプリに複数のコンテキストパスを設定します。

<?xml version='1.0' encoding='utf-8'?>
 <Server …>
   <Service …>
     <Engine …>
       <Host …>

         <Context path="/aaa"
                  docBase="<tomcatホームディレクトリ>/webapps/test"/>
         <Context path="/bbb"
                  docBase="<tomcatホームディレクトリ>/webapps/test"/>
         <Context path="/ccc"
                  docBase="<tomcatホームディレクトリ>/webapps/test"/>

       </Host>
     </Engine>
   </Service>
 </Server>

JSP(index.jsp)

<%@ page language="java"
 contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC
 "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>環境に依存しないURL</title>
</head>
<body>
<a href="<%= request.getContextPath() + "/index.jsp" %>">
<%= request.getContextPath() + "/index.jsp" %></a>
</body>
</html>

動作確認

全く同じソースを表示していますが、環境に合わせてURLが変わってくれます。

更新履歴

戻る

当サイトについて

Apache Tomcat

Apache HTTP Server

JSP/Servlet

基礎知識

アプリケーションコンテキスト / コンテキスト / コンテキストパス / コンテキスト名.xml / コンテキストルート / サーブレット / マイクロサービス / ルート

appBase属性 / ApplicationContext / getContextPath / JSP / Maven / PageContext / root / server.xml / Servlet / Spring Boot / Tomcat

サイト内のページ