Hello World!——內(nèi)嵌Jetty

[TOC]

Jetty是一個開源的輕量級Servlet容器儒飒,提供JSP和servlet運行環(huán)境谬莹。Jetty是純Java編寫的,可以直接使用JAR包方式啟動桩了,使用簡單附帽,架構(gòu)也簡單。

Jetty從設(shè)計之初就考慮作為組件提供井誉,口號是"Don’t deploy your application in Jetty, deploy Jetty in your application!"(不在Jetty中部署你的應用蕉扮,在你的應用中部署Jetty)。

Jetty的組件劃分比較清晰颗圣, Jetty源碼掛在github上,有興趣的可以下下來看看慢显。

一爪模、Jetty提供的功能

Jetty托管在Eclipse基金會。Jetty Web Server可以作為Http服務(wù)器和Servlet容器使用荚藻, 提供靜態(tài)和動態(tài)頁面服務(wù)屋灌,可以獨立部署也可以嵌入式使用。

Jetty項目中应狱,組合各組件可以提供以下功能:

  • 異步Http服務(wù)器(Asynchronous HTTP Server)
  • 標準Servelt容器(Standards based Servlet Container)
  • websocket服務(wù)器(websocket server)
  • Http/2服務(wù)器(http/2 server)
  • 異步客戶端(Asynchronous Client (http/1.1, http/2, websocket))
  • 提供OSGI,JNDI,JMX,JASPI,AJP支持(OSGI, JNDI, JMX, JASPI, AJP support)

二共郭、引入Jetty

在應用中內(nèi)嵌Jetty通過maven的方式引入Jetty的jar包。

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <version>9.4.14.v20181114</version>
            <artifactId>jetty-server</artifactId>
        </dependency>

jetty-server的jar包依賴關(guān)系如下, Jar包依賴非常簡單:


jetty-server-dependency-hierarchy

三疾呻、Hello world實例代碼

演示內(nèi)嵌Jetty除嘹,只需要創(chuàng)建Server,指定端口(8080)就可以將Jetty內(nèi)嵌run起來岸蜗,
但是因為沒有處理器尉咕,默認的404頁面:

jetty-server-hello-world-404-default

最簡單的是繼承AbstractHandler實現(xiàn)一個Handler,處理請求和響應數(shù)據(jù):

import java.io.IOException;

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.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class JettyHelloWorldDemo {

    @Slf4j
    public static class Handler extends AbstractHandler {
        @Override
        public void handle(String target, Request baseRequest, 
                HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            log.info("Handler request start: {}", request.getRequestURL());
            //設(shè)置類型璃岳,指定編碼utf8
            response.setContentType("text/html; charset=utf-8");
            //設(shè)置響應狀態(tài)嗎
            response.setStatus(HttpServletResponse.SC_OK);
            //寫響應數(shù)據(jù)
            response.getWriter().write("<h1>Hello world!</h1>");
            //標記請求已處理年缎,handle鏈
            baseRequest.setHandled(true);
            log.info("Handler request end");
        }
    }

    public static void main(String[] args) {
        //創(chuàng)建服務(wù)器
        Server server = new Server(8080);
        try {
            //設(shè)置handler
            server.setHandler(new Handler());
            //啟動服務(wù)器
            server.start();
            //阻塞Jetty server的線程池,直到線程池停止
            server.join();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铃慷,一起剝皮案震驚了整個濱河市单芜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌犁柜,老刑警劉巖洲鸠,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異馋缅,居然都是意外死亡扒腕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門萤悴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘾腰,“玉大人,你說我怎么就攤上這事稚疹。” “怎么了祭务?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵内狗,是天一觀的道長。 經(jīng)常有香客問我义锥,道長柳沙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任拌倍,我火速辦了婚禮赂鲤,結(jié)果婚禮上噪径,老公的妹妹穿的比我還像新娘。我一直安慰自己数初,他們只是感情好找爱,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泡孩,像睡著了一般车摄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仑鸥,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天吮播,我揣著相機與錄音,去河邊找鬼眼俊。 笑死意狠,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的疮胖。 我是一名探鬼主播环戈,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼获列!你這毒婦竟也來了谷市?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤击孩,失蹤者是張志新(化名)和其女友劉穎迫悠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巩梢,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡创泄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了括蝠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞠抑。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忌警,靈堂內(nèi)的尸體忽然破棺而出搁拙,到底是詐尸還是另有隱情,我是刑警寧澤法绵,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布箕速,位于F島的核電站,受9級特大地震影響朋譬,放射性物質(zhì)發(fā)生泄漏盐茎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一徙赢、第九天 我趴在偏房一處隱蔽的房頂上張望字柠。 院中可真熱鬧探越,春花似錦、人聲如沸窑业。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽数冬。三九已至节槐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拐纱,已是汗流浹背铜异。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秸架,地道東北人揍庄。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像东抹,于是被迫代替她去往敵國和親蚂子。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容