gpt4 book ai didi

java - Jetty:Servlet 无法转发到 JSP

转载 作者:行者123 更新时间:2023-11-29 03:27:19 31 4
gpt4 key购买 nike

我有以下问题:我试图将请求从 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);
}

最佳答案

这个问题经常出现,所以我创建了一个使用启用了 JSP 的嵌入式 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()
  • 需要为 JSP 初始化程序设置 org.eclipse.jetty.containerInitializers
  • 需要添加ServletContainerInitializersStarter bean
  • 需要添加InstanceManager 引用
  • 需要创建一个合适的 javax.servlet.context.tempdir
  • org.apache.jasper.compiler.disablejsr199 设置为 false 以使用标准 JavaC 编译器
  • 上下文的类加载器不能是系统类加载器。 - 参见 getUrlClassLoader()
  • DefaultServlet 必须命名为“default”——参见defaultServletHolder()

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

DateServlet 是 mapped to path spec of /date/ in Main.java

因此,一旦您点击 http://localhost:8080/date/,请求就会到达 servlet,后者又转发到 /test/tag2.jsp

关于java - Jetty:Servlet 无法转发到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20352232/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com