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