JavaWeb 05 Web应用路径问题【绝对路径和相对路径】

1、相对路径

相对于当前页面的路径

使用相对路径,要访问资源页面时有三种情况:
     ⑴ 资源页面在同级目录下:直接访问要跳转的资源页面
     ⑵ 资源页面在下级目录下:路径名/资源名
     ⑶ 资源页面在上级目录下:../路径名/资源名

    注意:使用请求的转发时,使用相对路径会失效,可能会404 Not Found(找不到页面)

    因为使用请求的转发,虽然最终显示的是转发的页面,但是浏览器的地址栏中的URL地址并没有改变,还是访问Servlet的路径,而一般Servlet都会映射到WebContent目录下。而一旦再次访问的页面没有在WebContent的路径下时,访问页面就会找不到
    但是使用重定向时,相对路径可以使用。这是因为浏览器会发起两次请求,第二次请求的文件路径是最终的结果(正确的)

所以开发时应尽量避免使用相对路径,而使用绝对路径

2、绝对路径

某一资源页面的路径是使用类似于:
http://localhost:8080/项目名/资源名
这种绝对的形式,就是绝对路径

使用绝对路径,请求的转发就不会影响要再次访问的资源页面的路径

以 / 开头的路径就是绝对路径
注意:在不同的地方,绝对路径的前段地址不同,即 / 代表的地址是不同的

/ 代表WEB站点的根目录


/ 代表的前段地址是: http://localhost:8080

① 在页面中使用时,就是这种情况。所以在HTML页面中使用绝对路径时,需要添加 /项目名
② 请求的重定向,也是这种情况,所以也需要添加 /项目名

Tips:可以通过request.getContextPath(); 来获取 /项目名
所以完整的请求的重定向就是:
response.sendRedirect(request.getContextPath() + “/路径名/项目名”);

/ 代表WEB项目的根目录

/ 代表的前段地址是:http://localhost:8080/项目名

请求的转发就是这种情况,所以直接就可以加 /路径/资源名

3、总结

⑴ 相对路径:在使用相对路径时,转发会影响相对地址。因为请求的转发,浏览器不知道地址的变化。

 ⑵ 绝对路径:
  ① 在HTML页面中使用绝对路径,/ 所代表的前段地址是当前站点的根目录【http://localhost:8080】
  ② 在重定向时,/ 所代表的前段地址是当前站点的根目录【http://localhost:8080】
  ③ 在转发时, / 所代表的前段地址就是当前项目的根目录【http://localhost:8080/项目名】

  ⑶ 总述:
   当地址是由浏览器解析时【HTML页面中,或重定向时】, / 所代表的前段地址就是当前站点的根目录
   当地址是由服务器解析时【转发时】, / 所代表的前段地址就是当前项目的根目录

具体应用

在HTML的head标签中有一个base子标签【单标签】,它有一个href属性。其作用是在页面中设置一个前段地址,通过此地址可以让我们在页面中以相对路径的方式,来访问绝对的路径。

   Tips:这其中包括 <a>、<img>、<link>、<form> 标签中的 URL

本质上就是将base的href属性中的URL地址值和页面中的其他标签所指向的URL地址值拼接起来

注意:base标签对绝对路径不起作用

示例:

   <head>
     ...
     <base href="http://localhost:8080/项目名/" />
     ...
   </head>
       <body>
         ...
     <a href="index.html">到首页</a>
     ...
   </body>

    因为在head中添加了base标签,所以此时页面中的其他标签所指向的URL地址的前面都添加了base标签的href属性,即其他标签的URL地址变成了绝对路径
    所以此时a标签的href地址就变成了:
        http://localhost:8080/项目名/index.html
    这样就变成了绝对路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值