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. ネットワークが落ちていたらWindowsを自動で再起動する
  2. AWSソリューションアーキテクト アソシエイトに合格しました
  3. 脆弱性診断ええんやで for ルーキーズ に参加しました
  4. JSUG勉強会2019その2 に参加しました
  5. Spring BootをGoogle App Engineフレキシブル環境へデプロイする
  6. Spring BootをGoogle App Engineスタンダード環境にデプロイする
  7. ModelMapperで1対1に対応しないフィールドのマッピング

comments powered by Disqus