新聞資訊
行業(yè)資訊
使用Java內(nèi)置的Http Server服務(wù)器構(gòu)建Web應(yīng)用
2018-01-18 00:00:00
摘要:使用Java技術(shù)構(gòu)建Web應(yīng)用時(shí), 我們通常離不開tomcat和jetty之類的servlet容器,這些Web服務(wù)器功能強(qiáng)大,性能強(qiáng)勁,深受歡迎,是運(yùn)行大型Web應(yīng)用的必備神器。雖然Java的設(shè)計(jì)初衷就是用來(lái)開發(fā)大型應(yīng)用的,然而有時(shí)候我們開發(fā)的程序只是簡(jiǎn)單的小型應(yīng)用.

    一、概述

    使用Java技術(shù)構(gòu)建Web應(yīng)用時(shí), 我們通常離不開tomcat和jetty之類的servlet容器,這些Web服務(wù)器功能強(qiáng)大,性能強(qiáng)勁,深受歡迎,是運(yùn)行大型Web應(yīng)用的必備神器。

    雖然Java的設(shè)計(jì)初衷就是用來(lái)開發(fā)大型應(yīng)用的,然而有時(shí)候我們開發(fā)的程序只是簡(jiǎn)單的小型應(yīng)用,對(duì)于功能的需求和性能的要求并不高, 可能僅僅就幾百行甚至幾十行代碼,這個(gè)時(shí)候使用tomcat之類的Web服務(wù)器去運(yùn)行就顯得有點(diǎn)大材小用了。 比如說(shuō)只是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀出來(lái)轉(zhuǎn)換成JSON,以Web服務(wù)的形式吐給調(diào)用方這樣的閹割型Web應(yīng)用。


使用Java內(nèi)置的Http Server服務(wù)器構(gòu)建Web應(yīng)用


    如下圖所示


使用Java內(nèi)置的Http Server服務(wù)器構(gòu)建Web應(yīng)用


    二、最簡(jiǎn)單的Java Http服務(wù)器

    其實(shí)在jdk中已經(jīng)內(nèi)置了用于此類簡(jiǎn)單Web應(yīng)用構(gòu)建需求的類庫(kù)了,sun公司提供的 com.sun.net.httpserver 包就是用來(lái)幫助我們解決這類問(wèn)題的。如上代碼清單所示, 僅僅幾行代碼就可以構(gòu)建一個(gè)五臟俱全的Web應(yīng)用了。執(zhí)行代碼,在瀏覽器地址欄里代開鏈接。


使用Java內(nèi)置的Http Server服務(wù)器構(gòu)建Web應(yīng)用


    http://localhost:8001/test

    就能運(yùn)行這個(gè)段程序,輸入的結(jié)果為helloworld

    三、獲得外部數(shù)據(jù)

    那在這個(gè)程序中如何獲取到外部傳遞過(guò)來(lái)的數(shù)據(jù)呢?比如說(shuō)URL上的查詢字符串,POST提交的數(shù)據(jù)等,其實(shí)也很簡(jiǎn)單。上面的代碼清單標(biāo)識(shí)了實(shí)現(xiàn)的方法。注意,要保證上面代碼編譯通過(guò), 需要引入commons-io.jar,此包中提供將InputStream轉(zhuǎn)換成String的方法。


使用Java內(nèi)置的Http Server服務(wù)器構(gòu)建Web應(yīng)用


    四、并發(fā)處理

    com.sun.net.httpserver似乎默認(rèn)不支持同時(shí)處理多個(gè)請(qǐng)求,一旦有并行的請(qǐng)求涌入,需要排隊(duì)等待程序處理,導(dǎo)致Web程序相應(yīng)卡頓。自定義實(shí)現(xiàn)的方法也很簡(jiǎn)單,為每個(gè)請(qǐng)求開一個(gè)新的線程處理即可, 如下代碼清單所示。


使用Java內(nèi)置的Http Server服務(wù)器構(gòu)建Web應(yīng)用


    五、優(yōu)點(diǎn)

    Java內(nèi)置Web服務(wù)器在功能、性能、穩(wěn)定等方面是無(wú)法和tomcat和jetty之類的專業(yè)Web服務(wù)器相比的, 它的優(yōu)點(diǎn)主要是開發(fā)和部署方便簡(jiǎn)單, 把程序代碼編譯成jar包后,丟到裝有jvm的服務(wù)器上, 直接運(yùn)行就可以了,省去了安裝相關(guān)的軟件、依賴, 配置復(fù)雜的環(huán)境等工作量。但是, 在一些各方面要求都比較高的生產(chǎn)環(huán)境下,還是建議使用專門的Web服務(wù)器,畢竟它們久經(jīng)考驗(yàn),能滿足所有功能需求,并且出問(wèn)題的幾率低。

海外服務(wù)器免費(fèi)測(cè)試http://hbjsdrq.com/


USA-IDC為您提供免備案服務(wù)器 0元試用
立即聯(lián)系在線客服,即可申請(qǐng)免費(fèi)產(chǎn)品試用服務(wù)
立即申請(qǐng)