gpt4 book ai didi

runtime - 如何配置嵌入式jetty + webjars

转载 作者:行者123 更新时间:2023-12-02 21:25:54 25 4
gpt4 key购买 nike

我有一个运行嵌入式 jetty 服务器的项目。另外,我在项目的依赖项中有 angularjs-1.2.12.jar 。

如何配置 jetty,以公开 META-INF/资源中的文件。我尝试执行以下操作:

    ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[]{ "index.html" });
resource_handler.setBaseResource(Resource.newClassPathResource("/"));

Server server = new Server(8080);
server.setHandler(resource_handler);

但仅公开目标/类中的文件。

谢谢。

UPD:已解决

    ResourceHandler resource_handler = new ResourceHandler() {
@Override
public Resource getResource(String path)
throws MalformedURLException {
Resource resource = Resource.newClassPathResource(path);
if (resource == null || !resource.exists()) {
resource = Resource.newClassPathResource("META-INF/resources" + path);
}
return resource;
}
};
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[]{"index.html"});
resource_handler.setResourceBase("/");
server.setHandler(resource_handler);

最佳答案

我也遇到了同样的问题,看了一遍之后,你的解决方案是最好的。但正如 James Ward 在评论中指出的那样,它带来了安全问题。这是我的解决方案,建立在您的基础上:

public class MyResourceHandler extends ResourceHandler {
@Override
public Resource getResource(String path) {
Resource resource = Resource.newClassPathResource("META-INF/resources" + path);
if(resource == null) resource = super.getResource(path);
return resource;
}
}

正如所指出的here , ResourceHandler 有点过时了。实际上,我通过扩展 DefaultServlet 来实现此解决方案。

关于runtime - 如何配置嵌入式jetty + webjars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21812527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com