昨天简单分析了下路径的相对于绝对,然后在项目中遇到一个问题:如下
首先我所在url:http://localhost:8080/OnlineC/r/findAll
想到达的url:http://localhost:8080/OnlineC/r/findFiles
可以看出都是在r子目录下的请求,一个为findAll另一个是findFiles
所以我可以用相对路径进入,href="findFiles"
当我想反过来的时候http://localhost:8080/OnlineC/r/findFiles
到http://localhost:8080/OnlineC/r/findAll
请求href="findAll"发现不行,总是r/findAll才可以;
这里我们需要去了解下服务器work中,对jsp请求转换servlet有一定的了解,先不说这个;
先解释下为什么出现这个错误,原来是第二次的jsp中开头有个路径声明
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head> <base href="<%=basePath%>"> </head>
request.getSchema()可以返回当前页面使用的协议,http 或是 https;
request.getServerName()可以返回当前页面所在的服务器的名字;
request.getServerPort()可以返回当前页面所在的服务器使用的端口,就是80;
request.getContextPath()可以返回当前页面所在的应用的名字;
所以第二次href="findAll"实际上被追加在了basePath后了也就是
http://localhost:8080/OnlineC/findAll
所以出错了,正确的http://localhost:8080/OnlineC/r/findAll
结论:当要多用相对路径的时候,如果要根据当前的路径来判断相对于哪个路径,就去掉前面那个声明,比如上面提到的都是相对于/r/路径;
如果路径多复杂,就声明好了初始路径,后面的都是相对于这个路径,比如basePath
另:这里强烈提倡用第二中,首先是jsp创建的时候就会自己声明好,毕竟那些架构师当年架构的时候想的比我们多,肯定有好处,
其次是,当后台各种转发后,我们知道 地址栏路径不会改变,这个时候你要记住转发前的url地址,如果是第一种,你就要考虑该怎么追加path,
如果:转发前http://localhost:8080/OnlineC/r/findU
要到http://localhost:8080/OnlineC/r/findAll这个请求,那么jsp追加href=“findAll”
如果:转发前http://localhost:8080/OnlineC/findU
要到http://localhost:8080/OnlineC/r/findAll这个请求,那么jsp追加href=“r/findAll”,
这里看出来就是要根据之前的url考虑怎么去追加url,但是如果是第二种方式,那么我们不需要去考虑之前的url,
比如basePath声明好=http://localhost:8080/OnlineC/
那么我们后面相对路径都是相对这个的:转发前是http://localhost:8080/OnlineC/r/findU
或者是http://localhost:8080/OnlineC/findU到达http://localhost:8080/OnlineC/r/findAll
那么相对路径都是href=“r/findAll”,
当然还有一处
这里页面时bill.jsp地址栏是http://localhost:8080/OnlineC/r/findAll
如果不声明basepath 那么应该是这个路径
<h3><a href="findFiles">查看文件</a></h3>
<h3><a href="findAll">查看人员列表</a></h3>
然后action="/OnlineC/r/s/search" 这个完成后路径就是
http://localhost:8080/OnlineC/r/s/search?**然后又转发到bill.jsp
那么我们假设要点击 查看人员列表 按钮,相对路径追加后应该是
http://localhost:8080/OnlineC/r/s/findAll,
这明显错了,正确是http://localhost:8080/OnlineC/r/findAll,所以这个jsp中我声明了初始相对路径
说了这么多希望对别人有个帮助,码字还真是累啊 。。。
- 描述: 路径
- 大小: 28 KB
分享到:
相关推荐
所见过的13种最为奇葩的编程语言,无聊之余的谈资. 不喜勿喷
html5微信小游戏源码 奇葩连连看游戏源码(仅用于参考)html5微信小游戏源码 奇葩连连看游戏源码(仅用于参考)html5微信小游戏源码 奇葩连连看游戏源码(仅用于参考)html5微信小游戏源码 奇葩连连看游戏源码(仅...
在处理JSON数据时,我们通常会遇到各种情况,包括标准的、规范的JSON格式以及一些“奇葩”的、非正式的JSON数据。这个话题“奇葩json数据解析”就聚焦于如何处理那些不符合标准的JSON数据。 在描述中提到,使用...
奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗拿SHELL奇葩过最新安全狗...
《奇葩连连看HTML5游戏源码解析》 HTML5作为现代网页开发的主流技术,以其强大的功能和跨平台性赢得了开发者们的广泛喜爱。本篇将深入解析“奇葩连连看”这款基于HTML5的游戏源码,旨在帮助读者了解HTML5游戏开发的...
Canvas提供了一个二维绘图环境,允许开发者动态地绘制图像、动画和游戏场景。在Flappy Bird游戏中,Canvas用于绘制小鸟、管道、地面等游戏元素,并更新它们的位置以实现动态效果。 其次,CSS3用于控制游戏界面的...
微信小游戏源码 奇葩连连看游戏源码(仅用于学习参考)微信小游戏源码 奇葩连连看游戏源码(仅用于学习参考)微信小游戏源码 奇葩连连看游戏源码(仅用于学习参考)微信小游戏源码 奇葩连连看游戏源码(仅用于学习...
奇葩工具箱2014.10.19最新版本 奇葩工具箱Beta5.0.8更新内容: 1.修复*启动程序后右上角显示不明标签问题; 2.调整*对奇葩闹钟功能做了一点调整; 3.取消*QQ个性网名,签名,头像,分组大全等QQ相册封面拼图; 4....
"奇葩工具箱Beta4.7.6"是一款集成了多种实用功能的软件工具箱,主要以QQ、贴吧和电脑应用为核心,旨在为用户提供便捷、全面的解决方案。从其名称可以看出,这款工具箱可能包含了一些非传统或者独特的工具,可能是...
《2013万能淘宝奇葩会场辅助v2.5》是一款专为2013年双十二购物狂欢节设计的辅助工具,旨在帮助用户更高效、便捷地参与淘宝网上的各种促销活动。该软件集成了多项实用功能,旨在解决用户在淘宝奇葩会场购物时可能遇到...
- **jQuery基础**:EasyUI是建立在jQuery库之上的,因此理解jQuery的基本选择器、事件和方法是必不可少的。 - **组件化**:EasyUI将常见的UI元素封装为组件,如`datagrid`(数据网格)、`dialog`(对话框)和`form`...
《江南戏曲奇葩——越剧》教学设计2.pdf
12306奇葩验证码原理,讲述了生成的原理和验证的原理,12306奇葩验证码原理
《奇葩说》作为一档备受关注的综艺节目,其成功之处在于多方面的创新和精准的市场定位。该节目自2014年起,历经五季,始终保持高人气,这得益于其与时俱进的节目内容、独特的互动形式、强大的导师阵容以及精良的后期...
8. **业务转型**:赖霖枫的转型尝试,从提供盗版系统转向正规运营,通过流量培养新的产品和服务,体现了互联网企业从“端”到“云”的发展路径。 这篇文档揭示了互联网企业如何依赖早期的便利和免费策略吸引用户,...
【万能淘宝奇葩会场辅助v2.0】是一款针对2013年双十二电商大促活动设计的辅助工具,旨在帮助用户更高效、便捷地参与淘宝平台上的各种促销活动。这款软件集成了多种功能,以提升消费者的购物体验,减少在海量商品中...
“奇葩连连看”作为朋友圈游戏,社交互动是其核心特点之一。用户不仅可以分享自己的成绩,还可以邀请朋友一起挑战,提升游戏的趣味性和粘性。这种互动性是HTML5游戏在微信平台上的一大优势,也是吸引用户的重要因素...
钢琴音乐的奇葩.ppt