请求转发中的相对路径与绝对路径(请求转发路径问题)

您所在的位置:网站首页 相对路径的例子 请求转发中的相对路径与绝对路径(请求转发路径问题)

请求转发中的相对路径与绝对路径(请求转发路径问题)

#请求转发中的相对路径与绝对路径(请求转发路径问题) | 来源: 网络整理| 查看: 265

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

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

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

测试项目结构如下:

在这里插入图片描述 demo.html: DOCTYPE html> Title 相对路径: 绝对路径: 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请求了,此时的当前路径又变为了/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3