【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.mzph.cn/news/231217.shtml

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

相关文章

Go集成elasticsearch8极简demo,光速入门

Go集成elasticsearch8极简demo,光速入门 配置go环境创件go mod工程代码实现配置go环境 编辑器添加goproxy GO111MODULE=on;GOPROXY=https://mirrors.wps.cn/go/,https://goproxy.cn,direct;GOSUMDB=off创件go mod工程 mkdir demo cd demo go mod init demo代码实现 在demo…

JMESPath语言

JMESPath&#xff08;JSON Matching Expression Path&#xff09; 一种查询语言。 主要用于从JSON文档中检索和过滤数据。 通过写表达式提取和处理JSON数据&#xff0c;而无需编写复杂的代码。 功能&#xff1a;数据提取、过滤、转换、排序。 场景&#xff1a;处理API响应…

CentOS7安装Docker及添加阿里云镜像加速详细教程

Docker官方安装教程网站&#xff1a;Install Docker Engine on CentOS | Docker Docs 具体流程如下&#xff1a; 1.确定你是CentOS7及以上版本 cat /etc/redhat-release 2.yum安装gcc相关 yum -y install gcc yum -y install gcc-c 3.安装需要的软件包 3.1安装docker引擎…

MetaSploit工具的使用

在命令行输入&#xff1a;msfconsole 启动msf msfconsole 另外的方式 msfdb init msfdb run 查看数据库连接状态 db_status 扫描端口并存储 db_nmap 查看扫描到的数据信息 services MSF常用的模式和命令 搜索模块 search 模块名字 使用模块 use 编号 查看模块使用 sho…

对偶问题笔记(1)

目录 1 从 Lagrange 函数引入对偶问题2. 强对偶性与 KKT 条件3. 对偶性的鞍点特征 1 从 Lagrange 函数引入对偶问题 考虑如下优化问题 { min ⁡ f 0 ( x ) s . t f i ( x ) ≤ 0 , i 1 , ⋯ , p , h j ( x ) 0 , j 1 , ⋯ , q , x ∈ Ω , \begin{align} \begin{cases}\min…

在linux上基于shell自动部署Java项目

一&#xff0c;安装git yum list git 列出git安装包 yum install git 在线安装git 使用 git -varsion 查看是否安装成功 安装成功 二&#xff0c; Git克隆代码 git clone 远程仓库地址 三&#xff0c;创建shell脚本 touch shell.sh shell脚本 #!/bin/sh echo echo 自动…

健康手表数据洞察台

健康手表数据洞察台 1. 背景介绍2. 数据获取与处理3. Django平台搭建4. 数据可视化5. 整体数据分析6. 数据监控与紧急警报7. 用户界面优化8. 创新点结语 1. 背景介绍 在当今健康意识不断提升的社会&#xff0c;人们越来越关注身体健康。本文将介绍如何使用Pandas进行数据分析&…

NTC和温度的关系

一、NTC介绍 NTC&#xff08;nagative temperature coefficient&#xff09;负温度系数的热敏电阻。随着温度的升高&#xff0c;电阻越来越小 二、NTC和温度的关系 生产NTC的厂家会提供一个RT表格&#xff0c;里面记录了温度和电阻的关系&#xff0c;他们的关系是一一对应的…

C# 使用FluentHttpClient请求WebApi

写在前面 FluentHttpClient 是一个REST API 异步调用 HTTP 客户端&#xff0c;调用过程非常便捷&#xff0c;采用流式编程&#xff0c;可以将所有请求所需的参数一次性发送&#xff0c;并直接获取序列化后的结果。 老规矩从NuGet上安装该类库&#xff1a; 这边一定要认准是 P…

React系列:配置@别名路径并配置联想

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法 &#x1f492; 公众号&#xff1a;知识浅谈 &#x1f525;网站…

汽车火花塞行业分析:全球市场需求量约为26.3亿个

在汽车日常保养里,更换火花塞算是比较常见的一种,爱车懂车的车主们都非常清楚火花塞对于汽车的重要性,可以说火花塞直接影响到发动机的运作,决定了汽车能否顺利启程。 火花塞(sparkplug)&#xff0c;俗称火咀&#xff0c;它的作用是把高压导线(火嘴线)送来的脉冲高压电放电&…

zkSend — — 在Sui上发红包像发电子邮件一样简单

*12月14日&#xff0c;知名区块链媒体平台The Block发表了这篇关于对Mysten Labs联合创始人Adeniyi Abiodun的采访&#xff0c;文中“我们”指代该媒体&#xff0c;数据均为截止撰写文章时数据&#xff0c;以下是正文。 两年前&#xff0c;当五名前Facebook工程师创立Mysten L…

MySQL数据库 函数

目录 函数概述 字符串函数 数值函数 日期函数 流程函数 函数概述 函数是指一段可以直接被另一段程序调用的程序或代码。也就意味着&#xff0c;这一段程序或代码在MysQL中已经给我们提供了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即…

如何提高股票交易速度?极速交易哪家好?

极速交易模式是一种交易方式&#xff0c;它以最短的时间进行快速交易。这种模式通常用于贵金属、外汇、原油、期权等金融产品的交易。 在极速交易模式中&#xff0c;交易者可以在最短时间内进行买卖操作&#xff0c;从而快速获取利润。这种交易方式通常需要高超的技术和经验&a…

【03】GeoScene创建海图或者电子航道图数据

1 配置Nautical属性 1.1 管理长名称 长名称&#xff08;LNAM&#xff09;是一个必要的对象标识符&#xff0c;是生产机构&#xff08;AGEN&#xff09;、要素识别号码&#xff08;FIDN&#xff09;和要素识别子项&#xff08;FIDS&#xff09;组件的串联。这三个子组件用于数…

【Spring】09 BeanClassLoaderAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点&#xff0c;其中之一就是 Bean 生命周期中的回调接口。本文将聚焦于其中的一个接口 BeanClassLoaderAware&#xff0c;介…

11889个字带你彻底弄清tcp/ip协议栈

tcpip协议栈 tcpip模型以太网协议ARP地址解析协议TCP协议 tcpip模型 OSI模型linux tcpip模型常用协议网络设备应用层应用层telnet/DHCP/TFTP/FTP/MQTT/NFS/DNS/FTP/SNMP表示层会话层传输层传输层TCP/UDP四层交换机网络层网络层IP/ICMP/IGMP/ARP路由器&#xff0c;三层交换机…

01|LangChain系统安装和快速入门

01&#xff5c;LangChain系统安装和快速入门 什么是大语言模型 大语言模型是一种人工智能模型&#xff0c;通常使用深度学习技术&#xff0c;比如神经网络&#xff0c;来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多&#xff0c;可以达到数十亿甚至更多&am…

日本药典数据库

日本药典&#xff08;Japanese Pharmacopoeia&#xff0c;简称JP&#xff09;&#xff0c;对于药品研究人员来说&#xff0c;日本药典查询可以提供药品标准的参考&#xff0c;设定研究指标&#xff0c;支持药物注册和上市&#xff0c;以及了解行业趋势和发展。这些信息对于研究…

找出一个二维数组中的鞍点

找出一个二维数组中的鞍点&#xff0c;即该位置上的元素在该行上的最大、在该列上最小。也有可能没有鞍点。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int a[10][10] { 0 };int n 0, m 0;int i 0, j 0;printf("请输入这个数组有n行m列…