浏览器端

带杠的

一开始浏览器的地址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相对路径与绝对路径探秘的更多相关文章

  1. 【转】JSP中的相对路径和绝对路径

    1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...

  2. JSP在项目中的路径问题

    一.JSP中获得当前应用的相对路径和绝对路径  根目录所对应的绝对路径 : request.getRequestURI() 文件的绝对路径 : application.getRealPath(requ ...

  3. jsp中如何获得url路径和绝对路径

    jsp中如何获得url路径 request.getHeader("referer") JSP中获得当前应用的相对路径和绝对路径 根目录所对应的绝对路径:request.getReq ...

  4. 关于jsp中超链接的相对路径

    前提:新建了一个名为MyProject的web工程.在WebContent目录下新建一个jsp目录,在jsp目录中新建一个index.jsp文件. 实验:在index.jsp里写了4个链接,如下: & ...

  5. jsp相对路径和绝对路径小谈

    很长一段时间纠结过JSP中的相对路径和绝对路径,也研究过一段时间,今天趁着有点时间,记下来,也有大家分享一下. 1)我们先来理解一下相对路径 首先还是我们的开始,建一个WEB项目,只是测试一下而已,名 ...

  6. JSP中的相对路径和绝对路径(转)

    1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...

  7. jsp/html页面中的路径

    Html/Jsp页面中的路径,是供浏览器使用的."/"代表的是服务器根目录,一个服务器会有多个web应用,所以请求资源时需要加应用名才能正确访问. 页面中使用的相对路径,也是由浏览 ...

  8. JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解

    一.绝对路径和相对路径 ①开发时建议使用据对路径,使用绝对路径肯定没有问题,但是用相对路径可能会有问题. 在由Servlet转发到JSP页面时,此时在浏览器地址栏显示Sevvlet路径,若JSP页面的 ...

  9. JSP、Servlet中的相对路径和绝对路径 页面跳转问题

    转自:http://blog.csdn.net/wym19830218/article/details/5503533/ 1.JSP.Servlet中的相对路径和绝对路径 前提:假设你的Http地址为 ...

  10. jsp页面中引入文件路径问题的解决方案(使用request获取项目路径)【原创】

    在项目页面中,总会引入一些js和css,相对路径or绝对路径的选择就显得至关重要了!下面是项目中遇到的问题和解决方案,做一下记录! 环境: myEclipse创建工程,使用jsp+css+js,项目目 ...

随机推荐

  1. 刷机总结(阿里云os-->android4.2.2)注明:本文不是教程

    注明:本文不是教程 写这篇文章的目的:让准备刷机的人(无论你是小白还是老鸟,当然老鸟就不用看了)用最短的时间了解刷机过程 其实本来目的是准备将阿里云的2.3.7升级到3.0的,但是3.0没有针对基伍大 ...

  2. OS X 使用技巧——在Finder窗口标题栏上显示路径

    Finder窗口默认显示当前文件夹的名称或当前所在的模式(例如AirDrop).如果想要显示路径(用User/[当前用户账号名称]/Documents 替代以前显示的Documents),打开终端并运 ...

  3. bzoj 2751 快速幂

    首先我们知道,对于所有种情况,我们可以将每一位可以放的 数的值加起来,所有位置的乘起来,等于的就是最后的答案,具体 为什么正确,可以根据乘法分配律来想一想. 那么对于所有不做要求的,快速幂直接算就行了 ...

  4. BZOJ1500 维修数列

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=1500 [前言] 据说没打这题就相当于没打过Splay,这题简直就是让你内心崩溃的... 这 ...

  5. 【BZOJ】【3157】&【BZOJ】【3516】国王奇遇记

    数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有 ...

  6. nsight 初级使用指南

    1.安装,没有什么特殊设置 2.打开vs,编译生成你需要分析的.exe,在vs上方菜单,有nsight menu, choose Start Graphics Debugging. 3.在弹出对话框中 ...

  7. KMP_Best Reward

    大意:把一个字符串分成两串,假如一个字符串是回文串就可以加上它的VALUE,否则它的VALUE为0: KMP的特点是可以求出前缀与后面的字符串是否匹配, 注意回文串的特点,所以当我们把回文串反转的时候 ...

  8. 表单中<form>的enctype属性

    application/x-www-form-urlencoded.multipart/form-data.text/plain 上传文件的表单中<form>要加属性enctype=&qu ...

  9. MySQL各个版本区别

    MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...

  10. 全自动化的 Android 编译管线

    [编者按]Nicolas Frankel 是 hybris 的高级顾问, 在Java / J2EE 领域拥有超过10年的管理经验,本文阐述了他在使用自动化工序去构建 Android 应用程序遇到的一些 ...