我有一个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'这样的东西。我怎样才能做到这一点:)
答案 0 :(得分:3)
您可以在ServletContext
包中使用javax.servlet
界面。要访问此类的实例,请使用以下代码:
http_request_instance.getServletContext();
此界面中有一些有用的方法,例如:
getResource(String)
getResourceAsStream(String)
getRealPath(String)
有关详细信息,请参阅: