解决:web程序请求转发后,页面跳转导致css文件加载不出来

解决:web程序请求转发后,页面跳转导致css文件加载不出来

一·问题描述:

1.刚开始加载单个页面,能加载出来css样式文件。但是页面因为servlet程序,导致页面跳转之后。就加载不出来那个css文件。

二·问题原因:

(1)web的servlet程序请求转发过后,会导致浏览器的初始地址发生变化。
(2)link标签引入css文件的路径是相对于当前浏览器地址栏实际路径的;
(3)你刚开始写的时候的确是可以根据正确路径访问,因为你一般默认浏览器地址栏url是:http://127.0.0.1:8080/工程名/ + 静态资源url,一旦浏览器地址栏的url并不是你初始默认的那个url时,此时你再利用link标签引入静态资源就有可能会出现加载不出来的异常。因为此时link标签的相对路径,是相对于当前浏览器地址栏里面的实际路径,并不是你以为的那个默认url。此时link标签就会进行完整url拼接,再去引入静态资源。这样就肯定与初始规定的路径不符了,也就获取不到资源了。

三·解决办法:

方式一:

在那个丢失css样式的html页面中,将使用link标签引入css样式文件的路径改为绝对路径,别用相对路径。若该html中还有其他地方也是用的相对路径,也要改为绝对路径。(建议这样)
(绝对路径示例:http://localhost:8080/工程名)因为这个绝对路径会映射到web工程中的web文件夹下面,所以你不需要在绝对路径中再加web路径。否则还是加载不出来。然后再在web文件夹下找到相应的css文件,并加到绝对路径中去,即:(http://localhost:8080/工程名/xxx/yyy/style.css)

方式二:

在那个丢失css样式的html页面中,在标签下,添加一个标签。
例如:<base href="http://localhost:8080/工程名/“>

注意:
(1)base标签的作用:规定页面上所有链接的默认 URL 和默认目标。
(2)<base> 标签必须位于 <head> 元素内部。
(3)在一个文档中,最多能使用一个 <base> 标签。
(4)使用了标签的链接后,其他链接必须在标签的链接里面,不然将无法找到。

即,其他地方的相对路径,都是相对于base标签路径;
也可以解释为,其他地方的相对路径的最终地址都会成为:base路径+相对路径

(5)base标签中最后的“斜杠”不能去掉,否则表示的意义就不一样,路径一般写到工程路径。若该html中还有其他地方也是用的相对路径,也要改为相对base标签的路径。

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ideal-cs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值