文件目录结构分布:
当前所在文件为: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。