2012-10-23 122 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