Web开发过程中绝对路径,相对路径,虚拟路径这三个概念还是相当绕人的。

  1.  绝对路径:就是你的主页上的文件或目录在硬盘上真正的路径。比如,你的Perl 程序是存放在 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bin 就是 CGI-BIN 目录的绝对路径。

  2.  相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。、

    相对路径的一些有关表示。

    "."——代表目前所在的目录。

    ../表示源文件所在目录的上一级目录,../../表示源文件所在目录的上上级目录,以此类推。

    /../include.php 就表示所在文件向一级目录(第一个杠就表示是在根目录下)

    下一级目录:

    比如:引用下一级目录

        引用下级目录的文件,直接写下级目录文件的路径即可。

 

   假设"script.js"路径是:/webroot/pages/js/script.js

 

   假设index.html路径是:/webroot/pages/index.html

 

   在index.htmll加入script.js超链接的代码应该这样写:

 

   <script src="js/script.js" />

 

 3. 虚拟路径

         在为服务器端组件编程时,你很可能要从相对于web根的路径来取得某个文件的真实路径,但此文件实际上在站点的一个虚拟路径上。

 

      JSP/Servlet中获得当前应用的相对路径和绝对路径
     3.1 JSP中获得当前应用的相对路径和绝对路径
               根目录所对应的绝对路径:request.getRequestURI()
              文件的绝对路径     :application.getRealPath(request.getRequestURI());
               当前web应用的绝对路径 :application.getRealPath("/");
              取得请求文件的上层目录:

  new File(application.getRealPath(request.getRequestURI())).getParent()

       3.2 Servlet中获得当前应用的相对路径和绝对路径
               根目录所对应的绝对路径:request.getServletPath();
              文件的绝对路径   request.getSession().getServletContext().getRealPath(request.getRequestURI())   
               当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
             (ServletContext对象获得几种方式:
                  javax.servlet.http.HttpSession.getServletContext() 
                  javax.servlet.jsp.PageContext.getServletContext() 
                 javax.servlet.ServletConfig.getServletContext() 
              )

Web开发工作中客户端访问的时候所有的页面的根目录都是(例如:http://202.200.80.0/)的,而不是(http://202.200.80.0/webapp/)的。所以在页面直接要使用路径是可能加上:

  1. src="<%=request.getContextPath() %>/upload/${finfo.fileName }" 

 

  1. <form action="<%=request.getContextPath() %>/smart/filehome.jsp" method="post" enctype="multipart/form-data"> 

 

这样就可以保证所有引用的文件同在Webapp/下。即Web应用的目录下。