繁体   English   中英

在相对路径 Jetty 上提供静态内容

[英]Serve static content on a relative path Jetty

我的 Main.java 文件中有以下配置。 我检查 ZKUI_BASEURL 是否在 env 或属性文件中设置,然后相应地设置 contextPath。

当我这样做时,对 src/main/resources/webapp/ 中的以下 css 和 js 文件的 GET 请求返回 404。所有控制器请求都工作正常,只是未加载的静态内容。

我想要做的是在 /org/zkui/ 基本路径上提供静态内容和休息 api,以便将来我们可以在反向代理后面运行它。

    String webFolder = "webapp";
    Server server = new Server();

    WebAppContext servletContextHandler = new WebAppContext();
    String serverBaseUrl;
    if( (serverBaseUrl = System.getenv("ZKUI_BASEURL")) == null) {
        if((serverBaseUrl = globalProps.getProperty("baseURL")) == null) {
            serverBaseUrl = "/";
        }
    }
    servletContextHandler.setContextPath(serverBaseUrl);
    servletContextHandler.setResourceBase("src/main/resources/" + webFolder);

    servletContextHandler.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*(/target/classes/|.*.jar)");
    servletContextHandler.setParentLoaderPriority(true);
    servletContextHandler.setInitParameter("useFileMappedBuffer", "false");
    servletContextHandler.setAttribute("globalProps", globalProps);

    ResourceHandler staticResourceHandler = new ResourceHandler();
    staticResourceHandler.setDirectoriesListed(false);
    Resource staticResources = Resource.newClassPathResource(webFolder);
    staticResourceHandler.setBaseResource(staticResources);
    staticResourceHandler.setWelcomeFiles(new String[]{"html/index.html"});

本质上应该发生的是 - /org/zkui/home 应该由控制器处理。

/org/zkui/images/image.png 或 org/zkui/js/bootstrap.min.js 应该由来自 /webapp/images 或 webapp/js 的静态资源处理程序返回。

servletContextHandler.setInitParameter("useFileMappedBuffer", "false")

如果您重视性能(和内存使用),请不要这样做。 此配置仅用于 1 个目的,即 Microsoft Windows 上正在积极迭代和使用热部署功能的开发人员。 生产永远不应该设置此配置。

不要混合使用ResourceHandlerDefaultServlet

查看过去的答案

至于从不同位置提供备用静态内容,您可以为此使用另一个DefaultServlet

也可以在那里查看过去的答案。

您提到了 REST API,请确保您的 REST 层没有提供所有静态内容(这是通过您的 REST 配置以及您的 REST 端点 API url-pattern 完成的)

这个之前已经回答过了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM