JSP 10: 客户端的绝对路径问题
1. 客户端路径:
<1> 指向资源 (某个html/JSP/Servlet..页面, 也可能指向某个图片/CSS/JS文件)
<2> 需要浏览器发起请求, 解析路径
2. 服务器端路径
<1> 需要服务器端解析
<jsp:include page="head.jsp"></jsp:include>, head.jsp 就是一个服务器端路径
3. 例子
<1> 创建文件:
<2>
<a> 在path.jsp中:
<body>
<h1>这是一个h1标签!!</h1>
</body>
<b> 在style.css中:
h1 {
color: green;
}
<c> 在path.jsp中引入css (使用相对路径):
<head>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<head>
效果:
<c-2> 在path.jsp中引入css (使用绝对路径):
<head>
<link rel="stylesheet" href="/css/style.css" type="text/css" />
<head>
效果:
解释: 如果在路径前加上 "/", 就会从项目的根目录去找
在本例中,就变成了: http://localhost:8080/css/style.css (因此找不到)
<c-3> 在path.jsp中引入css (使用正确的绝对路径):
<head>
<link rel="stylesheet" href="/web04/css/style.css" type="text/css" />
<head>
效果:
<d> 由于项目名可能会被修改, 因此,绝对路径不是一成不变的
对此, 进行优化:
在path.jsp中:
<% System.out.println(request.getContextPath()); %> <!-- 获取到当前项目名 -->
效果:
输出了/web04
因此, 应该将绝对路径写为:
<head>
<link rel="stylesheet" href="<%=request.getContextPath() %>/css/style.css" type="text/css" />
<head>