0

私はJavaサーブレットを初めて使用します。テキストファイルを読み書きするアプリケーションを書いています。ただし、JSPを使用してJavaサーブレットでこのアプリケーションを実行しています。サーブレットをEclipseで実行すると、ファイルが見つからないというエラーが報告され続けます。サーブレットが文句を言わないようにファイルパスを修正する方法が本当にわかりません。

基本的に、アプリケーションとサーブレットのコードは同じsrcフォルダーにありますが、パッケージは異なります。これらのテキストファイルをどこに配置し、どのように読み書きする必要があるかを教えてください。どうもありがとうございます。

4

3 に答える 3

1

いくつかの情報

  • Web アプリケーションのコンテキスト ルートにあるファイルは、クライアントが参照できます。これは望ましい機能ではないと思います。
  • Web アプリケーションの WEB-INF フォルダーにあるファイルは、Web アプリケーションからアクセスできますが、クライアントから参照することはできません。

推奨される解決策 1

  • WEB-INF フォルダーの下のフォルダーにファイルを配置することを計画します。おそらく「Files」という名前です (つまり、「WEB-INF/Files」)。
  • 実際のファイル パスを取得するには、ServletContext.getRealPath()を使用します。
  • Java IO (BufferedReader、Scanner、その他のもの - 選択) を使用してファイルを読み書きします。

推奨される解決策 2

以下のコメントに基づいています。サーブレットは、既知のホスト上のサーブレット コンテナー (おそらく Tomcat) にインストールされる Web アプリケーションの一部になります。ホスト上にディレクトリを作成します。このディレクトリをパラメーターとしてサーブレットに追加します (おそらくサーブレット構成、プロパティ ファイル、ハードコードされた文字列、またはその他のソリューション)。これが完了すると、サーブレットはファイルの読み取りと書き込みの場所を認識します。その時点で、アプリケーションは問題のファイルを読み書きできます。

このソリューションで getRealPath() を使用する必要はありません。実際のパスはサーブレットへのパラメーターです。

推奨読書リスト

概要 (古いかもしれませんが、それでも十分です) については、Core Servlets Web サイトの「Intermediate Servlets & JSP」および「Advanced Servlets & JSP」チュートリアルを参照してください。

もう 1 つの紹介元はJava EE 5 チュートリアルです。チュートリアル全体は適切ですが、サーブレットの情報については、第 II 部の第 3 章と第 4 章に注目してください。私はJava EE 6 チュートリアルよりもこのチュートリアルを好みますが、それは個人的な好みかもしれません。

于 2012-08-08T14:29:25.647 に答える
0

ファイルはどこにでも配置できますが、直接アクセスできないように WEB-INF の下に配置することをお勧めします。

次を使用してアクセスできます。

getServletContext().getRealPath("/WEB-INF/ファイル名");

于 2012-08-08T14:29:02.033 に答える
0

デフォルトのディレクトリは、プロジェクトのディレクトリです。ファイルをプロジェクト ディレクトリに置きます。私にとっては「C:\Documents and Settings\myusername\workspace\projectname」です。

于 2012-08-08T14:01:34.410 に答える