使用嵌入式 Jetty 在 WAR 之外提供静态内容

2024-02-06

我有一个 WAR(通过嵌入式 Jetty 提供服务),我想包含静态文件战争之外。我的目标是:

  • 从 WAR 外部的路径(相对于嵌入式 Jetty 运行的目录)提供静态文件。所以,如果我调用 jar/srv/app,我想配置一个 URLhttp://myapp.com/static/js/my.js服务/src/app/public/js/my.js.
  • 安全:没有目录列表或../路径逃逸
  • 不重新发明轮子:我不想编写新的 Servlet,而是利用现有功能
  • 理想情况下(不是必需的):隐藏 WAR 中的静态内容,这样如果我有/src/app/public/index.html,该文件将被提供,并且,如果不存在,则 WAR 的index.html将被送达。

这是我检查的内容以及我陷入困境的地方:

  1. DefaultServlet:看起来很理想,但是,我找不到任何方法让它在 WAR 之外提供文件服务。有没有办法让 DefaultServlet 在 WAR 之外提供静态内容,并使用相对于应用程序密码的路径?
  2. 配置 Jetty,如中所述https://www.eclipse.org/jetty/documentation/current/static-content-deployment.html https://www.eclipse.org/jetty/documentation/current/static-content-deployment.html;这似乎是理想的,但是,当复制进来时,似乎没有做任何事情(这是一个NOOP)。
  3. ResourceHandler:这是正确的方法吗?我不知道如何利用它来实现我的目标

ResourceHandler:这是正确的方法吗?我不知道如何利用它来实现我的目标

不要使用ResourceHandler,其劣于DefaultServlet.

配置 Jetty,如中所述https://www.eclipse.org/jetty/documentation/current/static-content-deployment.html https://www.eclipse.org/jetty/documentation/current/static-content-deployment.html;这似乎是理想的,但是,当复制进来时,似乎没有做任何事情(这是一个NOOP)。

仅当您不共享相同内容时这才有效contextPath作为您部署的 Web 应用程序。

有没有办法让 DefaultServlet 在 WAR 之外提供静态内容,并使用相对于应用程序密码的路径?

是的,stackoverflow 上已经以几种不同的方式记录了这一点。 关键是,你会使用额外的DefaultServlet条目,使用自己的“资源基础路径”定义(必须是完全限定的路径条目,没有相对路径),位于不同的url-patterns.

See:

  • 从嵌入式 Jetty 中的备用路径提供静态文件 https://stackoverflow.com/a/20223103/775715
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用嵌入式 Jetty 在 WAR 之外提供静态内容 的相关文章

  • Java Web 技术中的 AJAX 自动完成文本框(JSP 和 servlet)

    我需要您的帮助 了解如何使用 Java Web 技术 JSP Servlet 和 AJAX 使 HTML 输入文本元素像 Google 的 AJAX 搜索引擎 输入文本元素一样工作 下拉列表中的数据将来自数据库表 例如分别是 MySQL 或
  • JPS useBean 与 HashMap

    如何正确地将 jsp useBean 与列表和地图等集合一起使用 我可以通过使用获取列表 type List
  • 清理码头 - 删除“不必要”的东西

    我习惯用Jetty http jetty codehaus org jetty 作为我的网络容器 我对我做了什么安装步骤得到原始的焦油球并且清理一些目录和文件从中 我在这里想提出的是 您通常从 Jetty 中删除什么以在生产 登台环境中使用
  • 如何在 Jetty 中配置 webapps 部署目录

    这一定是一个非常简单的答案 但我似乎找不到 我刚刚开始使用码头7 0 2 on CentOS 5 5并部署了一个webapp使用默认设置 只需将我的 WAR 文件放入 webapps目录 当 Jetty 启动时 它将战争提取到 tmp je
  • cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容

    这是我的web xml xsd
  • jetty服务器运行php代码

    我想配置让jetty运行PHP文件 但到目前为止还没有成功 我在 Eclipse IDE 中安装了 Jetty WTP 工具 当我启动 Jetty 服务器时 我得到了例外 java lang ClassNotFoundException o
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 有序 JSON 对象

    我有一个 servlet 它与数据库通信 然后返回有序 按时间排序 对象的列表 在servlet部分 我有 access DB returns a list of User objects ordered ArrayList users M
  • Servlet 从 Amazon S3 读取数据非常慢

    我需要一个 Servlet 来从 Amazon S3 服务器返回文件 只有服务器有访问凭据 S3 存储桶不公开 我无法改变这一点 有人告诉我使用数据流 但它们太慢了 为了进行测试 我有一个带有缩略图的小项目 当您单击一个项目时 它会打开一个
  • 使用嵌入式 Jetty 7 发布 JAX-WS 端点

    有人可以帮忙吗 我想使用嵌入式 Jetty 7 作为端点 这是我尝试过的 public class MiniTestJetty WebService targetNamespace http public static class Calc
  • Spark java:如何处理多部分/表单数据输入?

    我在用spark http sparkjava com 开发网络应用程序 当我想上传文件时出现问题 public final class SparkTesting public static void main final String a
  • 更改 Ubuntu Linux 中文件夹的读/写访问权限

    我想创建一个文件夹并在创建的文件夹中写入一个文件Amazon EBS来自安装在运行 Ubuntu 的 Amazon EC2 上的 Java Servlet 的卷 我已将 EBS 卷安装在 mnt my address 但是Servlet无法
  • 当请求来自网络服务器而不是网络浏览器时,HTTPSession 的创建如何工作?

    我有一个非常基本的问题 HTTPSession 的创建是如何工作的 我知道你们会因为我把这个问题视为类似的问题而解雇我 存在问题 但是我问这个问题是有原因的 我知道 httpsession 是 Web 浏览器所独有的 当我们第一次执行 Ht
  • 如何更新 session.setAttribute(name,value) 值,其中名称相同?

    我遇到一种情况 我需要更新名称保持不变的 setAttribute 的值 考虑以下情况为例 假设我有三个JSP abc jsp xyz jsp pqr jsp 现在 首先运行 abc jsp 然后将控制转发到 xyz jsp 然后转发到 p
  • 在 Java Servlet 中上传文件

    我有一个 Java 动态 Web 项目 并且正在使用 TomCat v7 0 我是 Web 项目的新手 不太明白如何在我的 jsp 页面之一中上传文件 由于我的项目只是本地的 所以我认为我可以使用多部分形式 其中人们可以选择文件 并且这部分
  • Java 会话变量

    我听说有些人认为在会话中将信息存储在服务器上是一个坏主意 因为它不安全 因此 在多页面业务流程功能中 应用程序将数据写入数据库 然后在需要时检索信息 在会话中存储私人信息是否一定不安全 只要会话本身安全 在会话中存储属性就不存在安全风险劫持
  • 我们可以将请求分派到 servlet 内的 HTML

    这可能吗 RequestDispatcher rd request getRequestDispatcher index html rd forward request response 是的 您可以将请求分派到 HTML 页面
  • Apache FileUpload API 中的 InputStream 已关闭

    这是一个非常具体的问题 我希望这里有人对 FileUpload API 有很好的了解 如果您使用过此 API 您应该知道 当超过文件的最大大小时 将无法读取下一项 因为会抛出 FileSizeLimitExceededException 并
  • 通过执行本机操作系统的命令(例如curl)通过MySQL调用HTTP GET请求

    我使用的是在 32 位 Microsoft Windows XP 专业版 2002 Service Pack 3 上运行的 MySQL 5 6 11 我安装了MySQLsys exec https github com mysqludf l
  • Servlet:从 servletinputstream 中剪切上传标头[重复]

    这个问题在这里已经有答案了 我正在编写一个 servlet 它从客户端接收 xml 文件并使用它 我的问题是 在 servletinputstream 我得到的 request getInputStream 中 开头和结尾有一些上传信息 1

随机推荐