如何使用相对路径而不包含上下文根名称?

2024-02-24

要工作我的静态文件(CSS,JS),我必须编写绝对路径,例如/AppName/templates/style/main.css。有没有什么解决方案,我可以写相对路径style/main.css?


If your actual关注的是 webapp 上下文(“AppName”部分)的动态性,然后通过以下方式动态检索它HttpServletRequest#getContextPath() http://download.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getContextPath%28%29.

<head>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/templates/style/main.css" />
    <script src="${pageContext.request.contextPath}/templates/js/main.js"></script>
    <script>var base = "${pageContext.request.contextPath}";</script>
</head>
<body>
    <a href="${pageContext.request.contextPath}/pages/foo.jsp">link</a>
</body>

如果你想为所有相对链接设置一个基本路径,这样就不需要重复${pageContext.request.contextPath} in every相对链接,使用<base>标签。这是一个帮助的例子JSTL 函数 http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/tld-summary.html.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<head>
    <c:set var="url">${pageContext.request.requestURL}</c:set>
    <base href="${fn:substring(url, 0, fn:length(url) - fn:length(pageContext.request.requestURI))}${pageContext.request.contextPath}/" />
    <link rel="stylesheet" href="templates/style/main.css" />
    <script src="templates/js/main.js"></script>
    <script>var base = document.getElementsByTagName("base")[0].href;</script>
</head>
<body>
    <a href="pages/foo.jsp">link</a>
</body>

这样每个相对链接(即not从...开始/或方案)将变得相对于<base>.

顺便说一句,这与 Tomcat 没有任何具体关系。它仅与 HTTP/HTML 基础知识相关。在其他所有网络服务器中您都会遇到同样的问题。

也可以看看:

  • 调用转发到 JSP 的 Servlet 时,浏览器无法访问/查找 CSS、图像和链接等相关资源 https://stackoverflow.com/questions/3655316/browser-cant-access-find-relative-resources-like-css-images-and-links-when-cal
  • 是否建议使用 html 标签? https://stackoverflow.com/questions/1889076/is-it-recommended-to-use-the-base-html-tag
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用相对路径而不包含上下文根名称? 的相关文章

随机推荐

  • SetForegroundWindow:ForegroundLockTimeout 注册表值和 SPI_GETFOREGROUNDLOCKTIMEOUT WinAPI 参数之间的关系

    Context 这个问题是关于如何通过配置控制是否允许编程跨进程窗口激活 使窗口成为具有输入焦点的前台窗口 通过SetForegroundWindow https learn microsoft com en us windows win3
  • 如何获取本地计算机上所有 MS SQL Server 实例的列表?

    这似乎是一个相当常见的问题 但我见过的答案都不是特别令人满意 我想要获取本地计算机上安装的 MS SQL Server 实例的名称列表 无论它们是否已启动 出于本次讨论的目的 我可以只查找 SQL 2005 及更新版本的实例 我可以使用 传
  • 自动完成 (jQuery UI) 和本地存储

    我在使用这两个工具时遇到了一个奇怪的错误 我正在对 API 进行 AJAX 查询 然后检索存储在 localStorage 中并显示在自动完成面板中的 JSON 数据 问题是 根据自动完成源的来源 面板会有不同的反应 这是 AJAX 成功时
  • Google 跟踪代码管理器:跟踪“选择”下拉菜单“选项”标签值

    我无法跟踪 选择 标签中 选项 标签的值 我目前有一个 Google Translator Widget 的下拉菜单 用户可以单击它并选择语言 当您单击 选择语言 下拉菜单时 您将能够看到德语选项 请参阅随附的屏幕截图 我在 Google
  • 显示个人用户评级(letrate gem)

    我目前正在使用 Letsrate gem https github com muratguzel https github com muratguzel 在我的应用程序中 评级显示正确 但是 我想显示单个用户提交的评分 而不仅仅是显示平均值
  • preg_match错误未知修饰符“{”[重复]

    这个问题在这里已经有答案了 这有什么问题吗 if preg match a zA Z 1 7 POST naam and preg match lt gt a zA Z0 9 POST password 第一个正则表达式我想要一个 1 7
  • Github 操作:npm install -> 错误:进程已完成,退出代码 1

    我的这个 GitHub 操作工作流程已经运行了一年多了 当我到达运行 npm install 的步骤时 突然出现错误 我真的不知道为什么会触发错误 非常感谢有人帮助或至少为我指明正确的方向 如果您需要更多数据 请告诉我 我将编辑问题 我尝试
  • 使用 OS X 的情节提要初始化另一个窗口

    我在 Xcode6 中创建了一个使用故事板的 Cocoa 应用程序 作为模板 Xcode 为应用程序提供了一个窗口 我想添加第二个窗口来显示程序首次加载的时间 所以基本上 会出现两个窗口 我在 Main storyboard 上放置了一个窗
  • 使用 ASIO 的线程池 - 线程退出,任务未执行

    我正在使用 Boost ASIO 用 C 编写一个 ThreadPool 类 以下是我迄今为止编写的代码 线程池类 using namespace std using namespace boost class ThreadPoolClas
  • 如何计算多标签分类的 F1-Score?

    我尝试计算f1 score但当我使用 sklearn 时 我在某些情况下收到一些警告f1 score method 我有一个多标签 5 类预测问题 import numpy as np from sklearn metrics import
  • 在 delphi 7.0 中创建打包结构时出现错误 EStackOverflow

    在 Borland Delphi 7 0 中创建打包结构时出现 EStackOverflow 我想做以下事情 Type T4 packed record VT integer SKT byte end T3 packed record O
  • 为什么 emplace_back() 不使用统一初始化?

    以下代码 include
  • Javascript 数组计数与控制台不一致? [复制]

    这个问题在这里已经有答案了 我在这里是不是很傻 我来自 Ruby 所以我可能缺少一些有关 Javascript 数组的内容 console log new devices 控制台结果 Array 1 console log new devi
  • 从嵌入资源加载模板

    如何将嵌入资源作为 ITemplate 加载 LoadTemplate 方法仅采用字符串虚拟路径 显然这不适用于嵌入式资源 假设您的模板是嵌入的并且需要保持这种方式 我认为您可能需要重新考虑 这是我不久前编写的一个函数 在处理嵌入文件 主要
  • EF6 防止不在外键上创建索引

    我在用着EF6创建数据库的代码优先方法 当我添加迁移和更新数据库时 它总是创建Non cluster Index默认情况下 对于表中的每个外键 我的问题 是否有 EF6 不创建的全局设置Non Cluster index在外键上 我搜索并找
  • 按组对变量进行排名 (dplyr)

    我有一个包含列的数据框x1 x2 group我想生成一个带有额外列的新数据框rank这表明了顺序x1在其组中 有一个相关问题here https stackoverflow com questions 28018933 r data fra
  • Office集成(Word)-拦截保存

    我计划实施一个小型内部文档管理系统 它必须有一个 Web GUI 用于管理存储在数据库中的远程文件夹结构 这些文件夹中存储了 Word 文档 物理上作为数据库中的 blob 每当用户单击文档链接时 就会通过浏览器下载单词二进制文件 并 希望
  • 使用 JSF Datatable 有条件地显示行

    我有一些当前有效的 JSF 代码 如下所示 我需要修改它以有条件地抑制表中某些行的显示 我知道如何有条件地抑制特定单元格的显示 但这似乎会创建一个空单元格 而我想做的是根本不显示该行 有什么建议么
  • 理论:压缩算法可以使某些文件变小但不会变大?

    我遇到了这个问题 无损压缩算法声称可以保证使某些文件变小并且不会使文件变大 这是 a 不可能 b 可能 但可能运行不确定的时间 c 压缩系数为 2 或更低时可能 d 对于任何压缩因子都可能吗 我倾向于 a 但无法给出具体原因 我将列出我和朋
  • 如何使用相对路径而不包含上下文根名称?

    要工作我的静态文件 CSS JS 我必须编写绝对路径 例如 AppName templates style main css 有没有什么解决方案 我可以写相对路径style main css If your actual关注的是 webap