href 路径 空, /, ./, ../, // 开头的不同情况

路径的不同写法

1.(无)开头表示当前目录下的
2.(/)开头的目录表示该目录为根目录的一个子目录
3.(./)开头的目录表示该目录为当前目录(当前目录所在的目录)的一个子目录
4.(../)开头的目录表示该目录为当前目录的父目录
5.(//)开头的目录表示和当前页面使用同一种协议http/https

(无)反斜杠开头的路径是表示当前目录中和(./)相似 ——-不再多说
(./)是当前目录中(../)是上级目录中 ——-不再多说
(/)是从根目录开始,这里对于根目录的理解 ———主要可分为下面3种
(//)相当于省写了http/https 默认是和本页面用一样的协议 ———-请往下看

(/)开头的路径

1.对于HTML 页面,如果我们在其中有关于反斜杠应用的路径,我们可以分为下面两种情况:

   如直接对该页面打开访问:则这里相对的是我们的盘符,如(/res/index.html),实际路径为(C://res/index.html);

   如我们在Tomcat中构建打开:则这里相对的是我们的站点,如(/webTest/html/index.html),实际路径为(http://localhost:8080/webTest/html/index.html);

2.对于我们在请求转发中调用的getRequestDispatcher()方法:

   则这里相对的是我们的项目根目录,如 request.getRequestDispatcher("/ts.do"),实际路径为,如我们项目名称为webTest,而“/ts.do”是我们在web.XML中配置的servlet-mapping的url-pattern则我们这里找的该(/ts.do)其实是(http://localhost:8080/webTest/ts.do)。

3.如果我们要找的是一个具体资源如html页面:

   目录结构如下:(webTest/WebContent/html/index.html)而我们知道webContent这个目录是编译器临时目录在实际生成时是没有的。所以目录修改如下(webTest/html/index.html)这时我们要用getRequestDispatcher()得到这个html页面则应是(html/index.html)。

这就是今天主要关于目录加反斜杠的难点,主要是对资源的定位问题。

加“/”是其实就代表是绝对路径(从盘符开始的),不加“/”是代表相对路径。
在这里提一下相对路径和绝对路径:

绝对路径:

假设有个域名www.xxx.com,并申请了虚拟主机,虚拟主机有一个目录,比如www,这个www就是网站的根目录。

根目录下放了一个文件index.html,这个文件的绝对路径是: http://www.xxx.com/index.html

假设在www根目录下建了一个目录叫function,然后在该目录下放了一个文件info.html,这个文件的绝对路径就是http://www.xxx.com/function/info.html

相对路径

假设:info.html路径是:d:/web/www/function/info.html

   index.html路径是:d:/web/www/index.html

写法:<a href = "index.html">这是超连接</a>

(//)开头的url地址

使用双斜杠(//)开头的URL例如:

<a target="_blank" href="//www.36nu.com">36nu.com</a>
超链接的url是以双斜杠“//”开头的,是依赖协议的URL表示形式,这种写法会判断当前的页面协议是http,https 或其他来决定请求 url 的协议。

当浏览本地文件的时候,它会解析为 file:// 协议,例如:

<a target="_blank" href="//test.html">36nu.com</a>
href会被解析为file://test.html/,此种写法也适用于CSS,例如:

.logo { background: url(//www.36nu.com/36nu.png); }
  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取到静态网页后,如果a标签的href属性中含有相对路径(./ 和 ../),我们需要将这些相对路径转换成绝对路径,才能正确地打开链接。下面是一种处理相对路径的方法: 1. 获取当前网页的URL。 在Python中,可以使用`urllib.parse`库中的`urlparse`方法获取当前网页的URL,例如: ``` from urllib.parse import urlparse url = 'http://www.example.com/path/index.html' parsed_url = urlparse(url) base_url = parsed_url.scheme + '://' + parsed_url.netloc ``` 解释一下,`urlparse`方法会将URL解析成6个部分(协议、域名、路径、参数、查询、锚点),我们只需要用`scheme`和`netloc`组合成基础URL,即`http://www.example.com`。 2. 处理相对路径。 对于`./`,直接将其替换成当前路径即可;对于`../`,需要将其替换成上一级路径。例如,当前路径为`http://www.example.com/path/index.html`,需要打开的链接为`../about.html`,则需要将其替换成`http://www.example.com/about.html`。 ``` href = '../about.html' if href.startswith('./'): href = base_url + parsed_url.path + href[1:] elif href.startswith('../'): href = base_url + '/' + '/'.join(parsed_url.path.split('/')[:-1]) + '/' + href[3:] else: href = base_url + href ``` 解释一下,如果链接以`./`开头,则将其替换成当前路径(即`base_url + parsed_url.path`加上去除`./`后的路径);如果链接以`../`开头,则将其替换成上一级路径(即`base_url`加上去除`../`后的路径);否则,直接使用链接本身。 3. 打开链接。 处理完相对路径后,就可以直接使用Python的`requests`库或者其他下载工具打开链接了。 ``` import requests response = requests.get(href) print(response.text) ``` 综上所述,这是一种可以处理相对路径的方法,可以将相对路径转换成绝对路径,从而正确地打开链接。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值