簡體   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