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中,所以 要网上倒腾两代(本代和父代直到爷爷代) …/…/

即下图所示前端路径问题解析----_java_02

<!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");
    }
}