0

SpringMVCは初めてです。次のように、fileoutputstreamを受け取り、それにxmlを書き込む新しいSpringControllerメソッドを作成しました。

@RequestMapping(value = "/xml", method = RequestMethod.GET, produces = MediaType.APPLICATION_XML_VALUE)

public final void getMappingsAsXML(HttpServletResponse response) {    
    Customer customer = getCustomerMappings();
    try {
          // Generates xml file
          xmlHelper.save(customer, new StreamResult(new FileOutputStream("/WEB-INF/content/customermapping.xml")));
          // print to browser
          // read generated file and write to response outputsteam
        } catch (XmlMappingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

ただし、上記のコードは以下の例外をスローします。

java.io.FileNotFoundException: /WEB-INF/content/customermapping.xml (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:84)

コンテンツディレクトリはすでにWEB-INFフォルダにあります。また、春にブラウザにファイルを書き込むためのより良い方法はありますか?

[ところで、私はMavenを使用しています。]

4

1 に答える 1

0

あなたのパスを使用することにより、ドライブのルートにあるディレクトリに名前が付けられ/WEB-INF/content/customermapping.xmlたファイルを書き込むようにJavaに指示します。これはあなたが望むもののようには聞こえません。customermapping.xmlWEB-INF/content

先頭を削除してみてください/

ただし、Tomcatなどの一部のサーブレットコンテナは、アプリケーションをアンデプロイするときに(デフォルト設定で)ディレクトリ全体を削除するだけなので、Webアプリケーションをホストしている同じディレクトリ内のファイルに書き込むことはおそらく悪い考えです。webappの外部のディレクトリに書き込む方がはるかに優れています。

于 2012-08-28T18:19:51.533 に答える