在嵌入式 Jetty 上使用 DefaultServlet 提供静态 html 文件

问题描述 投票:0回答:1

我正在开发一个需要独立的项目,因此我决定将 Jetty 嵌入到我的应用程序中。 我将提供静态 HTML 页面、一些 JSP 页面,并且还将使用一些自定义 servlet。 我找到了一个完美的示例,说明如何设置嵌入式 Jetty 来完成所有这一切(http://thinking.awirtz.com/2011/11/03/embedded-jetty-servlets-and-jsp/),但是,由于这是我第一次使用 Jetty 并使用 JSP 页面或 servlet,因此我有一些基本问题。

这是代码(如上面的链接所示):

class RunServer {
  public static void main(String args[]) {

    System.out.println("Initializing server...");
    final ServletContextHandler context =
      new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    context.setResourceBase("webapp");

    context.setClassLoader(
        Thread.currentThread().getContextClassLoader()
    );

    context.addServlet(DefaultServlet.class, "/");

    final ServletHolder jsp =
      context.addServlet(JspServlet.class, "*.jsp");
    jsp.setInitParameter("classpath", context.getClassPath());

    // add your own additional servlets like this:
    // context.addServlet(JSONServlet.class, "/json");

    final Server server = new Server(8080);
    server.setHandler(context);

    System.out.println("Starting server...");
    try {
        server.start();
    } catch(Exception e) {
        System.out.println("Failed to start server!");
        return;
    }

    System.out.println("Server running...");
    while(true) {
        try {
            server.join();
        } catch(InterruptedException e) {
            System.out.println("Server interrupted!");
        }
    }
  }
}

我添加了一个额外的自定义 servlet,并且工作得很好,但是,我在静态内容(即 HTML 文件)方面遇到了问题。 尝试访问它们时,我不断收到“文件未找到”错误。 我很确定这是因为我不能 100% 确定应该将 HTML 文件放在哪里。 我假设那行写着“context.setResourceBase(“webapp”);”是告诉各个 servlet 在哪里查找文件(即:资源)的行,但是,我不确定“webapp”实际指向什么。 它是文件夹、类名还是实际文件?

我非常感谢任何有关“webapp”实际是什么(或指向)的帮助,以及将我的静态文件放在项目中的位置。

谢谢, 哈利

html static embedded jetty
1个回答
3
投票

webapp
是您应该创建并放置静态文件的目录。:) 如果您有一个 Maven 项目,它将位于项目根目录中的“src/main/webapp”。

© www.soinside.com 2019 - 2024. All rights reserved.