蔡不菜和他的uU们

  • 首页
  • 新鲜出炉
  • 我的记录
  • 我的动态
  • 我和uU
  • 好用分享
  • 关于与留言
志合者,不以山海为远;道乖者,不以咫尺为近
  1. 首页
  2. 学习,学习
  3. 正文

到底加不加“/" ——JavaWeb中的绝对路径和相对路径问题

2021年7月26日 722人阅读 0人点赞 0条评论

前言

在学习的过程中,遇到一个问题——在html,jsp前端页面中的链接加不加"/"。因为这,可是吃了不少苦头,404,还有其他各种错误。之前遇到错误时,一直也不知道错在哪里,在网上各种找贴,也没有解决,今天,特意来了此心结。

首先明确的是:在jsp,html中使用的地址,即前端页面中的地址,都是相对地址

 

地址分类

1.绝对地址,带有协议名称的是绝对地址,http://www.baidu.com , ftp://202.122.23.1

2.相对地址,没有协议开头的,例如:test/some.do, /test/some.do

不能独立使用,必须有一个参考地址,通过参考地址,+相对地址本身才能指定资源

张三同学,1班有张三,2班有张三,你要找哪个张三呢,一样的道理

 

不加“/”情况

在你的页面中,访问地址不加"/"

如访问的是,http://localhost:8080/ch06_path/index.jsp

​ 路径:http://localhost:8080/ch06_path/

​ 资源:index.jsp

在index.jsp发起 test/some.do 请求,访问地址变为 http://localhost:8080/ch06_path/test/some.do

当你的地址没有 / 开头,test/some.do 当你点击链接时,访问地址是当前页面的地址 + 链接的地址

http://localhost:8080/ch06_path/ + test/some.do

 

加“/”情况

在你的页面中,访问地址加"/"

访问的是,http://localhost:8080/ch06_path/index.jsp

​ 路径:http://localhost:8080/ch06_path/

​ 资源:index.jsp

当你的地址有 / 开头,/test/some.do 当你点击链接时,访问地址变为 http://localhost:8080/test/some.do

参考地址是 你的服务器地址,也就是 http://localhost:8080

一种方法是加入${pageContext.request.contextPath} (当前页面的路径)

<a href=/test/some.do> 发起test/some.do请求 </a>
变为
<a href="${pageContext.request.contextPath}/test/some.do"> 发起test/some.do请求 </a>

特殊情况(链接又跳转到当前页面)

index.jsp 访问 test/some.do ,返回后现在的地址 http://localhost:8080/ch06_path/test/some.do

路径:http://localhost:8080/ch06_path/test

资源:some.do

如果在后端设置返回视图为 setViewName("/index.jsp") 当前页面 再次点击

就变为了 http://localhost:8080/ch06_path/test/test/some.do 访问失败

此时是以当前页面路径 http://localhost:8080/ch06_path/test/ 为相对路径 加上 test/some.do

 

解决方案总结

1..加入EL表达式 ${pageContext.request.contextPath} (如果地址较多,需要每个地址都加,比较繁琐,没有base效果好)

<a href="${pageContext.request.contextPath}/test/some.do"> 发起test/some.do请求 </a>

2.加入一个base标签,html中的标签,表示当前页面中访问地址的基地址

你的页面中所有没有 / 开头的地址,都是以base中地址 为参考地址,如使用base中的地址+user/some.do,组成访问地址,进行资源访问

需要的页面 在页面添加下面的标签

<base href:"http://localhost:8080/ch06_path/">

存在问题:有时候该地址也会变,动态获取
<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>

<base href="<%=basePath%>">

写在最后

以上方法,本人都有亲自实现可行。文章内容如有错误之处,还请大家多多指正,本人然后进行改正。

标签: JavaWeb
最后更新:2022年5月29日

Csy

这个人很懒,什么都没留下

点赞
下一篇 >

文章评论

取消回复
文章目录
  • 前言
  • 地址分类
  • 不加“/”情况
  • 加“/”情况
  • 特殊情况(链接又跳转到当前页面)
  • 解决方案总结
  • 写在最后

COPYRIGHT © 2021 caibucai.top. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

豫ICP备2021018055号