Java RequestDispatcher在Jetty Embedded应用程序中返回null

时间:2017-12-03 23:17:52

标签: java jetty embedded-jetty

我有以下代码

//response.sendRedirect("Cmmdc");
RequestDispatcher requestDispatcher=request.getRequestDispatcher("Cmmdc");
System.out.println(requestDispatcher);--- **NULL**
requestDispatcher.forward(request,response);

我的主要人物:

Server server = new Server(8080);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);

handler.addServletWithMapping(Start.class, "/Start");
handler.addServletWithMapping(Cmmdc.class, "/Cmmdc");
handler.addServletWithMapping(OptiuneServlet.class, "/OptiuneServlet");
handler.addServletWithMapping(Prim.class, "/Prim");
handler.addServletWithMapping(ValidatorCMMDC.class, "/ValidatorCMMDC");
handler.addServletWithMapping(ValidatorPrim.class, "/ValidatorPrim");
System.out.println("Start server jetty embedded");
server.start();
server.join();

我的问题是我应该如何调用cmmdc servlet来返回引用而不是null?

1 个答案:

答案 0 :(得分:1)

RequestDispatcher 需要一个ServletContext(没办法)。

您的设置没有。

不要直接使用ServletHandler,而是使用ServletContextHandler

Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(Start.class, "/Start");
// etc ...
server.start();
server.join();