将jetty ResourceHandler映射到URL

时间:2013-02-19 13:05:26

标签: jetty embedded-jetty

是否可以使用嵌入式Jetty从目录X提供静态文件但映射到URL Y?我有静态文件存储在“web”目录下,但我希望URL类似于http://host/myapp

我已经通过以下方式成功运行了配置了ResourceHandler的服务器:

ResourceHandler ctx = new ResourceHandler();
ctx.setResourceBase("path-to-web");
HandlerList list = new HandlerList();
list.addHandler(ctx);
...
server.setHandler(list);

但结果是提供/web下的文件而不是所需的URL映射。

2 个答案:

答案 0 :(得分:19)

ResourceHandler没有可配置的上下文,但您只需将其包装在ContextHandler中即可实现。

请改为尝试:

ContextHandler ctx = new ContextHandler("/my-files"); /* the server uri path */
ResourceHandler resHandler = new ResourceHandler();
resHandler.setResourceBase("path-to-web");
ctx.setHandler(resHandler);
server.setHandler(ctx);

这会将/my-files作为文件系统的path-to-web

的ResourceHandler内容提供

答案 1 :(得分:1)

以上对Jetty 9不起作用,但这样做:

ContextHandler contextHandler = new ContextHandler("/my-files");
contextHandler.setResourceBase("/tmp/static");

ResourceHandler resourceHandler = new ResourceHandler();
contextHandler.setHandler(resourceHandler);

server.setHandler(contextHandler);