了解WAR和其他部署中的Jetty资源和上下文

时间:2019-05-12 18:02:34

标签: servlets jetty war

Jetty具有资源和上下文。我想更好地理解它们。

资源是URL,文件路径还是其他内容?资源是相对于WAR,其运行的文件系统还是其他东西?您如何将资源指向WAR内部的某个内容?

什么是resourceBase?它如何影响资源?

并且Context只是说URL路径开始的一种方式吗?如果不是,什么是上下文?

我已经阅读了API文档,但没有看到定义的文档。

1 个答案:

答案 0 :(得分:0)

“资源”一词超载。

  • 资源是对任何URL进行请求时HTTP规范中使用的术语(请参见"Target Resource"
  • 资源是首字母缩写URL(统一资源定位符)和URI(统一资源标识符)中的第二个字母。
  • 资源也是服务器计算机本身可以访问的内容的定义:

    • 作为该路径的字符串(/path/to/my/...)引用的文件系统路径。
    • 文件系统路径,作为对该路径的字符串URL(file://...)引用。
    • 对非文件系统资源的字符串URL(http://...)引用。
    • 类路径引用(/content/in/classpath
    • 一个Jar文件参考(jar:file:///path/to/foo.jar!/path/inside/
    • java.io.File裁判。
    • 一个java.nio.file.Path参考。
    • 一个java.net.URL引用(可以是任何受支持的java url协议/方案)。
    • 一个java.net.URI引用(可以是任何受支持的java url协议/方案)。
  • 资源可以是对具有内容(例如文件)或其他资源目录的特定事物的引用。

  • “资源库”始终是目录样式引用。
  • 对“资源库”中的内容的请求始终相对于该资源库,并且具有将您保留在该资源库中的保护(或引发错误)。 (例如:/path/to/base/的资源库和/css/main.css的请求将返回/path/to/base/css/main.css,而请求/../../../secret.txt的返回错误)

现在,“上下文”一词,这就是您在Servlet规范本身中看到的javax.servlet.ServletContext

概念
  • 定义一组可以通过公共上下文路径访问的资源(物理,静态,动态,生成的等)。
  • 该上下文中的进程(例如:servlet和过滤器)可以访问该上下文中的其他资源。
  • 上下文外部的进程无法访问该上下文中的内容。
  • 上下文本身保存该上下文中所有组件都可以访问的信息(例如:属性,初始化参数,安全约束,安全角色,MIME类型映射,语言环境编码,会话配置,侦听器,临时目录,工作目录等。)