getContextPathメソッドを使用して、JavaのWebアプリケーション(Sevlet)でコンテキストパスを取得する方法(コードサンプル)を掲載しています。
この記事の目次です。
1. getContextPathメソッドとは
2. サンプルを動作確認した環境
3. Webアプリケーションの構成
4. コンテキスト指定(test.xml)
5. 配備記述子(web.xml)
6. 動作確認
参考)SpringBootのWebアプリケーションのコンテキストパス
参考)Spring Webアプリケーションでコンテキストパスを取得する方法
更新履歴
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
<Context path="/test"
docBase="<tomcatホームディレクトリ>/webapps/test"
reloadable="true">
</Context>
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
<?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」と表示される。
SpringBootのWebアプリケーションのコンテキストパスは、application.propertiesで指定できます。
server.servlet.context-path=<コンテキストパス>
Spring Bootとは、オープンソースのJavaベースのフレームワークです。マイクロサービスの開発に使用されます。
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
サイト内のページ
Copyright (C) 2013-2023 コンテキストパスの設定の仕方. All Rights Reserved. Loarding…