【发布时间】:2021-10-27 05:44:10
【问题描述】:
我的 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 的静态资源处理程序返回。
【问题讨论】:
-
这个问题似乎与stackoverflow.com/questions/20207477/… 重复(已经在那里回答)
标签: jetty embedded-jetty staticresource