2009-07-10 13 views

答えて

83

ServletContextオブジェクトでgetResourceAsStream()メソッドを使用します。

servletContext.getResourceAsStream("/WEB-INF/myfile"); 

ServletContextへの参照は、アプリケーションによって異なります。サーブレットまたはJSPから行いますか?

EDITED:サーブレットオブジェクトの内部にいる場合は、getServletContext()を呼び出します。 JSPの場合は、事前定義変数applicationを使用してください。

+11

サーブレット内にいる場合は、直接getServletContext()を使用できます。 :) –

+1

ああ、良い点。 – skaffman

+1

request-> session-> servletContextからservletContextにアクセスすることもできます。あなたが持っているのはリクエストオブジェクトだけです。 –

5

サーブレットを使用していない私はどのように動作しますか?

のは、私はプロジェクト/ WebContentをでのweb.xmlにアクセスしようとしていましょう/ WEB-INF/web.xmlのWEBの親コンテナを指していることにより、ソースフォルダを追加し、プロジェクトのプロパティSourceタブで

  1. (私の場合はWebContentで)-INFフォルダ

  2. 今度は、クラスローダを使用してみましょう:

    InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml") 
    
0

私がjava(ジャージー)サーバーで作成したsqlite dbファイルにアクセスしていた問題は、パスのみに起因していました。いくつかのドキュメントでは、jdbc connect urlは "jdbc:sqlite://path-to-file/sample.db"のように見えます。二重スラッシュはhttプロトコルスタイルのパスの一部であり、展開すると正しくマップされると思っていましたが、実際には絶対パスまたは相対パスです。だから、ファイルをWebContentフォルダ(tomcatプロジェクト)のルートに置いたとき、このようなuriは "jdbc:sqlite:sample.db"を処理しました。

私が苦労していたことの1つは、デバッガを進んでいるときに、「db:...アクセス権が拒否されました」というメッセージが表示されたことです。私はそれがファイルシステムの権限かSQLユーザー権限の問題だと思った。 SQLiteにMySQLのようなロール/パーミッションの概念がないことを知った後、私は最終的にファイルのパーミッションを変更してから、正しい解決策だと思ったのですが、それは単なる悪いメッセージでした。アクセス許可が拒否されました。ファイルが見つかりません)。

これは誰かを助けることを望みます。

+0

クイックアップデート。これはEclipseで動作しましたが、実際にTomcatインスタンスにデプロイすると失敗しました。これは両方の場所で働いたものです: –

+0

申し訳ありませんが、時間内に編集内容を追加しませんでした。これは、EclipseとTomcatインスタンスにデプロイされたときの両方で機能しました。 ServletContextコンテキスト。 DBConnection = DriverManager.getConnection( "jdbc:sqlite:" + context.getRealPath( "sample.db")); –

関連する問題