トップ JSP/Servlet コンテキストパスの取得方法

JavaのWebアプリのコンテキストパスの取得方法(getContextPathメソッド)

getContextPathメソッドを使用して、JavaのWebアプリケーション(Sevlet)でコンテキストパスを取得する方法(コードサンプル)を掲載しています。

▲記事トップへ

目次

この記事の目次です。

1. getContextPathメソッドとは
2. サンプルを動作確認した環境
3. Webアプリケーションの構成
4. コンテキスト指定(test.xml)
5. 配備記述子(web.xml)
6. 動作確認

参考)SpringBootのWebアプリケーションのコンテキストパス
参考)Spring Webアプリケーションでコンテキストパスを取得する方法
更新履歴

1. getContextPathメソッドとは

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

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

コンテキストパスは通常リクエスト URI の最初に来ます。 コンテキストパスは "/" から始まりますが、"/" では終わりません。 デフォルト (ルート) のコンテキストに属する Servlet の場合、このメソッドは "" を返します。 コンテナはこの文字列をデコードしません。

詳細

2. サンプルを動作確認した環境

3. Webアプリケーションの構成

□tomcatホームディレクトリ
├□conf
|└□Catalina
|  └□localhost
|    └◆test.xml
└□webapps
  └□test
    └□WEB-INF
      ├□classes
      |└◆SampleServlet.class
      └◆web.xml

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

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

Servlet(SampleServlet.java)

import java.io.IOException;
 import java.io.PrintWriter;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 public class SampleServlet extends HttpServlet {
     private static final long serialVersionUID = 1L;
     public void doGet(HttpServletRequest req, HttpServletResponse res)
                          throws IOException, ServletException {
         res.setContentType("text/html; charset=UTF-8");
         PrintWriter out = res.getWriter();
         out.println("<meta http-equiv=\"content-type\"" +
                 " content=\"text/html; charset=UTF-8\">");
         out.println("<head>");
         out.println("<title>サンプル</title>");
         out.println("</head>");
         out.println("<body>");
         out.println("コンテキストパス:");
         out.println(req.getContextPath());
         out.println("</body>");
         out.println("</html>");
     }
 }

コンパイル

java -classpath <tomcatホーム>/lib/servlet-api.jar:. SampleServlet.java

5. 配備記述子(web.xml)

<?xml version="1.0" encoding="UTF-8" ?>

 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
          version="2.4">
     <servlet>
         <servlet-name>sample</servlet-name>
         <servlet-class>SampleServlet</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>sample</servlet-name>
         <url-pattern>/sample</url-pattern>
     </servlet-mapping>
 </web-app>

6. 動作確認

ブラウザより、「http://<tomcatサーバのホスト>:8080/test/sample」へアクセス。 「コンテキストパス: /test」と表示される。

参考)SpringBootのWebアプリケーションのコンテキストパス

SpringBootのWebアプリケーションのコンテキストパスは、application.propertiesで指定できます。

server.servlet.context-path=<コンテキストパス>

Spring Boot

Spring Bootとは、オープンソースのJavaベースのフレームワークです。マイクロサービスの開発に使用されます。

詳細

参考)Spring Webアプリケーションでコンテキストパスを取得する方法

Spring Webアプリケーションでコンテキストパスを取得する方法です。

たとえば、

@Autowired
private ServletContext servletContext;

というように@AutowiredでservletContextというメンバ変数にDI(インスタンスを設定)した場合は

servletContext.getContextPath()

というように「servletContext.getContextPath()」で取得できます。

更新履歴

この記事の更新履歴です。

戻る

当サイトについて

Apache Tomcat

Apache HTTP Server

JSP/Servlet

基礎知識

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

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

サイト内のページ