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");