Javaサーブレットにおける部分URLやファイルパスの取得

JavaサーブレットでURLやファイルを参照する際、度々迷うのでメモ。

サーブレットの部分URLを取得するメソッド

http://localhost:8080/Context/Servletのサーブレットにアクセスした場合、サーブレットではURLの部分名を以下のように取得できる。

System.out.println(request.getServerName()); // localhost
System.out.println(request.getServerPort()); // 8080
System.out.println(request.getServletPath()); // /Servlet
System.out.println(request.getContextPath()); // /Context
System.out.println(request.getServletContext().getContextPath()); // /Context

したがって、サーブレット内で絶対参照のURLは以下のように組み立てれられる。

"http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + request.getServletPath()

サーブレットでローカルファイルパスを取得するメソッド

http://localhost:8080/Context/directory/test.txtのファイルは、以下のメソッドでローカル絶対パスを取得できる。

request.getServletContext().getRealPath("directory/test.txt");
つまりURLのContextPath以降の部分を指定することで、ローカルの絶対パスに変換できる。

関連記事


  1. 脆弱性診断ええんやで for ルーキーズ に参加しました
  2. JSUG勉強会2019その2 に参加しました
  3. Spring BootをGoogle App Engineフレキシブル環境へデプロイする
  4. Spring BootをGoogle App Engineスタンダード環境にデプロイする
  5. ModelMapperで1対1に対応しないフィールドのマッピング
  6. Javaでオブジェクト配列からフィールド配列を生成
  7. JJUG CCC 2019 Springに参加してきました

tosi avatar
tosi
Web Application Engineer, Java / Spring / Azure / GCP
comments powered by Disqus