javaweb学习(day08-WEB 工程路径专题)

本文讲述了工程路径问题,特别是在Web开发中如何通过相对路径和base标签解决URL固定格式的问题。作者详细介绍了使用相对路径的局限性,以及base标签的基本介绍、应用实例和注意事项,强调了在实际开发中使用绝对路径的必要性和路径解析中的特殊规则。
摘要由CSDN通过智能技术生成

一、工程路径问题

1. 先看一个问题

2. 创建

D:\idea_java_projects\hspedu_servlet\web\index.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>base 标签</title>
</head>
<body>
    <h1>注册用户~</h1>
<!--    可以看到访问web路径资源非常麻烦-->
    <form action="http://localhost:8080/webpath/okServlet" method="post">
        u: <input type="text" name="username"/><br><br>
        <input type="submit" value="注册用户"/>
    </form>
    <h1>讨论区</h1>
    <form action="http://localhost:8080/webpath/okServlet" method="post">
        讨论内容: <textarea cols="50" rows="5"></textarea><br><br>
        <input type="submit" value="发布讨论"/>
    </form>
    <h1>回复区</h1>
    <form action="http://localhost:8080/webpath/okServlet" method="post">
        回复内容: <textarea cols="50" rows="5"></textarea><br><br>
        <input type="submit" value="回复"/>
    </form>
</body>
</html>

记得配置好自己的tomcat以及导入servlet的jar包,配置web.xml

3. 问题分析=

对于其中的url每次我们可以发现前面的都是固定的格式,但是又需要每次都要写出来,相对麻烦 

二、 工程路径解决方案

1 解决方案:相对路径 

说明 : 使用相对路径来解决, 一个 非常重要的规则 :页面所有的相对路径,在 默认情
况下 ,都会参考当前浏览器地址栏的路径 http://ip:port/ 工程名 / + 资源 来进行跳转。所以我们可以直接这样写

 相对路径带来的问题举例 => 示意图

 如果需要指定页面相对路径参考的的路径,可以使用 base 标签来指定

2 解决方案:base 标签 

2.1 base 基本介绍 

  • base 标签是 HTML 语言中的基准网址标记,它是一个单标签,位于网页头部文件的 head标签内
  • 一个页面最多只能使用一个 base 元素,用来提供一个指定的默认目标,是一种表达路径和连接网址的标记。
  • 常见的 url 路径形式分别有相对路径与绝对路径,如果 base 标签指定了目标,浏览器将通过这个目标来解析当前文档中的所有相对路径,包括的标签有(aimglinkform
  • 也就是说,浏览器解析时会在路径前加上 base 给的目标,而页面中的相对路径也都转换成了绝对路径。使用了 base 标签就应带上 href 属性和 target 属性

 

2.2 base 应用实例 

需求: 演示 base 标签的使用, 说明: 先演示和 html 相关的路径跳转,再演示和 Servlet路径转发, 一步步来

创建 D:\idea_java_projects\hspedu_servlet\web\a.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>a.html</title>
</head>
<body>
<h1>这是 a.html</h1>
<a href="d1/d2/b.html">跳转到/d1/d2/b.html</a>
<br/><br/>
<a href="servlet03">转发到/d1/d2/b.html</a>
</body>
</html>

创建 D:\idea_java_projects\hspedu_servlet\web\d1\d2\b.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>b.html</title>
    <base href="http://localhost:8080/webpath/">
</head>
<body>
<!-- 解读
1. 如果没有<base href="http://localhost:10000/hspedu_servlet/">
2. 当点击 返回 a.html 超链接,将会以当前浏览器的地址为路径来确定 路径
3. 如果增加了<base href="http://localhost:10000/hspedu_servlet/">
4. 将以 base 指定的 href 的地址为路径,来确定 超链接的路径
-->
<!--<base href="http://localhost:10000/hspedu_servlet/">-->
<!--简写形式
<base href="/webpath/"> 浏览器解析第一个/时,会解析成http://localhost:10000/

-->
<!--1. 返回a.html =>使用前面的相对路径 http://localhost:8080/webpath/d1/d2/
    2.../../a.html=>http://localhost:8080/webpath/a.html
    3.相对路径会让这个项目的相互调用关系变得复杂
    4.使用base标签搞定


-->
<h1>这是/d1/d2/b.html</h1>
<a href="a.html">返回 a.html~</a>
</body>
</html>

三、WEB 工程路径注意事项和细节

1. Web 工程的相对路径和绝对路径

 2. 在实际开发中,路径都使用绝对路径,而不是相对路径

3. web / 斜杠 如果被浏览器解析,得到的地址是: http://ip[ 域名 ]:port/ 比如 : <a
href="/"> 斜杠 </a>
4. web / 斜杠 如果被服务器解析,得到的地址是: http://ip[ 域名 ]:port/ 工程路径 /
你也可以理解成 / 工程路径 / 下面的几种情况就是如此 :
5. javaWeb 中 路径最后带 / 和 不带 / 含义不同 , 一定要小心 , 比如 <a href="/a/servlet03"> 网址 </a> : servlet03 表示资源,<a href="/a/servlet03/"> 网址 </a> : servlet03 表示路径

6. 特别说明:重定向 response.sendRediect("/"); 这条语句虽然是在服务器执行的,但是 ,
服务器是把斜杠 / 发送给浏览器解析。因此得到地址 http://ip[ 域名 ]:port/

小结: 在编写资源路径时: , 考虑这么几点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜小林然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值