0

JSP とサーブレットを使用して Web サイトに取り組んでいます。データベースの代わりに、サーバーに XML ファイルを置きたいと考えています。ユーザーが入力した情報をプロジェクト内の XML ファイルに保存したいと考えています。これは、[コードでそのようなパスを定義するにはどうすればよいですか?] の下に保存されています。

私のサーブレットは下Project/src/servletPackage/myServlet.javaにあり、XML ファイルは現在下にありProject/WebContent/file.xmlます。パスは次のようにしないでください。C:/eclispe/workspace/Project/WebContent/file.xml

これは機能しますが、メイン コンピューターから Web ページにアクセスした場合のみです。他のコンピューターでは、ユーザーのコンピューターにディレクトリを作成します

4

3 に答える 3

0

クラスローダーを使用して、アプリケーションのクラスパスに保存されているリソースにアクセスできます。xml を WEB-INF/classes またはサーバーで構成された他のフォルダーにクラスパスの一部として配置し、メソッド classLoader.getResourceAsStream を使用して Inputflow を取得してファイルを読み取ることができます。

この方法でプロパティ ファイルをロードする方法の例を次に示します。

このソリューションは、サーブレットが 1 つのサーブラーにデプロイされている場合にのみ機能することに注意してください。クラスターまたはマルチサーバー環境で作業する場合、これらのファイルはサーバーによって共有されません。

ファイルを共有する必要がある場合は、ファイルを共有フォルダーに配置し、コードで絶対パスをハードコードすることを避けるために、サーブレットの init パラメーターを使用してストレージ フォルダーのルートを指定します。たとえば、次のようになります。

<web-app>
<servlet>
    <servlet-name>MyServletName</servlet-name>
    <servlet-class>com.mycompany.MyServlet</servlet-class>

    <init-param>
        <param-name> storagefolder</param-name>
        <param-value>/var/opt/sun/appserver/sharedstoragefolder</param-value>
    </init-param>
    ...
</servlet>
...
</web-app>

この助けを願っています。

于 2012-08-09T14:31:05.380 に答える
0

XML をプロジェクトのクラスパスに配置し、ResourceStream としてアクセスできます。Eclipse でこれを行う簡単な方法は、ソース コード フォルダーにパッケージを作成し、そこに必要なファイルを追加することです。

Project
+ src
  + com.mycompany.bean
    - Bean1.java
    - Bean2.java
    ...
  + xml
    - file.xml

Bean1 クラスからファイルにアクセスする

public class Bean1 {

    public void accessResourceFile() {
        InputStream xmlFile = Bean1.getClass().getResourceAsStream("xml/file.xml");
        //do what you want/need with the file...
    }
}

もう一つの例:

于 2012-08-09T15:45:30.490 に答える
0

ユーザーが入力した情報をプロジェクト内の XML ファイルに保存したい

それがあなたがしたいことなら、それから使用してください

File infoFile = new File(getServletContext().getRealPath("/file.xml"));
于 2012-08-09T14:25:30.507 に答える