Jsp 如何在我的webapp中指定文件路径?
我有一个webapp,它有一个子目录msc。我在msc的一个子目录中保存了一个xml文件,名为_etc/xml 我的本地机器上的绝对路径是Jsp 如何在我的webapp中指定文件路径?,jsp,xml-parsing,relative-path,Jsp,Xml Parsing,Relative Path,我有一个webapp,它有一个子目录msc。我在msc的一个子目录中保存了一个xml文件,名为_etc/xml 我的本地机器上的绝对路径是c:/myproject/tomcat/webapps/javawork/msc/\u etc/xml/msc\u approval\u managers.xml 我希望msc目录中的jsp文件能够获取xml文件并通过它进行解析,以获取jsp页面HTML中使用的文本。我理解将java scriptlet代码放入jsp文件可能不是最佳编程实践,但这正是我需要做的
c:/myproject/tomcat/webapps/javawork/msc/\u etc/xml/msc\u approval\u managers.xml
我希望msc目录中的jsp文件能够获取xml文件并通过它进行解析,以获取jsp页面HTML中使用的文本。我理解将java scriptlet代码放入jsp文件可能不是最佳编程实践,但这正是我需要做的,所以请不要为此而感到悲伤。我控制不了那部分。最终,我的代码将被放到生产服务器上,因此我需要使用相对路径来获取xml文件。在ColdFusion中,它非常简单(我必须将一个CF站点翻译成Java),并且分三行完成,如下所示:
<!--- Set path to msc_approval_managers.xml --->
<cfset pathToXml = ExpandPath("/msc/_etc/xml/msc_approval_managers.xml")>
<!--- Read xml file into string variable --->
<cffile action="read" file="#pathToXml#" variable="xmlDoc">
<!--- Parse xml into an xml object --->
<cfset XMLDoc = XmlParse(xmlDoc)>
然后我就可以在XMLDoc
中循环。显然,在Java中并没有那么简单。我有解析xml并循环使用它的代码。我只需要找到一种使用相对路径获取文件本身的方法,这样代码就可以上传到生产服务器,并且知道文件位于(在该服务器上)什么位置,而不需要绝对路径。这可以在Java中完成吗,特别是在jsp页面中
如果您有任何建议,我们将不胜感激,并且再次强调,请不要质疑为什么它必须位于jsp页面中,这正是我必须处理手头任务的要求。谢谢。这对jsp来说真是个奇怪的任务。。。但是您可以获得真实路径,然后用代码加载和解析文件
<%
String path = request.getServletContext().getRealPath("/msc/_etc/xml/msc_approval_managers.xml");
out.write(path);
%>
或获取输入流:
<%
java.io.InputStream stream = request.getServletContext().getResourceAsStream("/msc/_etc/xml/msc_approval_managers.xml");
if (stream != null) out.write("Got input stream ..." );
%>
非常感谢。这正是我想要的。