【JavaWeb学习笔记】11 - WEB工程路径专题

一、工程路径问题

1.引入该问题

通过这几个去访问很麻烦

二、工程路径解决方案

1.相对路径

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

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

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

<h1>这是/d1/d2/b.html</h1>
<!--1. 返回a.html => 使用前面的相对路径http://localhost:8080/webpath/d1/d2/2. ../../a.html => http://localhost:8080/webpath/a.html3. 相对路径会让这个项目相互调用的关系变得复杂4. 使用base 标签搞定
-->
<!--<a href="../../a.html">返回a.html~</a>-->
<a href="a.html">返回a.html~</a>
</body>
</html>
<html lang="en">
<head><meta charset="UTF-8"><title>base 标签</title>
</head>
<body>
<h1>注册用户~~</h1>
<!--1. 可以看到,我们原来的访问一个web资源的路径非常的麻烦2. 目前我们访问的是 ok的资源3. 我们可以使用相对路径来解决4. http://localhost:8080/webpath/ok => ok5. 如果你action="ok" 等价 http://localhost:8080/webpath/ok
-->
<form action="ok"method="post">u: <input type="text" name="username"/><br><br><input type="submit" value="注册用户"/>
</form>
<h1>讨论区~</h1>
<form action="ok"method="post">讨论内容: <textarea cols="50" rows="5"></textarea><br><br><input type="submit" value="发布讨论"/>
</form>
<h1>回复区~</h1>
<form action="ok"method="post">回复内容: <textarea cols="50" rows="5"></textarea><br><br><input type="submit" value="回复"/>
</form>
</body>
</html>

2.Base标签

1. base标签是HTML语言中的基准网址标记,它是一个单标签,位于网页头部文件的head标签内

2.一个页面最多只能使用一个base元素,用来提供一个指定的默认目标,是一种表达路 径和连接网址的标记。

3.常见的url路径形式分别有相对路径与绝对路径,如果base标签指定了目标,浏览器将通过这个目标来解析当前文档中的所有相对路径,包括的标签有(a、 img、link、form)

4.也就是说,浏览器解析时会在路径前加上base给的目标,而页面中的相对路径也都转换成了绝对路径。使用了base标签就应带上href属性和target属性

<head>
<!--<base href="http://localhost:10000/hspedu_servlet/">--><!--简写形式--><!--使用base 标签搞定1. 下面老师写的 base href="http://localhost:8080/webpath/"2. 表示的含义就是当前这个页面的访问所有资源都是以 http://localhost:8080/webpath/ 参照--><base href="http://localhost:8080/webpath/"><!--上面的写法可以简化一把-->
<!--1. base 标签是哪个在解析? => 浏览器2. 浏览器在解析 第一个 /时候,会解析成 http://localhost:8080/3. 浏览器 href="/webpath/" =解析=> href="http://localhost:8080/webpath/"4. 浏览器 <a href="a.html">返回a.html~</a> , 参考 base => 最后href="http://localhost:8080/webpath/a.html"--><base href="/webpath/">
</head>
<body>
<h1>这是/d1/d2/b.html</h1>
<!--1. 返回a.html => 使用前面的相对路径http://localhost:8080/webpath/d1/d2/2. ../../a.html => http://localhost:8080/webpath/a.html3. 相对路径会让这个项目相互调用的关系变得复杂4. 使用base 标签搞定
-->
<!--<a href="../../a.html">返回a.html~</a>-->
<a href="a.html">返回a.html~</a>
</body>
</html>

5.转发重定向

@WebServlet(name = "Servlet03",urlPatterns = "/servlet03")
public class Servlet03 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//这里我们希望通过转发来定位b.html//1. 在服务器端 解析第一个 /时,会被解析成 http://ip:port/项目名[application context]//   老韩再补充: 项目名=> 说成 application context//2. "/d1/d2/b.html" => 被解析 http://ip:port/项目名/d1/d2/b.htmlSystem.out.println("Servlet03 进行转发~~~ ....");request.getRequestDispatcher("/d1/d2/b.html").forward(request,response);//3. 在服务器进行转发时, 没有 / 就按照默认的方式参考定位 http://ip:port/项目名///   老师建议,仍然使用上面的//request.getRequestDispatcher("d1/d2/b.html").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}

3.课后作业 

三、工程路径的注意事项和细节说明

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

●相对路径是:

        .表示当前目录

        ..表示上一级目录

        资源名表示当前目录/资源名

●绝对路径:

        http://ip:port/工程路径/资源路径

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

3.在web中/斜杠如果被浏览器解析,得到的地址是: http://ip[域名]:port/  比如: <a href="/">斜杠</a>

4.在web中/斜杠如果被服务器解析,得到的地址是: http://ip[域名]:port/工程路径,下面的几种情况就是如此:

        <url-pattern>/servelturl< /url-pattern >

        servletContext.getRealPath("/");

        request.getRequestDispatcher("/");

5.在javaWeb中路径最后带/和不带/含义不同,-定要小心

比如<a href= "/a/servlet03">网址</a> : servlet03表示资源

<a href="/a/servlet03/">网址</a> : servlet03表示路径

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

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

(1)这个路径前面有没有/

(2)这个路径在哪里被解析[服务器还是浏览器] ,如果前面有/ ,并且是在浏览器被解析的被解析成http:/ /ip:port/,如果在服务器端被解析,被解析成/工程路径/

(3)如果这个路径,前面没有个,并且在浏览器被解析,则以浏览器当前的地址栏去掉资源部分,作为一个相对路径.|

(4)这个路径,最后有没有/ ,如果最后有/表示路径,如果没有/表示资源

课后作业

3)请写出login.html在通过Servlet重定向情况下,如何通过表单提交,找到user.html,把所有的写法列出来

四、优化WEB工程路径

1.优化动态的项目工程路径 appliance context

需要jsp或者thymelaeaf动态获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/282992.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 中的常用注解和用法

目录 一、什么是 Spring MVC 二、MVC定义 三、简述 SpringMVC 起到的作用有哪些? 四、注解 五、请求转发或请求重定向 一、什么是 Spring MVC Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web…

【HTML5、CSS3】新增特性总结!

文章目录 23 HTML5 新增特性23.1 语义化标签23.2 多媒体标签23.2.1 视频<video>标签23.2.2 音频<audio>标签 23.3 input属性值23.4 表单属性 24 CSS3 新增特性24.1 属性选择器24.2 结构伪类选择器24.2.1 选择第n个元素24.2.2 常用的6个结构伪类选择器 24.3 伪元素选…

数据仓库与数据挖掘c5-c7基础知识

chapter5 分类 内容 分类的基本概念 分类 数据对象 元组(x,y) X 属性集合 Y 类标签 任务 基于有标签的数据&#xff0c;学习一个分类模型&#xff0c;通过这个分类模型&#xff0c;可以把一组属性x映射到一个特定的类别y上 类别y 提前设定好的--如&#xff1a;学生…

人工智能与自动驾驶:智能出行时代的未来之路

一、前言 首先&#xff0c;我们先来说下什么是人工智能&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门研究如何使计算机系统能够模拟、仿真人类智能的技术和科学领域。它涉及构建智能代理&#xff0c;使其能够感知环境、理解和…

服务端主动给客户端发消息?实战教学:使用Nestjs实现服务端推送SSE

前言 服务端消息推送SSE是常用的服务器消息通信手段&#xff0c;适用于服务器主动给客户端发送消息的场景&#xff0c;例如私信通知&#xff0c;扫描登录等都可以使用SSE实现。SSE的底层原理是客户端与服务端建立 HTTP 长链接。 Nestjs 框架内置了对SSE的支持&#xff0c;本文…

分布式定时任务系列7:XXL-job源码分之任务触发

传送门 分布式定时任务系列1&#xff1a;XXL-job安装 分布式定时任务系列2&#xff1a;XXL-job使用 分布式定时任务系列3&#xff1a;任务执行引擎设计 分布式定时任务系列4&#xff1a;任务执行引擎设计续 分布式定时任务系列5&#xff1a;XXL-job中blockingQueue的应用 …

Python 爬虫之简单的爬虫(二)

爬取百度热搜榜 文章目录 爬取百度热搜榜前言一、展示哪些东西二、基本流程三、前期数据获取1.引入库2.请求解析获取 四、后期数据处理1.获取保存 总结 前言 每次打开浏览器&#xff0c;我基本上都会看一下百度热搜榜。这篇我就写一下如何获取百度的热搜榜信息吧。 如果到最后…

【复杂网络分析与可视化】——通过CSV文件导入Gephi进行社交网络可视化

目录 一、Gephi介绍 二、导入CSV文件构建网络 三、图片输出 一、Gephi介绍 Gephi具有强大的网络分析功能&#xff0c;可以进行各种网络度量&#xff0c;如度中心性、接近中心性、介数中心性等。它还支持社区检测算法&#xff0c;可以帮助用户发现网络中的群组和社区结构。此…

饥荒Mod 开发(十三):木牌传送

饥荒Mod 开发(十二)&#xff1a;一键制作 饥荒Mod 开发(十四)&#xff1a;制作屏幕弹窗 一键传送源码 饥荒的地图很大&#xff0c;跑地图太耗费时间和饥饿值&#xff0c;如果大部分时间都在跑图真的是很无聊&#xff0c;所以需要有一个能够传送的功能&#xff0c;不仅可以快速…

IDEA2023 + spring cloud 工程热部署设置方法

基于spring cloud 工程进行热部署 &#xff0c;实现每次修改工程源文件&#xff0c;后台自动启动&#xff0c;方便开发测试工作。具体分为5步骤即可&#xff1a; 1、修改工程的pom文件&#xff0c;增加adding devtools 工具包。 <dependency> <groupId>org.s…

为什么该团队A做的事情,却被其它团队做了

第一种原因&#xff0c;原本方案只需要直接改动系统 service1&#xff0c;但由于团队1并没有解决该问题的动力&#xff0c;其他人不得不绕道去修改系统 service2&#xff0c;service3&#xff0c;service4 来解决该问题。 在一个大型电商系统中&#xff0c;有四个团队负责不同的…

ElasticSearch学习篇8_Lucene之数据存储(Stored Field、DocValue、BKD Tree)

前言 Lucene全文检索主要分为索引、搜索两个过程&#xff0c;对于索引过程就是将文档磁盘存储然后按照指定格式构建索引文件&#xff0c;其中涉及数据存储一些压缩、数据结构设计还是很巧妙的&#xff0c;下面主要记录学习过程中的StoredField、DocValue以及磁盘BKD Tree的一些…