Java Web中相对路径与绝对路径的分析

时间:2023-03-10 04:22:39
Java Web中相对路径与绝对路径的分析

一、相对路径与绝对路径

  1、相对路径:

      相对路径指的是相对于当前文件所在目录的路径!

      相对路径易出问题:

          当在页面间相互跳转时不会产生问题;

          当从Servlet中转发到指定页面时,服务器会相对于当前Servlet所在位置,而不是访问Servlet的页面的路径,也就是相对于当前项目的根目录,

            当页面位于WebContent的子目录下时,会产生错误。

  2、 绝对路径:

      绝对路径是以/开头表示的

      浏览器解析时,/代表http://localhost:8080/【服务器的根目录】

      服务器解析时,/代表 http://localhost:8080/项目名/ 【项目的根目录】

      1)常见的路径:
        url-pattern:
        转发的路径:
          这两个路径都是由服务器端解析,/代表项目的根目录

        重定向的路径
        页面中的路径
          这两个路径都是由浏览器端解析,/代表服务器的根目录

相关知识:

  java web项目发布时,其实只将WebContent文件夹部署到服务器上,并将文件夹名WebContent改为项目名,java源代码并不发布,而是运行存放在WebContent—>WEB-INF—>classes目录下的经过编译的class字节码文件。

  因此,上面提到的项目根目录指:到WebContent的目录路径

二、实际应用:

  在实际开发中,我们一般建议使用绝对路径。

  若一定想在页面中使用相对路径,可以在页面<head>中添加<base />标签,<base />标签中的href属性,可用来指定页面中相对路径的前缀

    <base>标签

      <!-- base标签由一个href属性,这个属性可以做为我们在页面中相对路径的前缀
      也就是说:我们在当前页面中写的相对路径,它会默认以base标签中的href
      属性值做为前缀,所以base标签可以让我们以使用相对路径的方式来使用绝对路径!
      base标签仅仅对相对路径起作用,对绝对路径不起作用!-->
        <base href="http://localhost:8080/servlet01/html/"/>