Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSP中保存XML文件?_Java_Xml_Jsp_File Io - Fatal编程技术网

Java 如何在JSP中保存XML文件?

Java 如何在JSP中保存XML文件?,java,xml,jsp,file-io,Java,Xml,Jsp,File Io,在我的项目中,我需要将XML文件保存在JSP中。我使用Eclipse作为IDE,希望在项目中保存XML文件,以便Fusioncharts可以使用XML文件生成图形。由于JSP在服务器上运行,我无法给出任何本地路径 StreamResult result = new StreamResult(new File("C:\\graph.xml")); 在这种情况下,这将不起作用,因此在这种情况下我可以做什么?使用。它是独立于平台的,对于JSP/Servlet webapp,它将在容器管理的默认临时文

在我的项目中,我需要将XML文件保存在JSP中。我使用Eclipse作为IDE,希望在项目中保存XML文件,以便Fusioncharts可以使用XML文件生成图形。由于JSP在服务器上运行,我无法给出任何本地路径

StreamResult result = new StreamResult(new File("C:\\graph.xml"));
在这种情况下,这将不起作用,因此在这种情况下我可以做什么?

使用。它是独立于平台的,对于JSP/Servlet webapp,它将在容器管理的默认临时文件夹中创建

File file = File.createTempFile("graph", ".xml");
// ...

您需要使用servlet上下文在servlet中获得独立于web服务器的fiel位置。我喜欢这种做事方式:

public String getCachePath( ServletContext sc, HttpServletRequest request )
{
    //get cache dir from web.xml
    String cacheDir = getInitParameter( "cache.dir");
    //String fileName = File.separator +"tmp"+File.separator +
    String fileName = sc.getRealPath( request.getContextPath() ) + File.separator + "WEB-INF" + File.separator +
    cacheDir + File.separator;
    return fileName; 
}//met
然后可以在web.xml中定义cache.dir,如下所示:

<servlet>
    <servlet-name>server</servlet-name>
    <servlet-class>fully qualified name of your class</servlet-class>
    <init-param>
        <param-name>cache.dir</param-name>
        <param-value>cache</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

服务器
您的类的完全限定名
cache.dir
隐藏物
1.

正如@BalusC所指出的,我的第一个答案可能与使用码头扩大战争有关

因此,无论您使用什么服务器,都可以使用的一种机制是内省:

 InputSream is = YouClass.getResourceAsStream( "file.xml" );
只要file.xml与包含类文件YourClass.class的文件夹位于同一文件夹中(部署时,无论是否在战争中),这将始终有效


Eclipse是一个特殊的资源文件夹,在maven中强制执行,您可以使用它来放置资源,并确保在构建项目时将这些资源与类文件一起部署。

看看apache。@Coolbeans:虽然这个问题的表述确实很糟糕,根据代码片段,我认为OP的问题不在于将文件从客户端上传到服务器。OP只需要(临时)文件的通用文件保存位置。@BalusC-我明白了。在JSP中保存XML文件让我想到了文件上传。。。感谢您的澄清:)当容器被配置为不像在大多数第三方主机上那样扩展WAR时,情况如何
getRealPath()
将返回
null
然后。默认情况下,Jetty扩展(提取)WAR。执行
false
并重试。如何访问此文件?我的意思是,当我有静态xml文件时,我通常将其保存在web inf文件夹中,我的jsp用于自动检测它。谢谢回复只需将
文件
或其
文件输入流
传递给Fusioncharts?这是在xml文件为ni web inf FOLDER时编写的。为此,请使用servlet,这样您就有了
dataURL=graphServletURL
。在servlet中,只需将文件写入响应的
OutputStream
,或者更好的是,将
StreamResult
指向它。您回答的是如何读取文件,而不是如何保存文件
StreamResult
将转换后的XML写入指定目标,并且需要
文件
编写器
输出流
,而不是
输入流