在Java Web中相对路径和绝对路径区别及应用方法(2)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<H1>Hello World</H1>
<a href="https://www.linuxidc.com/world.html">测试相对地址</a>
<a href="https://www.linuxidc.com/world.html">测试绝对地址</a>
</body>
</html>

注:world.html和hello.html在相同目录下。

地址栏输入::8080/OutSourcingManage/hello.html,其中,"http://localhost:8080/OutSourcingManage/"为web应用根地址。

点击"测试相对地址"时,地址栏显示的是::8080/OutSourcingManage/world.html(请求成功)

点击"测试绝对地址"时,地址栏显示的是::8080/world.html(请求失败,此时要想成功需要手工补充web应用地址)

如果地址栏输入::8080/OutSourcingManage/springmvc/hello.html,其中,"http://localhost:8080/OutSourcingManage/"为web应用根地址。

点击"测试相对地址"时,地址栏显示的是::8080/OutSourcingManage/springmvc/world.html(请求成功)

点击"测试绝对地址"时,地址栏显示的是::8080/world.html(请求失败,此时要想成功需要手工补充web应用地址)

注意:①页面跳转(forward)是以web应用根地址为基准的,可以跳转到同应用下任意有效资源页面。

②WEB-INF只能被服务器端访问,不能被客户端访问。

③重定向(sendRedirect)是服务器向客户端响应的资源名称,由客户端重新向服务器端请求。

④重定向可以跨web应用。

⑤基准路径或者叫相对路径的基准:生手开车时,经常出现会问一个问题:"我的方向盘向左方(或向右方)打了半圈,还是一圈,还是打死了?",教练常常会告诉我,如果记不清了就把方向盘打死,然后回一圈半,方向盘就正了。同样,在操作系统中,可以使用命令"pwd"查看当前所处的目录。这些告诉我们基准路径很重要。

(3)一点建议

由于在日常开发过程中,相对地址维护起来非常复杂,容易混乱,建议统一采用绝对地址。在html/jsp中有<base>标签。利用该标签可以实现绝对地址访问。以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="https://www.linuxidc.com/<%=basePath%>">

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ea053475d3b5f09d4e18af60be3fe628.html