为什么在root目录下取得的结果是正确的,但是在虚拟目录下取得的结果是错误的?
<%
String  strPathFile=application.getRealPath(request.getRequestURI());  
out.println("文件的绝对路径:"  +  strPathFile+  "<br/>");
%>
这段代码放在tomcat的root目录下得到的结果是正确的,但是我新建一个虚拟目录,在虚拟目录下实验是错误的,多一级目录!比如我放在虚拟目录test下,得到的结果是这样的:D:\test\test\xxx.jsp,但是事实上是D:\test\xxx.jsp,请教高手是怎么回事,谢谢!

解决方案 »

  1.   

    request.getRequestURI() 包含了你在server.xml中定义的虚拟目录
    例如:你在server.xml中定义了<Context path="/mywebapp" docBase="D:\mywebapp" debug="0" reloadable="true" /> 
    然后,你在D:\mywebapp下建了一个文件mytest.jsp,
    mytest.jsp中打印request.getRequestURI(),显示为"/mywebapp/mytest.jsp"
    这时你对他取绝对路径,application.getRealPath(request.getRequestURI());打印的结果当然是:
    "D:/mywebapp/mywebapp/mytest.jsp"了。你不妨可以试下用request.getServletPath()来代替request.getRequestURI()
    再取绝对路径,这是结果就正确了,即D:/mywebapp/mytest.jsp