JSP相对路径与绝对路径探秘
浏览器端
带杠的
一开始浏览器的地址http://localhost:8080/example/index.jsp
如果写成
<a href="/servlet/TestDBSvl">点击进入servlet</a>
带杠的,就是绝对路径,从http://localhost:8080/
开始记录也就是
http://localhost:8080/servlet/TestDBSvl
点击链接发生客户端跳转,url变化
所以这样的要从应用名开始写
<img src="/images/back.png" alt="" />
找不到
不带杠的
一开始浏览器的地址 http://localhost:8080/example/index.jsp
但是如果不带杠的话
<a href="MyJsp.jsp">点击进入新页面</a>
就是相对工程名开始找了
点击链接发生客户端跳转,url变化
<img src="/images/back.png" alt="" />
能找到
http://localhost:8080/example/images/back.png
服务器端 servlet
RequestDispatcher
带杠的
request.getRequestDispatcher("/MyJsp.jsp").forward(request,response);
很明显,url没有变
不带杠的相对路径
request.getRequestDispatcher("MyJsp.jsp").forward(request,response);
没有去掉servlet
Servlet跳转到页面能不能找到图片?
request.getRequestDispatcher("/index.jsp").forward(request,response);
index.jsp
<img src="images/back.png" alt="" />
能找到图片
http://localhost:8080/example/images/back.png
Redirect
浏览器在" http://localhost:8080/example//servlet/TestDBSvl
带杠的
//request.getRequestDispatcher("/index.jsp").forward(request,response);
能找到页面http://localhost:8080/example/index.jsp
//response.sendRedirect("/MyJsp.jsp");
http://localhost:8080/MyJsp.jsp找不到页面!
当然在浏览器端一样找不到页面
http://localhost:8080/MyJsp.jsp
不带杠的
response.sendRedirect("MyJsp.jsp");
//http://localhost:8080/example/servlet/MyJsp.jsp 找不到页面
//没办法只能写全了
当然在浏览器端能找到页面,因为是相对于
http://localhost:8080/example/index.jsp来说的
Jsp:forward
<jsp:forward page="/MyJsp.jsp"/>
服务器跳转,能找到页面
总结
带杠的 为绝对地址
寻址方式=偏移+地址
偏移
客户端跳转 http://localhost:8080
服务器端跳转 http://localhost:8080/example
这个偏移和你在浏览器端还是servlet没有关系
不带杠 为相对地址
寻址方式就是划掉上一个地址的最后一个\后的内容,加上你写的相对新地址
那么如果我写两个会怎样呢?
浏览器地址http://localhost:8080/example/index.jsp
<%response.sendRedirect("example/MyJsp.jsp"); %>
寻址结果为 http://localhost:8080/example/example/MyJsp.jsp
所以不管你有几个,都是划掉上一个地址的最后一个\后的内容,加上新地址
注意并不一定是浏览器上地址栏显示的地址
比如
Index.jsp进入servlet,地址栏为
http://localhost:8080/example/servlet/TestDBSvl
这时又通过dispatcher,回到了index.jsp
地址栏仍未servlet,这时点击相对路径
<a href="MyJsp.jsp">点击进入新页面</a>
还能找到吗?
能的!
http://localhost:8080/example/MyJsp.jsp
那我究竟写什么?
对于搞开发来说,一个统一的标准,最重要了,不然还要想上半天,
写带杠的吧,你得判断服务器跳转还是浏览器跳转
写不带杠的吧,相对路径玄乎乎的
所以,全部用
全部写全了,省得烦
<base href="<%=basePath%>">
抛弃以前在什么之前都加 <%=basePath%>servlet/StoreDishSvl 的方式,而是在页面头部加上这个
<html>
<head>
<!-- base需要放到head中 -->
<base href="<%=basePath%>">
</head>
// 这里我们就可以直接使用相对路径(即: 相对于base标签)
<a href="jsp/login.jsp">Login</a>
</html>
对于servlet dispatcher写带杠的
对于servlet redirect 带不带杠,都不行,写全了
JSP相对路径与绝对路径探秘的更多相关文章
- 【转】JSP中的相对路径和绝对路径
1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...
- JSP在项目中的路径问题
一.JSP中获得当前应用的相对路径和绝对路径 根目录所对应的绝对路径 : request.getRequestURI() 文件的绝对路径 : application.getRealPath(requ ...
- jsp中如何获得url路径和绝对路径
jsp中如何获得url路径 request.getHeader("referer") JSP中获得当前应用的相对路径和绝对路径 根目录所对应的绝对路径:request.getReq ...
- 关于jsp中超链接的相对路径
前提:新建了一个名为MyProject的web工程.在WebContent目录下新建一个jsp目录,在jsp目录中新建一个index.jsp文件. 实验:在index.jsp里写了4个链接,如下: & ...
- jsp相对路径和绝对路径小谈
很长一段时间纠结过JSP中的相对路径和绝对路径,也研究过一段时间,今天趁着有点时间,记下来,也有大家分享一下. 1)我们先来理解一下相对路径 首先还是我们的开始,建一个WEB项目,只是测试一下而已,名 ...
- JSP中的相对路径和绝对路径(转)
1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...
- jsp/html页面中的路径
Html/Jsp页面中的路径,是供浏览器使用的."/"代表的是服务器根目录,一个服务器会有多个web应用,所以请求资源时需要加应用名才能正确访问. 页面中使用的相对路径,也是由浏览 ...
- JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解
一.绝对路径和相对路径 ①开发时建议使用据对路径,使用绝对路径肯定没有问题,但是用相对路径可能会有问题. 在由Servlet转发到JSP页面时,此时在浏览器地址栏显示Sevvlet路径,若JSP页面的 ...
- JSP、Servlet中的相对路径和绝对路径 页面跳转问题
转自:http://blog.csdn.net/wym19830218/article/details/5503533/ 1.JSP.Servlet中的相对路径和绝对路径 前提:假设你的Http地址为 ...
- jsp页面中引入文件路径问题的解决方案(使用request获取项目路径)【原创】
在项目页面中,总会引入一些js和css,相对路径or绝对路径的选择就显得至关重要了!下面是项目中遇到的问题和解决方案,做一下记录! 环境: myEclipse创建工程,使用jsp+css+js,项目目 ...
随机推荐
- Careercup - Microsoft面试题 - 5204967652589568
2014-05-11 23:57 题目链接 原题: identical balls. one ball measurements ........ dead easy. 题目:9个看起来一样的球,其中 ...
- 【转】android ListView 几个重要属性
android ListView 几个重要属性 分类: Android2012-03-08 19:25 19324人阅读 评论(5) 收藏 举报 listviewandroid活动javalistnu ...
- JQuery常用实用的事件[较容易忽略的方法]
JQuery常用实用的事件 注:由于JQuery片段较多就没有用插入代码文本插入,请见谅!JQuery 事件处理ready(fn)代码: $(document).ready(function(){ ...
- django Forgienkey字段 在前台用js做处理
在我做的项目中有个选择省城市的选项,这两个字段的关系是一对多的关系class Province(models.Model): # 省会 name = models.CharField(max ...
- Java 死锁诊断 -- 线程转储
java线程转储 java的线程转储可以被定义为JVM中在某一个给定的时刻运行的所有线程的快照.一个线程转储可能包含一个单独的线程或者多个线程.在多线程环境中,比如J2EE应用服务器,将会有许多线程和 ...
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) C - Bear and Colors
题目链接: http://codeforces.com/contest/673/problem/C 题解: 枚举所有的区间,维护一下每种颜色出现的次数,记录一下出现最多且最小的就可以了. 暴力n*n. ...
- 【BZOJ】【1048】【HAOI2007】分割矩阵
DP/记忆化搜索 暴力枚举分割方案?……大概是指数级的?大约是20!的方案= =? 但是我们看到a.b.n的范围都很小……所以不同的状态数只是$10^5$级别的,可以记忆化搜索求解 比较水的一道题…… ...
- Leetcode#109 Convert Sorted List to Binary Search Tree
原题地址 跟Convert Sorted Array to Binary Search Tree(参见这篇文章)类似,只不过用list就不能随机访问了. 代码: TreeNode *buildBST( ...
- AngularJs学习笔记--Guide教程系列文章索引
在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...
- Javascript引擎单线程机制及setTimeout执行原理说明
setTimeout用法在实际项目中还是会时常遇到.比如浏览器会聪明的等到一个函数堆栈结束后才改变DOM,如果再这个函数堆栈中把页面背景先从白色设为红色,再设回白色,那么浏览器会认为DOM没有发生任何 ...