首先分析第一种情况,<head></head>标签里面没有<base href="<%=basePath%>">这样的一个标签:
首先,当前页面路径为http://localhost:8080/StrutsDemo/path/path
1.如果超链接为
返回的结果为
说明:因为前一网页的路径为http://localhost:8080/StrutsDemo/path/path.
对于<a href=”index.jsp”></a>来说,它会在当前路径下进行查找是否有index.jsp这个文件。所以其返回路径如上。
2.如果超链接为
返回的结果为
因为它就是在Tomcat服务器根路径开始查找index.jsp文件
3.如果超链接为
返回的结果为
第二种情况,
如果在jsp文件中存在下面的代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+ request.getServerName()+":"+ request.getServerPort()+path+"/";
%>
<head></head>里有如下标签
<base href="<%=basePath%>">
1.如果超链接为
返回的结果为
为什么会有这样的一个效果呢?因为存在这个<base>标签后,当前所有页面的链接其实都是以此为基础的。比如:
页面如下所示:
所以index.jsp文件的链接就应该为http://localhost:8080/StrutsDemo/index.jsp
2.如果超链接为
返回的结果为
3.如果超链接为:
则返回的结果为
总结:个人觉得对于链接路径的写法最好写成一个第三种方式,这样避免出错的几率也是相对来说小一点,而且这种写法也是更为的标准。