请求转发中的相对路径与绝对路径

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 请求转发中的相对路径与绝对路径,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

请求转发中的相对路径与绝对路径

有些人在请求转发后静态资源莫名其妙会加载不到,出现各种404,然后检查拦截器等一系列还是找不到问题的所在,很多情况是由于转发与相对路径而引发的问题;

在学习前端的时候我们都学习过绝对路径与相对路径,/代表从根目录开始计算,./则代表从当前目录开始计算;

  • 测试项目结构如下:

在这里插入图片描述

  • demo.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h3>相对路径: </h3>
<img src="../images/100.png" alt="">
<h3>绝对路径: </h3>
<img src="/images/100.png" alt="">
</body>
</html>
  • UserServlet:
package com.dfbz.servlet;

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;

/**
 * @author lscl
 * @version 1.0
 * @intro:
 */
@WebServlet("/user/findAll")
public class UserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 转发到/demo.html
        request.getRequestDispatcher("/demo.html").forward(request,response);
    }
}

  • 启动服务器,访问:http://localhost:8080/page/demo.html

在这里插入图片描述
资源可以正常,访问;

访问:http://localhost:8080/user/findAll

在这里插入图片描述
发现使用绝对路径访问的图片依旧可以正常访问,使用相对路径访问的图片却不能访问了,为什么这样呢?

由于demo.html是/user/findAll请求跳转过去的,此时的当前路径并不是根目录/,而是/user目录;因此:images/100.png = /user/images/100.png

一开始可以访问是因为当前路径就是根目录”/“,被转发之后当前目录变成了”/user”

绝对路径可以访问的原因是:自始至终都是从根目录/开始去读取资源;

我们通过网络抓包也能发现这个问题:

在这里插入图片描述
值得注意的是,如果将转发改为重定向就不会出现这个问题了;

//        request.getRequestDispatcher("/demo.html").forward(request,response);
        response.sendRedirect("/demo.html");

这是因为重定向后,客户端再次去访问:http://localhost:8080/demo.html请求了,此时的当前路径又变为了/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131740.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!