web文件夹下目录结构-----
现在想要在a页面中跳转到aa .html以及跳转到b.html
那超链接中的地址该怎么写?
两种方式—
第一种是相对路径
就是相对于a.html 其他文件的位置;
由于 aa.html跟a.html在同一个文件夹下 所以跳转到aa.html的相对路径可以这么写—aa.html
不以斜线开头表示----直接跳转到本文件夹下的某一个内容;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
this is page a
<br/>
<!--相对路径-->
<!--不以斜线开头-->
<a href="aa.html" target="_blank">跳转到aa</a>
<a href="../../rest/b/b.html" target="_blank">跳转到b</a>
</body>
</html>
而如果要跳转到b.html,由于b.html跟a.html不在同一个文件夹下,但是他在a.html的父级文件夹 test的同辈-----rest中,所以 要网上倒腾两代(本代和父代直到爷爷代) …/…/
即下图所示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
this is page a
<br/>
<!--相对路径-->
<!--不以斜线开头-->
<a href="aa.html" target="_blank">跳转到aa</a>
<a href="../../rest/b/b.html" target="_blank">跳转到b</a>
<!--绝对路径-->
<!--以斜线开头-->
<a href="/GavinP/test/a/aa.html" target="_blank">跳转到aa</a>
<a href="/GavinP/rest/b/b.html" target="_blank">跳转到b</a>
C:\Users\Gavin\IdeaProjects\ThreadDemo\GavinP\web\test\a\aa.html
</body>
</html>
总结----
相对路径,不以/开头,就是相对路径 …代表向上一层
绝对路径,以/开头 在页面上 /代表从项目的部署目录开始找 从webapps中开始找
页面的绝对路径要有项目名,除非我们的项目没有设置项目名
还有一一种写法是基于base标签实现相对路径;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<base>标签的作用是补充相对路径开头的路径内容-->
<!--作为相对路径的基准-->
<base href ="http://127.0.1:8080/GavinP/">
</head>
<body>
this is page a
<br/>
<!--相对路径-->
<!--不以斜线开头-->
<a href="aa.html" target="_blank">跳转到aa</a>
<a href="../../rest/b/b.html" target="_blank">跳转到b</a>
<br/>
<br/>
<!--绝对路径-->
<!--以斜线开头-->
<a href="GavinP/test/a/aa.html" target="_blank">跳转到aa</a>
<a href="GavinP/rest/b/b.html" target="_blank">跳转到b</a>
<br/>
<br/>
<a href="test/a/aa.html" target="_blank">跳转到aa</a>
<a href="rest/b/b.html" target="_blank">跳转到b</a>
</body>
</html>
其中标签要放在head标签之中,否则不起作用;
请求转发的路径问题
package com.gavin.lcy;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//@WebServlet(urlPatterns = "/RequestQueenDemo.do")
//urlPatterns 模式下
@WebServlet(urlPatterns = "/my/c/cc/RequestQueenDemo.do")
public class RequestQueenDemo extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//绝对路径
//RequestDispatcher requestDispatcher = req.getRequestDispatcher("/test/a/a.html");
//相对路径
// RequestDispatcher requestDispatcher = req.getRequestDispatcher("test/a/a.html");
//相对路径
RequestDispatcher requestDispatcher = req.getRequestDispatcher("../../../test/a/a.html");
requestDispatcher.forward(req,resp);
}
}
package com.gavin.lcy;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//@WebServlet(urlPatterns = "/RequestQueenDemo.do")
//urlPatterns 模式下---影响相对路径
//@WebServlet(urlPatterns = "/my/c/cc/RequestQueenDemod.do")
@WebServlet(urlPatterns = "/RequestQueenDemod.do")
public class RequestQueenDemod extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// resp.sendRedirect("../../../test/a/a.html");
//绝对路径---带项目名
//获取i项目名
ServletContext servletContext = this.getServletContext();
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
resp.sendRedirect(contextPath+"/index.html");
}
}