request.getContextPath()主要是为了解决相对路径的问题,可以返回站点的根路径。
绝对路径:绝对路径是包括服务器协议(在本例中为http协议)的完全路径,是指文件在硬盘上真正存在的路径,可以使用“\”或“/”作为目录分割字符。
相对路径:相对路径的以“/”开头,路径是从当前站点的根目录。
根路径:是指逻辑驱动器的最上一级目录,它是相对子目录来说的。
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
上面的代码也是java前端的常见代码,下面进行剖析:
request.getScheme():返回当前页面使用的协议,默认返回http。
request.getServerName():返回当前页面所在的服务器的名字。
request.getServerPort():返回当前页面所在的服务器使用的端口,就是项目在服务器上发布的 端口,或者在本地tomcat容器运行时发布的端口。
request.getContextPath():返回当前页面所在的应用的名字。
示例代码:
项目结构如下图:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<%
System.out.println(request.getContextPath());
System.out.println(request.getScheme());
System.out.println(request.getServerName());
System.out.println(request.getServerPort());
%>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="pink">
<div style="text-align:center">
<h2>用户首页</h2>
没注册的请注册<a href="index/register">注册</a><br>
已注册的请登录<a href="index/login">登录</a><br>
</div>
</body>
</html>
运行结果(这里只展示控制台):