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

时间:2012-03-11 10:23:12

标签: java jsp servlets jaxb relative-path

我有一个servlet,它使用JAXB来解组和编组XML文件,我自己做了。我的问题是,如果不提供XML文件(marshaller)的完整本地路径,我就无法解组或编组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'作为文件的路径,但我想要它do,是使用像'xml / resources / Cars.xml'这样的东西。我怎样才能做到这一点:)

1 个答案:

答案 0 :(得分:3)

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

   http_request_instance.getServletContext();

此界面中有一些有用的方法,例如:

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

有关详细信息,请参阅: