我正在使用嵌入式Jetty创建一个静态网站。ServletContextHandler.setResourceBase(“
…”)与ResourceHandler.setResourceBase(“ …”)是否具有相同的作用?
例:
// ServletContextHandler case
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setResourceBase("/tmp/...");
// ResourceHandler case
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase("/tmp/...");
我已经尝试过测试两个。ResourceHandler正是我想要的。但是否则就没有。它们之间有什么区别?
(对不起,我的英语不好:P)
更改后,下面是完整代码。Context(“ /”)提供静态文件,wsContext(“ / ws”)提供Web套接字端点。当然,Context(“
/”)也可以为Web套接字端点提供服务。
server = new Server();
server.setStopAtShutdown(true);
ServerConnector connector = new ServerConnector(server);
connector.setPort(8000);
server.addConnector(connector);
// Setup the basic application "context" for this application at "/"
// This is also known as the handler tree (in jetty speak)
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.setResourceBase(System.getProperty("webapp.path"));
ServletContextHandler wsContext = new ServletContextHandler();
wsContext.setContextPath("/ws");
ContextHandlerCollection contexts=new ContextHandlerCollection();
contexts.setHandlers(new Handler[]{context, wsContext});
server.setHandler(contexts);
context.addServlet(DefaultServlet.class, "/");
// Initialize javax.websocket layer
ServerContainer wsContainer = WebSocketServerContainerInitializer.configureContext(wsContext);
// Add WebSocket endpoint to javax.websocket layer
// code omitted...
server.start();
logger.info("WebServer started.");
使用该设置,resourceHandler
将永远不会调用,因为链末尾的DefaultServlet
处理(或Default404Servlet
)ServletContextHandler
将始终响应,resourceHandler
甚至无法执行。
如果你有一个ServletContextHandler
,不采用ResourceHandler
使用DefaultServlet
该ServletContextHandler
设置并为您的静态文件。
ResourceHandler
是非常简单的,如果要更多控件/功能,请DefaultServlet
在您的配置中使用ServletContextHandler
。
好吧,顺便说一句…
该ServletContextHandler.setBaseResource(Resource)
是对的地方ServletContext
本身配置其上下文范围resourceBase
。
(请注意:setResourceBase()的参数是一个URL字符串,可以指向file://
目录甚至某个jar:file://
位置。Resource.newResource(String)
)支持的几乎所有内容)
${resourceBase}/
是各种方法的查找点,javax.servlet.ServletContext
例如:
String getRealPath(String path)
URL getResource(String path)
InputStream getResourceAsStream(String path)
Set<String> getResources(String path)
DefaultServlet
,这可能会提供静态资源(如*.html
,*.css
,*.js
从指定)${resourceBase}/${request.pathInfo}
ResourceHandler
不参加ServletContextHandler
是不适当的ServletContextHandler
。
另外,不要忘记设置ServletContextHandler.setContextPath(String)
为所需的上下文路径(通常是"/"
)
是的,您甚至可以在一个中拥有多个DefaultServlet
配置ServletContextHandler
本文向大家介绍Java如何使用Jetty实现嵌入式的Servlet容器,包括了Java如何使用Jetty实现嵌入式的Servlet容器的使用技巧和注意事项,需要的朋友参考一下 最近在项目中遇到关于jetty的问题,所以在网上做一些科普,接下来就给大家做一些分享: Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也
我想要主持我的第一个基于Java的网站。我了解到有基于云的服务提供网站托管。但是也有一些未知的术语,比如已经可用的容器和Docker。我对GlassFish,Tomcat等容器知之甚少,但对Docker不太了解。那么码头工人到底是什么?
本文向大家介绍页面导入样式时,使用link和@import有什么区别?相关面试题,主要包含被问及页面导入样式时,使用link和@import有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 link是HTML标签,@import在css中使用 @import会block后续资源加载 我记得以前网上有人测试过,在IE下@import的文件会被安排到最后下载,也就是顺序会有问题,而使用link不
我刚接触Spring,我读到BeanFactory也称为基本IOC,ApplicationContext称为高级IOC。 我读到: BeanFactory容器是为DI提供基本支持的最简单的容器,由org.springframework.beans.factory.BeanFactory接口定义。BeanFactory和相关接口,如BeanFactoryAware、InitializingBean、
在使用Docker时,我们从一个基图像开始。我们启动它,创建更改,这些更改保存在图层中,形成另一个图像。 所以最终我有了一个用于我的PostgreSQL实例的映像和一个用于我的web应用程序的映像,对这些映像的更改将持续保持。 什么是容器?
有没有一种方法可以使用maven jetty插件生成一个带有嵌入式jetty的fat jar?