• 网站开发中的相对URL问题--JSP


    问题描述:
    入门网站开发时,我们会在相对URL问题上有疑惑。例如,在一个jsp页面中引入css外部文件,
    <link rel="stylesheet"
             href="my-styles.css"
             type="text/css" >
    当我们直接访问时,页面正常显示,而有时候跳转到此页面,则出现css缺失的情况,这就是我想说的问题。
     
    在分析问题之前,需要引入jsp中的两个知识点:跳转(forward)和重定向(redirect),如果你已了解相关知识,请直接阅读解决方案。
    引入:
    JSP或Servlet之间有两种相互调用方法,即跳转(forward)和重定向(redirect).
    它们的实现方式分别是:
    通过RequestDispatcher的forward方法实现跳转(你可以通过HttpServletRequest的getRequestDispatcher方法获得RequestDispatcher);
    通过HttpServletRequest的sendRequest方法实现重定向;
    区别:
    1. 重定向要求客户端(或浏览器)重新连接服务器,获取新资源(或页面),而跳转不需要;
    2. 重定向不会保存HttpServletRequest的信息,跳转保存;
    3. 重定向会使浏览器地址栏地址发生改变,而跳转保持原来的地址。
    说白了,重定向是浏览器从服务器从新获取资源的过程,跳转是服务器内部页面之间相互调用的过程,与浏览器无关。
    正因为此,页面中相对URL的相对起始目录会发生变化,举例来说,page_one.jsp调用page_two.jsp时,
    1. 重定向调用,页面的相对URL起始目录为page_two.jsp所在目录;
    2. 跳转调用,页面的相对URL起始目录为page_one.jsp所在目录;
     
    如果页面中的相对URL如以上例子中的写法(href="my-style.css",表示css文件存在页面的起始目录中),因为页面的起始目录会发生变化,所以不管css文件放在何处,均可能出现资源不存在的情况。
     
    解决方案:
    这样的相对URL写法(href="my-style.css")表示css文件与
    因为无法判断页面的访问方式是跳转还是重定向,所以我们应该以不变应万变,使不同的访问方式均能成功获取资源。
    最简单的解决方案是:
    1. 将所有的jsp页面放在只有服务器才能访问的WEB-INF文件夹中;
    2. 使用起始目录为网站应用的相对URL,如下:
      <link rel=stylesheet
               <!-- 以斜杠"/"开始表示相对URL以网站应用为起始目录 -->
               href="/path/my-styles.css"
               type="text/css">
    即可解决问题。
    希望对你有所帮助!
  • 相关阅读:
    make_blobs(源码)
    odoo13
    Odoo Community & Enterprise | & 我的一些瞎扯。。
    odoo 应用笔记 01 [草稿]
    PVE 为虚拟机 直通硬盘
    freebsd 断电 单用户模式恢复
    odoo 绿色版
    WSL 手动下载安装
    Command pg_dump not found
    odoo性能优化
  • 原文地址:https://www.cnblogs.com/igeneral/p/3641442.html
Copyright © 2020-2023  润新知