サーブレットが実行されたとき,ローカルのファイルを読み込む方法が分からない
サーブレット実行時にファイルを読み込みたいのだけれども…
この方法でパスを取得してみる
System.out.println(System.getProperty("user.dir"));
c:\eclipse
どうやらプロジェクト内で実行されてるんじゃなくて、eclipseで実行されてるらしい
プロジェクトの中に突っ込んだファイルを指定したいんだけど、もしwarファイルにして配備したときにどうやってファイルのパスを指定したらいいんだろう?環境変数がいるのかな…
解決策
ServletContextを使えばいいらしい
ServletContext context = this.getServletContext(); String path = sc.getRealPath("files.txt");
サーバ上のURLをローカルファイルのアドレスにマッピングしてくれる。
WEB-INFのなかも覗ける
ServletContext context = this.getServletContext(); String path = sc.getRealPath("WEB-INF/files.txt");
ちなみにDWRの場合はWebContextがServletContext持ってるからこんな風にする
WebContext wctx = WebContextFactory.get();
ServletConfig scfg = wctx.getServletConfig();
ServletContext sc = scfg.getServletContext();
String path = sc.getRealPath("files.txt");