我正在尝试使用嵌入式Jetty服务器.我只想根据请求路径将请求映射到不同的servlet.
创建ServletHandler和添加servlet与创建和添加servlet相比有什么区别ServletContextHandler?
例如:
//how is this different...
ServletHandler handler = new ServletHandler();
handler.addServletWithMapping(MyServlet.class, "/path");
//from this?
ServletContextHandler contextHandler = new ServletContextHandler();
contextHandler.addServlet(MyServlet.class, "/path");
Run Code Online (Sandbox Code Playgroud) 我需要设置Servlet(由于某些原因,只有servlet而不是处理程序)来处理war之外的文件.在这里/sf/answers/2011458501/我找到了以下解决方案:
Server server = new Server(8080);
ServletContextHandler ctx = new ServletContextHandler();
ctx.setContextPath("/");
DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder holderPwd = new ServletHolder("default", defaultServlet);
holderPwd.setInitParameter("resourceBase", "./src/webapp/");
ctx.addServlet(holderPwd, "/*");//LINE N
ctx.addServlet(InfoServiceSocketServlet.class, "/info");
server.setHandler(ctx);
Run Code Online (Sandbox Code Playgroud)
这个解决方案有效,这就是我需要的.但是,一旦我将LINE N更改为,它就会停止工作ctx.addServlet(holderPwd, "/foo/*");.我试过"/ foo /","/ foo",但结果是一样的 - 我明白了not found.为什么?如何使其适应这种特定的背景?由于同样的原因,我使用jetty 9.2.15.