我正在研究一個需要自包含的項目,因此我決定將Jetty嵌入到我的應用中。我將提供靜態HTML頁面,幾個JSP頁面,並且還將使用一些自定義servlet。我發現了一個完美的例子,說明如何設置嵌入式Jetty來完成所有這些(http://thinking.awirtz.com/2011/11/11/embedded-jetty-servlets-and-jsp/),但是,由於這是我第一次使用Jetty並使用JSP頁面或servlet,因此我有一些基本問題。在嵌入式Jetty上使用DefaultServlet提供靜態html文件
下面的代碼(如上面的鏈接找到):
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」實際上(或指向)的幫助,以及將我的靜態文件放在我的項目中的位置。
感謝, 哈利