JavaWeb应用程序中为什么要采用绝对路径(“/”)?

 我们在使用转发跳转页面时,地址栏不变,如果使用使用相对路径,以自身为基准,会导致浏览器URL地址解析错误,显然相对路径(…/)就不可靠,可能会出现“HTTP Statu 404”错误,所以使用绝对路径来解决此问题。


了解URL地址的构成

在这里插入图片描述

(1)首先根据主机地址找到一个具体的服务器(如Tomcat、JBoss等);

(2)其实根据Web应用虚拟路径(形式:“/项目名”)找到Web应用;

(3)最后根据Web应用下资源的虚拟路径访问具体资源(xxx.java 、xxx.html、xxx.jsp等文件);

   如果资源是静态(HTML\CSS\JS\图片等文件)的,那么Tomcat会返回资源本身。

   如果资源是动态的,例如Servlet,那么Tomcat会先执行Servlet程序,返回Servlet程序的运行结果。


注意:无论访问的目标资源是不是静态的,浏览器最终得到的都是静态数据:图片或字符串。

1.什么是是绝对路径?

  以“/”开头的路径,称之为绝对路径。

2.“/”(正斜杠)代表什么意思?

codingling_project:是我自定义的项目工程名!

(1)“/”由服务器解析,代表当前项目路径:'http://localhost:8080/codingling_project

  注意:两种情况由服务器解析:

  ①web.xml和url

  ②转发request.getRequestDispatcher("路径下转发的页面").forward(request, response);

  说明:转发需要先获取转发器,再执行转发!

(2)“/”由浏览器去解析,代表当前项目路径:http://localhost:8080

  注意:两种情况由浏览器解析:

  ①书写在.html中的路径,例如:img、script:src,link、a:href、form:action

  ②重定向response.sendRedirect("路径下重定向的页面");



3.如何获取自定义项目的虚拟路径?

  一行代码解决:request.getContextPath();表示“/codingling_project”,一般与重定向的路径拼接作为绝对路径!

4.怎么定义绝对路径?

  场景:在用户登录页面,信息正确匹配登录成功则转发(登录成功后的页面)、失败则重定向(登录页面)。

在这里插入图片描述

(1)转发(请求一次)

request.getRequestDispatcher("/pages/login_success.html").forward(request, response);

(2)重定向(请求两次)

response.sendRedirect(request.getContextPath()+"/pages/login.html");

(3)HTML页面

<base> 标签为页面上的所有链接规定默认地址或默认目标。

通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a><img><link><form> 标签中的 URL。

  ①第一步:在HTML页面加入 <base href="/codingling_project/">

<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<base href="/codingling_project/">
</head>

  ②第一步:修改<a><img><link><form> 标签中的 URL(绝对路径),例如

<h2>登录页面跳转LoginServlet页面</h2>
<form action="LoginServlet" method="get">
<h2>绝对路径测试</h2>
<a href="pages/login.html">我要登录</a><br>
<a href="pages/regist.html">我要注册</a><br>

 ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值