Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 如何通过servlet获取自定义XML文件_Java_Jsp_Servlets_Jaxb_Relative Path - Fatal编程技术网

Java 如何通过servlet获取自定义XML文件

Java 如何通过servlet获取自定义XML文件,java,jsp,servlets,jaxb,relative-path,Java,Jsp,Servlets,Jaxb,Relative Path,我有一个servlet,它使用JAXB取消格式并封送XML文件,这是我自己制作的。我的问题是,如果不提供XML文件的完整本地路径,即封送器,我就无法对XML文件进行解组或封送处理。问题是,如果我的朋友不需要编辑XML文件的本地路径,我就无法将项目交付给他。我的解组代码如下所示 ObjectFactory factory = new ObjectFactory(); CarList cl = factory.createCarList(); try { javax.xml.bind.JA

我有一个servlet,它使用JAXB取消格式并封送XML文件,这是我自己制作的。我的问题是,如果不提供XML文件的完整本地路径,即封送器,我就无法对XML文件进行解组或封送处理。问题是,如果我的朋友不需要编辑XML文件的本地路径,我就无法将项目交付给他。我的解组代码如下所示

ObjectFactory factory = new ObjectFactory();
CarList cl = factory.createCarList();

try {
    javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cl.getClass().getPackage().getName());
    javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
    cl = (CarList) unmarshaller.unmarshal(new java.io.File("/Users/martin/NetBeansProjects/Web-Mandatory-Assignment-Part1/web/resources/xml/Cars.xml")); //NOI18N
} catch (javax.xml.bind.JAXBException ex) {
    java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
}

正如你所看到的,我需要使用“/Users/martin/NetBeansProjects/Web-Mandatory-Assignment-Part1/Web/resources/xml/Cars.xml”作为文件的路径,但我希望它做的是使用类似“xml/resources/Cars.xml”的东西。如何使其工作:)

您可以在
javax.servlet
包中使用
ServletContext
接口。要访问此类的实例,请使用以下代码:

   http_request_instance.getServletContext();
此界面中有一些有用的方法,例如:

  • getResource(字符串)
  • getResourceAsStream(字符串)
  • getRealPath(字符串)
有关更多信息,请参阅:

  • (好样本)

您是否尝试过将文件作为应用程序的资源嵌入并使用类加载器加载它?这就是@GuillaumePolet所说的:
http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)
不,我没有试过。我会看看这个方法,然后再给你回复:)