为了账号安全,请及时绑定邮箱和手机立即绑定

服务静态内容的servlet

服务静态内容的servlet

qq_笑_17 2019-06-25 13:37:26
服务静态内容的servlet我在两个不同的容器(Tomcat和Jetty)上部署了一个Webapp,但是它们为静态内容服务的默认servlet有不同的方式来处理我想要使用的URL结构(细节).因此,我希望在Webapp中包含一个小servlet,以提供自己的静态内容(图像、CSS等)。servlet应该具有以下属性:没有外部依赖简单可靠支持If-Modified-Since报头(即自定义)getLastModified方法)(可选)支持gzip编码,eTag,.这样的servlet在某个地方可用吗?我能找到的最接近的就是例4-10从servlet的书。最新情况:我想使用的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文件夹)。
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

我想出了一个稍微不同的解决方案。这有点麻烦,但这是映射:

<servlet-mapping>   
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern></servlet-mapping><servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern></servlet-mapping><servlet-mapping>
 <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern></servlet-mapping><servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern></servlet-mapping><servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping>
    <servlet-name>myAppServlet</servlet-name>
    <url-pattern>/</url-pattern></servlet-mapping>

这基本上只是将所有内容文件按扩展名映射到默认的servlet,以及其他所有内容文件到“myAppServlet”。

它既适用于Jetty也适用于Tomcat。


查看完整回答
反对 回复 2019-06-25
?
largeQ

TA贡献2039条经验 获得超7个赞

我得到了很好的结果FileServlet,因为它支持几乎所有的HTTP(eTAGS、分块等)。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 418 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号