【问题标题】:How to fetch my custom XML file through a servlet如何通过 servlet 获取我的自定义 XML 文件
【发布时间】:2012-03-11 10:23:11
【问题描述】:

我有一个 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'的东西。我怎样才能使这项工作:)

【问题讨论】:

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

标签: java jsp servlets jaxb relative-path


【解决方案1】:

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

   http_request_instance.getServletContext();

这个接口里面有一些有用的方法比如:

  • getResource(String)
  • getResourceAsStream(String)
  • getRealPath(String)

欲了解更多信息,请参阅:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    相关资源
    最近更新 更多