前面說過jetty最普遍的應用是能夠方便的嵌入到應用程序中,而不是做爲應用服務器,下面就用最簡單的demo來演示一個最簡單的應用html
一、下載並導入依賴前端
首先應該創建一個普通的java項目,而後把依賴包導進去java
關於依賴包的獲取,第一種方式是將前面下載的jetty服務器中lib目錄中的jar包導入便可web
另外是在jetty下載頁面上,上面是jetty服務器的下載連接,下面能夠看到程序包的下載入口:編程
選擇第一個Jetty-9進去,會看到9.x的不少版本,點進去下載最新的:後端
下載下來以後,將plugins中的java包加入到項目classpath便可api
二、寫一個demo瀏覽器
首先編寫一個處理器來處理web發過來的請求,TestController.java,代碼以下:服務器
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; public class TestController extends AbstractHandler { @Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { System.out.println(target); response.setContentType("text/html; charset=utf-8"); request.setCharacterEncoding("utf-8"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); PrintWriter out = response.getWriter(); if(target.equals("/favicon.ico")) { System.out.println("1"); out.println("404"); } else { System.out.println("2"); out.print("<h3>hello jetty!</h3>"); if(request.getParameter("name") != null) { out.print(request.getParameter("name")); } } } }
準確來講這裏得Controller應該是Handler,必須繼承於AbstractHandler,而且重寫handle方法來處理請求,能夠看到這裏能夠直接使用Servlet的api,默認狀況下jetty請求完畢之後會後臺有一個/favicon.ico的請求,雖然不影響前端顯示,可是爲了防止後端重複處理,因此在這裏進行了一次過濾eclipse
Handler寫完以後,而後寫一個入口的服務來加載Handler而且啓動服務,這裏是JettyService.java
import org.eclipse.jetty.server.Server; public class JettyService { public static void main(String[] args) throws Exception { Server server = new Server(8989); server.setHandler(new TestController()); server.start(); server.join(); } }
這樣一個簡單的demo就寫完了,直接運行main方法啓動服務
而後打開瀏覽器訪問:http://127.0.0.1:8989/?name=jetty能夠看到下面結果
事實上這裏輸入/xxx?name=xxx均可以被攔截,由於target是後臺獲得的,因此能夠針對不一樣的請求執行不一樣的處理
後臺能夠看到以下輸出:
能夠看到嵌入jetty編程是很是簡單和靈活的,這裏只是一個最簡單的案例,實際生產中還要使用不少高級的編程方式和配置