Java Servlet,用于提供静态内容
我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是它们用于提供静态内容的默认servlet具有处理我要使用的URL结构的不同方式(详细信息)。
因此,我希望在web应用程序中包含一个小型servlet,以提供其自己的静态内容(图像,CSS等)。Servlet应该具有以下属性:
- No external dependencies
- Simple and reliable
- Support for If-Modified-Since header (i.e. custom getLastModified method)
- (Optional) support for gzip encoding, etags,…
这样的servlet在某处可用吗?我能找到的最接近的是servlet书中的示例4-10。
更新:我想使用的URL结构-如果你想知道的话-很简单:
<servlet-mapping> <servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
因此,所有请求都应传递到主servlet
,除非它们是static路径请求。问题在于,Tomcat
的默认Servlet
未考虑ServletPath
(因此它在主文件夹中查找静态文件),而Jetty
则将其考虑(因此在static
文件夹中查找)。
回答:
StaticServlet
。它支持If-Modified-Sincegzip
编码,并且还应该能够提供war文件中的静态文件。这不是很困难的代码,但是也不是完全无关紧要的。
该代码可用:StaticServlet.java
。随时发表评论。
更新: Khurram
询问有关ServletUtils
中引用的类StaticServlet
。这只是我用于项目的带有辅助方法的类。你唯一需要的方法是coalesce
(与SQL函数相同COALESCE)。这是代码:
public static <T> T coalesce(T...ts) { for(T t: ts)
if(t != null)
return t;
return null;
}
以上是 Java Servlet,用于提供静态内容 的全部内容, 来源链接: utcz.com/qa/403748.html