有几个选择供您选择。
- 定义另一个 DefaultServlet,将新请求路径映射到磁盘上的目录。
- 定义于
WEB-INF/web.xml
- 或在 Jetty 上下文可部署 xml 中定义
- 定义一个 DefaultHandler 将新的请求路径映射到磁盘上的目录。
- 定义一个 ResourceHandler 将新的请求路径映射到磁盘上的目录。
- 在你的 webapp 旁边部署一个静态上下文引用
我会尝试的第一个技术是......
- 从发行版中打开
etc/webdefault.xml
。
- 找到
<servlet>
名为default
DefaultServlet 的 servlet 的声明。
- 将
<servlet>
定义复制到您的 webapp 的WEB-INF/web.xml
- 将 重命名为(它是一个特殊的保留名称)
<servlet-name>
以外的名称。default
让我们称之为<servlet-name>extrastatic</servlet-name>
- 添加一个新的
<init-param>
定义值,该resourceBase
值指向磁盘上查找内容的位置。
<init-param>
<param-name>resourceBase</param-name>
<param-value>/var/web/static/</param-value>
</init-param>
- 添加一个
<servlet-mapping>
部分,定义从哪些 URL 模式提供此静态内容。
<servlet-mapping>
<servlet-name>extrastatic</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
这是如何工作的......是你现在在 webapp 之外有额外的静态内容。
假设你已经将你的战争部署到上下文中,/myapp
那么像这样对 URL 的请求将提供来自这个新extrastatic
servlet 的内容。
http://machine.corp.com/webapp/static/
serves: /var/web/static/ (possibly index.html - see dirAllowed init-param)
http://machine.corp.com/webapp/static/css/main.css
serves: /var/web/static/css/main.css
http://machine.corp.com/webapp/static/js/jquery-min.js
serves: /var/web/static/js/jquery-min.js