JavaWeb请求时绝对路径和相对路径的问题
以”/”开始与不以”/”开始的区别
以/开始的相对路径,找资源是以服务器的路径为标准(http://localhost:8080)
不以/开始的相对路径,找资源,以当前资源的路径为基准,经常容易出问题,如:(http://localhost:8080/SSM);
项目中要尽量使用绝对路径,最终解决方案:利用html中的
<base>
标签说明:base元素可以规定页面中的所有链接的基准URL;
默认情况下,页面中的链接(包括样式表、脚本和图像的地址)都是相对于当前页面的地址(即:浏览器地址栏里的请求URL)。可以使用标签中的href属性来设置所有的”相对基准URL”
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<head>
<!--base需要放到head标签中-->
<base href="<%=basePath%>">
</head>
//这里可以直接使用相对路径(即相对于base标签)
<a href="xxxxx"></a>
//请看下面对应的地址:
<%= basePath %><br/> --> http://localhost:8080/SSM/
<%= request.getScheme() %><br/> --> http
<%= request.getServerName() %><br/> --> localhost
<%= request.getServerPort() %><br/> --> 8080
<%= request.getContextPath() %><br/> --> /SSM