标签:
实际编码中我们经常写路径,写路径既可以写相对路径,也可以写绝对路径。我2年以前我就养成了习惯,只要是写路径我从来都是写绝对路径,因为万一将来我们的项目的目录发生变化,原来要是写相对路径的话就会有路径依赖关系,改的地方太多了。而且相对路径在某些情况下还有点特殊,有的是相对于原来的请求的目录,有的是相对于整个web应用,所以我强烈建议大家以后写路径统一用绝对路径(以“/”开头)来写,“/”表示站点的根路径。
相对路径:
1,我们来看看在linkin.html中引入linkin.js和linkin.html文件相对路径应该怎么写?
<span style="white-space:pre"> </span><script type="text/javascript" src="../scripts/linkin.js"></script> <link rel="stylesheet" type="text/css" href="../styles/linkin.css">
2,如果在linkin.jsp中引入linkin.js和linkin.html文件相对路径应该怎么写?
<span style="white-space:pre"> </span><script type="text/javascript" src="scripts/linkin.js"></script> <link rel="stylesheet" type="text/css" href="styles/linkin.css">
注意:上面的html文件和jsp文件引入静态资源相对路径还不一样,记住下面的一句话,如果是在服务器上直接运行的静态资源比如html文件引入别的静态资源这里的“相对”就是物理意义上的相对,如果是在服务器上要跳转的这种视图资源比如jsp文件引入别的静态资源这里的“相对”是相对于上整个web工程的相对,2者不同的。
绝对路径:req.getRequestDispatcher("/jsp/Linkin1.jsp").forward(req, resp);
总结:
1,尽管我们不怎么写相对路径,但是难免会维护别人的代码,所以还是要了解一下的。如果在超链接中使用了到了相对路径,如果要是没有服务器跳转,比如html这些文件,则相对就是文件所在的目录,要是经过了服务器跳转,比如jsp这些文件或者通过XXX.do跳转到的页面上的话,这里的相对是相对于整个web应用,不一样的。
2,绝对路径比较好,以后我们写路径都直接写绝对路径就好。除了转发,绝对路径的开头“/”代表域名之后的东西,也就是说相当于省去了整个url上面的主机IP和端口号而已,项目名称还是要写的。转发是唯一一个比较特殊的,因为转发本身就是在web应用内部跳转的,所以不能写项目名称,直接从项目名称后面开始写。
3,如果有代码洁癖的人在写绝对路径的时候,不想在jsp出现项目名称这种硬码,怎么办呢?用<%=request.getContextPath()%>来代替,比如:
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/common.css" /> <script type="text/javascript" src="<%=request.getContextPath()%>/jquery/base/jquery-1.8.0.js"></script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
Servlet--超链接,表单提交,重定向,转发4种情况的路径
标签:
原文地址:http://blog.csdn.net/u011794238/article/details/46817643