这是我之前的问题的后续问题
如果我在 html 文件中这样配置,CSS 文件不会被加载。
<link rel="stylesheet" href="./main.css" type="text/css">
或
<link rel="stylesheet" href="main.css" type="text/css">
虽然 Edge 和 Chrome 根本没有显示任何错误,但 Firefox 显示此错误消息:
The stylesheet http://localhost:8080/app/main.css was not loaded because its MIME type, “text/html”, is not “text/css”.
在处理程序中,这是如何设置响应标头的:
response.setStatus(200);
response.getHeaders().put(HttpHeader.CONTENT_TYPE, MimeTypes.Type.TEXT_HTML_UTF_8.toString());
Content.Sink.write(response, true, msg, callback);
callback.succeeded();
return true;
我的问题是:如何配置 Jetty Server v12 来提供 CSS 和 Javascript 文件?
提前致谢。
您可以轻松设置 Jetty
ResourceHandler
来从您想要的 url 路径和基本资源提供静态文件。
简单来说,它看起来像这样......
String resourceRoot = // URI string to root of resources
ResourceFactory resourceFactory = ResourceFactory.of(server);
ResourceHandler handler = new ResourceHandler();
handler.setBaseResource(resourceFactory.newResource(resourcesRoot));
handler.setDirAllowed(true);
handlers.addHandler(handler);
resourceRoot
可以是文件系统、类加载器引用,或者通常是 java 支持的任何 URL。
ResourceHandler
可以单独存在,也可以在ContextHandler
下,甚至是处理程序包装器或选择处理程序的一部分(如PathMappingsHandler
)。
有关完整示例,请参阅
jetty-examples
项目。
ResourceHandler
- https://github.com/jetty/jetty-examples/tree/12.0.x/embedded/file-serverDefaultServlet
- https://github.com/jetty/jetty-examples/tree/12.0.x/embedded/ee10-file-server