2012-10-23 83 views
3

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

感谢, 哈利

回答

3

Web应用程序所在的目录,你应该创建和放置在您的静态文件。:)如果你有一个Maven项目它会“的src/main/webapp的”在根您项目。

希望有所帮助。

干杯, Thomas