0

我是 Spring MVC 的新手。我创建了一个新的 spring 控制器方法,它接受一个 fileoutputstream 并将 xml 写入它,如下所示:

@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.xml驱动器WEB-INF/content目录的目录。这听起来不像你想要的。

尝试删除前导/.

但是,将文件写入托管 Web 应用程序的同一目录中的文件可能是个坏主意,因为某些 servlet 容器(如 Tomcat)在您取消部署应用程序(使用默认设置)时会简单地删除整个目录。写入 webapp 外部的目录要好得多。

于 2012-08-28T18:19:51.533 回答