JavaWeb中访问路径问题

1.访问路径的组成

URL,统一资源定位符,用于定位资源的一种方式。 通常的 URL 资源访问路径由两部分
构成:资源路径资源名称 。资源名称指的是要访问资源的直接名称,如 show.html ,或与要访问资源存在映射关系的间接名称,如 show.do 。而资源路径,则是通过该路径则可以定位到指定的资源,即资源路径是指在 URL 资源访问路径中除了资源名称以外的其它部分。
根据以上规则,URI ,统一资源标识符,也可以分为资源路径与资源名称两部分。
一般情况下,在 URL 或 URI 中,最后一个斜杠后的部分为资源名称,而其它部分则为资
源路径。
在这里插入图片描述
在这里插入图片描述
根据“资源路径是否可以独立完成资源准确定位”的判别标准,可以将访问路径分为绝
对路径与相对路径。

2.绝对路径

绝对路径,是指根据给出的访问路径可以准确定位到资源的路径。例如,你要告诉对方
你现在的位置,你说:我现在在北京故宫游客 A 入口处。这就是个绝对地址,听者根据你所
述地址,可以准确的找到你。
而对于计算机中 Web 应用的绝对路径,则是指带访问协议的路径 ,即 URL 。 例如下面
的路径就是一个带有 http 访问协议的绝对路径。
http://127.0.0.1:8080/primary/index.jsp

3.相对路径

相对路径,是指仅根据访问路径无法准确定位资源的路径。 相对路径必须要结合其参照
路径才可组成可以准确定位资源的绝对路径。
参照路径的不同,所形成的可以准确定位资源的绝对路径也是不同的。在进行资源访问时,必须要将相对路径转换为绝对路径才可完成资源的准确定位。它们的关系如下:

绝对路径 = 参照路径 + 相对路径

例如,你要告诉对方你现在的位置,你说:我在人民公园的正门门口。这就是个相对地
址。因为很多城市都有人民公园,每个人民公园也都有正门。当对方不知道你在哪个城市时,他是无法准确定位你的。当然,你之所以不说是哪 个城市,是因为这里存在一个默认的参照路径:与听者在同一个城市。听者会将你所说的相对地址,自动转换为一个绝对地址:与听者在同一城市的人民公园正门门口。

在Web 应用中,浏览器或服务器会自动为不同的相对路径添加不同的参照路径,将相
对路径转换为绝对路径,以定位这个资源。作为程序员,必须要理解并掌握浏览器或服务器
为相对路径添加参照路径的规则,这样才能在编程时更为准确地书写相对路径。

相对路径的写法有两种:一种是以斜杠开头的相对路径,一种是以路径名称开头的相对
路径。 根据相对路径是否以斜杠开头,且路径出现的文件的不同 ,其默认的参照路径是不同的。 这是我们学习的重点,是路径问题中最容易出错的地方:确定相对路径的参照路径。

3.1.以斜杠开头的相对路径

以斜杠开头的相对路径,根据路径所在文件所处位置的不同,分为两种:前台路径与后
台路径。

  1. 前台路径
  • 所谓前台路径是指,由浏览器解析执行的代码中所包含的路径。例如, html 、 css 、 js 中的路径,及 jsp 文件中静态部分的路径( HTML 标签中的路径 )。 例如, html 及 jsp 文件中的<img src=''"/>、<a href=""></a>、<form action=""></form>等标签中的路径再如, css 文件中的 background:img("")( 等属性中的路径,js 文件中的 window.location.href="" 等属性中的路径 ,都属于前台路径。

  • 前台路径的参照路径是Web服务器的根路径,即 http://127.0.0.1:8080。

  • 将前台路径转换为绝对路径的工作,是由浏览器自动完成的。该路径的作用是要为用户提交对某种资源的请求,是要查找并定位服务器中的某资源。简单来说,前台路径的作用是“查找”。

  1. 后台路径
  • 所谓后台路径是指,由服务器解析执行的代码及文件中所包含的路径。例如, java 代码中的路径、jsp 文件动态部分( java 代码块)中的路径、 xml 等配置文件中的路径( 配置文件是要被 java 代码 解析后加载到内存的,其中的路径会出现在 Java 代码中 )等。

  • 后台路径的参照路径是 Web 应用的根路径 。如 http://127.0.0.1:8080/BookShop 。

  • 将后台路径转换为绝对路径的工作,是由服务器自动完成的。 该路径的作用是标识出该资源在服务器中的路径,以便客户端能够按照这个设定路径来查找相应资源。简单来说,后台路径的作用是“标识”。

  1. 后台路径特例
  • 对于后台路径的参照路径有一个特例:当代码中使用 response 的 sendRedirect() 方法进行重定向时, 若其参照路径是以斜杠开头,则其参照路径不是 web 应用的根路径,而是 web服务器的根路径。

3.2.以路径名称开头的相对路径

以路径名称开头的相对路径,无论是出现在前台页面 ,还是出现在后台 Java 代码或配置文件中 其参照路径都是当前访问路径的资源路径 。 即使是 response 的 sendRedirect() 方法的参数路径,若不以斜杠开头,其也属于以路径名称开头的相对路径”类,参照路径为当前访问路径的资源路径。

3.3.总结

在这里插入图片描述

4.前台路径问题举例

1.超链接例子:

项目名称:relativePath

在项目中添加图片资源:
在这里插入图片描述
定义 index 页面:
在这里插入图片描述
2.表单例子:
项目名称:relativePath2

定义 index 页面:
在这里插入图片描述
定义并注册 Servlet:
在这里插入图片描述

5.后台路径问题举例

1.配置文件中路径的分析
直接分析
relativePath2 项目的 web.xml 配置文件中对 SomeServlet 的注册,其中<url pattern/> 路径以斜杠开头,表示的意义。
在这里插入图片描述
2.Java代码中的路径分析
项目名称:relativePath3

定义并注册 SomeServlet:
在这里插入图片描述
定义并注册 OtherServlet:
在这里插入图片描述
3.特例举例
直接修改 relativePath3 项目中的 SomeServlet 的跳转方式。
在这里插入图片描述

6.以路径名称开头的相对路径举例

1.超链接例子
直接修改项目 relativePath 中的 index 页面,在其中添加如下内容:
在这里插入图片描述
2.表单例子
直接修改项目 relativePath2 中的 index 页面,,在其中添加如下内容:
在这里插入图片描述
3.Java代码中的路径问题
直接修改项目 relativePath3 中的 SomeServlet。
在这里插入图片描述

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值