jsp中的路径 – klguang

我的原则

所有路径一律使用绝对路径,就是以”/”开头的或者带host的路径。形如:/imgs/1.jpg
<%= request.getContextPath()%>/imgs/1.jpg //推荐使用
http://localhost:8080/imgs/1.jpg

应该尽量避免使用类似”.”,”./”,”../../”等类似的相对该文件位置的相对路径。一方面,这样当文件移动时,很容易出问题。另一方面,绝对路径用起来简单。

现对路径和绝对路径

相对路径(Relative Path)以引用文件的网页所在位置为参考基础,而建立出的目录路径。形如:imgs/1.jpg; ../imgs/1.jpg; ./imgs/1.jpg

绝对路径(absolute path)以Web 站点根目录(形如:http://localhost:8080/)为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。形如:http://localhost:8080/yourwebapp/index.jsp
/imgs/1.jpg

“.” — 代表目前所在的目录,相对路径。 如:<a href=”./abc”>文本</a> 或 <a href=”abc”>

“..” — 代表上一层目录,相对路径。 如:<a href=”../abc”>文本</a>

“../../” — 代表的是上一层目录的上一层目录,相对路径。 如:<img src=”../../abc” />

“/” — 代表根目录,绝对路径。 如:<a href=”/abc”>文本</a> 或 <img src=”/abc” />

“D:/abc/” — 代表根目录,绝对路径。

前端后台根目录

前端——服务器的根目录”/”:所代表的路径形如:http://localhost:8080/

后台——Web应用的根目录”/”:所代表的路径形如:http://localhost:8080/yourwebapp/

前端地址(浏览器解析)

所有的html页面中的绝对地址都是相对于host根目录(http://localhost:8080/)的,是由浏览器解析。路径前的”/”代表host根目录。

注:host代表指定请求资源的Intenet主机和端口号

jsp页面中html标签如<a> <img><form>路径前面的”/”代表(http://localhost:8080/)。

eg: <form action=”myaction”> //绝对URL地址是http://localhost:8080/yourwebapp/myaction

注意这里是因为,后面讲到的basePath。 <form action=”<%=basePaht%>myaction”> //绝对URL地址是http://localhost:8080/yourwebapp/myaction <form action=”/myaction”> //绝对URL地址是http://localhost:8080/myaction //路径错误

服务器端地址(tomcat解析)

服务器端的绝对地址指的是相对于你的web应用的地址(http://localhost:8080/yourwebapp/),是由tomcat解析。在jsp和servlet中路径前的”/”代表webapp的根目录。

其用到的地方有:forward、sendRedirect、url-pattern

servlet中request.getRequestDispatcher(address);假设你要forward到项目根目录下的user目录下a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”).forward(request, response);

这个”/”当前的web应用yourwebapp根目录,其绝对URL地址就是:http://localhost:8080/yourwebapp/user/a.jsp。

JSP页面中的basePath

新建一个JSP页面自动生成如下代码: <%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>
<head>
<base href=”<%=basePath%>”>
</head>

说明: path=”/yourwebapp”;//项目名
basePath=”http://localhost:8080/yourwebapp/”;//host+项目名

base标签的href属性规定页面中所有相对链接的基准URL。解决了前面叙述的前后台路径不统一的问题。

eg: <a href=”<%=path %>/counter/one.jsp”>one.jsp</a>//注意path后面没有”/”,得加上。

html页面输出为:<a href=”/yourwebapp/counter/one.jsp”>one.jsp</a>

因为有<base>标签的存在,相对路径会失效,例如:<img src=”imgs/1.jpg”>

无论图片所在的网页在哪个目录,在yourwebapp/目录下,还是在yourwebapp/news/目录也好。其浏览器解析出图片的URL为: http://localhost:8080/yourwebapp/imgs/1.jpg

也就是说:所有前面不带”/”或者host的路径A,浏览器解析的URL为: basePath+A。

从而形成了前后台路径使用的统一。

本文链接:jsp中的路径,转载请注明。



You must enable javascript to see captcha here!

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress

无觅相关文章插件,快速提升流量