当前位置: 首页 > 面试题库 >

Java Servlet,用于提供静态内容

云利
2023-03-14
问题内容

我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是它们用于提供静态内容的默认servlet具有处理我要使用的URL结构的不同方式(详细信息)。

因此,我希望在html" target="_blank">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;
}


 类似资料:
  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 问题内容: 我无法让Spring-boot项目提供静态内容。 我已经放在一个命名的文件夹下。在其中,我有一个名为的文件夹。当我打包应用程序并运行它时,它找不到我放在该文件夹中的图像。 我试图把静态文件中,并但没有任何工程。 如果我我可以看到文件在正确文件夹的jar中:例如,但是调用:http://localhost:8080/images/head.png,我得到的只是一个404 有什么想法为什么

  • 谷歌云文档对该应用的可用语法不是很精确。用于我的节点的yaml文件。js应用程序。 我使用了GAE的Python留档中描述的语法,从中我发现了处理程序mecism: 我避免使用expressjs规则来服务/public/index。html内容,最后我得到了一个404错误,这意味着GAE不是作为静态内容提供我的页面: 你有什么线索吗?节点。js与制作API、生成动态内容相关。。。但我更喜欢使用谷歌

  • 类似于另一个问题(参见过滤静态内容Jersey),我想从Jetty提供静态内容。在浩瀚的互联网上散布着几个类似的问题,但大多数都不涉及Guice,而那些涉及Guice的问题已经完全过时了。 我有一个现有的服务,使用泽西(1.12)和Guice(3)与以下: < code>MyGuiceConfig看起来像这样: 当我使用 时,我的服务按预期工作。但是,任何对静态内容的请求都会产生404。 如何在不

  • 问题内容: 我正在探索Go的深度,并且我一直在尝试编写一个简单的Web应用程序来围绕所有内容。我正在尝试服务React.js应用程序。 下面是Go服务器的代码。我有默认的服务路线,效果很好。我正在努力允许将静态文件提供给该索引文件。尽管我需要静态提供JavaScript / CSS / Media文件,但我允许React App自己进行客户端路由。 例如,我需要能够将文件提供给React应用程序才

  • 我正在使用Spring Boot,并试图使我的静态资源(CSS,JS,字体)在部署时可用。源代码可供您查看或从https://github.com/joecracko/StaticResourceError.克隆 现在我的CSS、JS和字体文件对我部署的网站不可见。 下面是我的项目目录结构: 下面是编译后的JAR的根目录:我向您保证,这些文件存在于各自的文件夹中。 以下是我看到的网络错误: 以下是