小编典典

码头:Servlet无法转发到JSP

jsp

我有以下问题:我正在尝试将请求从servlet转发到jsp页面,但得到了404。当我直接访问/sites/home.jsp时,它将加载jsp。

    WebAppContext sites = new WebAppContext("src/com/example/blub/server/sites", "/sites");
    ServletContextHandler weblet = new ServletContextHandler(ServletContextHandler.SESSIONS);
    weblet.setContextPath("/");
    weblet.addServlet(new ServletHolder(new Weblet()), "/home");
    HandlerList handlers = new HandlerList();
    handlers.setHandlers(new Handler[] {sites, weblet});
    server.setHandler(handlers);

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.getRequestDispatcher("/sites/home.jsp").forward(req, resp);
}

阅读 595

收藏
2020-06-08

共1个答案

小编典典

这个问题经常出现,因此我创建了一个在启用JSP的情况下使用Embedded Jetty的示例项目。

https://github.com/jetty-project/embedded-jetty-
jsp/

将此项目加载到您喜欢的IDE中。

运行org.eclipse.jetty.demo.Main课程,然后使用浏览器并打开http://localhost:8080/

快速导览

src/main/java/org/eclipse/jetty/demo/Main.java
包含创建/配置/并启动嵌入式服务器的部分。

请特别注意:

  • JspServlet必须命名为“ jsp”-请参见 jspServletHolder()
  • org.eclipse.jetty.containerInitializers需要设置的JSP初始化
  • ServletContainerInitializersStarter添加豆需求
  • InstanceManager要被添加参考需求
  • javax.servlet.context.tempdir需要创建一个适当的
  • 设置org.apache.jasper.compiler.disablejsr199false使用标准JavaC编译器
  • 上下文的类加载器不能是系统类加载器。-看getUrlClassLoader()
  • DefaultServlet必须命名为“ default”-请参见 defaultServletHolder()

src/main/java/com/acme/DateServlet.java 是如何从Servlet转发到JSP的示例。

DateServlet 映射到/date/Main.java中的路径规范

因此,一旦您点击http://localhost:8080/date/了请求,该请求就会到达servlet,而该servlet会依次转发至/test/tag2.jsp

2020-06-08