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

コンテキストパス取得方法(getContextPathメソッド)

概要

このページでは、getContextPathメソッドを使用してSevletでコンテキストパスを取得する方法(コードサンプル)を掲載しています。

getContextPathメソッドとは

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

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

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

動作確認した環境

アプリの構成

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

コンテキスト指定(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

配備記述子(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>

動作確認

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

戻る

当サイトについて

基礎知識

Apache Tomcat

関連知識

Apache HTTP Server

JSP/Servlet

サイト内のページ