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

回到顶部