文件目录结构分布:
当前所在文件为:web/test/hello.jsp
-------------------------------------------------------------------------------------------------------------------
相对路径引用外部文件:----错误
<script src="js/common/jquery-1.10.2.min.js"></script> [web/js/common/...]
严格上相对引用应该写成这样:
<script src="./js/common/jquery-1.10.2.min.js"></script>
ajax的url:url:'test/hello'此时属于相对引用,显然不能得到结果.因为test下没有js/common/...
error:
http://localhost:8085/TestURL/test/js/common/jquery-1.10.2.min.js
-------------------------------------------------------------------------------------------------------绝对路径引入外部文件:----错误
<script src="/js/common/jquery-1.10.2.min.js"></script>
ajax的url:url:'/test/hello'此时属于绝对引用,显然不能得到结果.因为此时网站下没有js/common/...(注意文件夹web不是web应用的名字,web应用的名字是
TestURL,此时/表示和web应用平级的路径error:
http://localhost:8085/js/common/jquery-1.10.2.min.js-------------------------------------------------------------------------------------------------------
相对路径引入外部文件:----正确<script src="../js/common/jquery-1.10.2.min.js"></script>此时相当于在上一步的基础上,在cd..到上一级路径,然后在选择js/common/...-------------------------------------------------------------------------------------------------------但是往往可以看到直接按照第一种的相对路径写,结果也是正确的!!<script src="js/common/jquery-1.10.2.min.js"></script>
原来是jsp页面用到了一个<base>标签<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE html> <html lang="zh-cn"> <head> <base href="<%=basePath%>">----------------------------------------------------------------------------------------------------------正确,另外本质上说组合起来这是一种绝对路径引用
<base> 标签为页面上的所有链接规定默认地址或默认目标。
通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。
使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。
这其中包括 <a>、<img>、<link>、<form> 标签中的 URL。