- PR -

サーブレットの中からそのサーブレット自身(classファイル)のパスを知りたい

1
投稿者投稿内容
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2004-01-09 14:52
お世話になってます。

今、サーブレットで処理した内容をテキストファイルに出力するサーブレットを作っている
のですが、FileOutputStreamにパスを指定せず(ファイル名のみ)にファイル書き込みする
とそのサーブレットのクラスのある \WEB-INF\class\ ではなく、
Apache Group\Tomcat4.1\bin\ に保存されてしまいます。

そのサーブレットと同一のパスに保存するにはどうすればいいのでしょうか?
または、そのサーブレットの絶対パスを取得するにはどうすればいいのでしょうか?

ご存知の方おられましたら、よろしくお願いします。


ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2004-01-09 15:08
ClassLoader#getSystemResourceで取得出来ると思います。
(サーブレットで試した事はないですが・・・)
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-01-09 15:09
getServletContext().getRealPath()
でできませんか。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-01-09 15:32
 "/WEB-INF/classes"を着けないと間違ったのが取得できますね。

//サンプル
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SampleServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
doPost(request,response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
System.out.println(getServletContext().getRealPath("/WEB-INF/classes"+request.getServletPath()));
}

}
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2004-01-09 15:56
みなさん、ありがとうございました。

takuさんの方法で取れました。
#ちなみに、"/WEB-INF/classes" の後ろの request.getServletPath() は不要のよう
#です。物理パスと仮想パスが引っ付いたようになってしまいました。
1

スキルアップ/キャリアアップ(JOB@IT)