我正在开发一个需要自包含的项目,因此我决定将 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”实际上是(或指向)的帮助,以及将我的静态文件放在我的项目中的位置。
谢谢,哈利