帶你體驗(yàn) Java 新功能:自帶的簡(jiǎn)易Web服務(wù)器
在今年3月下旬的時(shí)候,Java版本已經(jīng)更新到了18。接下來DD計(jì)劃持續(xù)做一個(gè)系列,主要更新從Java 9開始的各種更新內(nèi)容,但我不全部都介紹,主要挑一些有意思的內(nèi)容,以文章和視頻的方式來給大家介紹和學(xué)習(xí)。
如果要第一時(shí)間獲得內(nèi)容更新,對(duì)文章形式感興趣的小伙伴可以關(guān)注我的博客(https://blog.didispace.com)或者公眾號(hào)(程序猿DD),對(duì)視頻形式感興趣的可以關(guān)注我的B站(https://space.bilibili.com/396803537)或視頻號(hào)(程序猿DD)。
簡(jiǎn)單Web服務(wù)器
JEP 408: Simple Web Server,是這次Java 18推出的一個(gè)比較獨(dú)立的全新功能點(diǎn)。我們可以通過命令行工具來啟動(dòng)一個(gè)提供靜態(tài)資源訪問的迷你Web服務(wù)器。
該工具的定位官方文檔中說了一堆:

這里我簡(jiǎn)單總結(jié)幾點(diǎn),方便大家理解:
構(gòu)建目的是應(yīng)用于測(cè)試與教學(xué),不是為了替代Jetty、Nginx等高級(jí)服務(wù)器 不提供身份驗(yàn)證、訪問控制或加密等安全功能 僅支持HTTP/1.1,不支持HTTPS 僅支持GET、HEAD請(qǐng)求 可以通過命令行、Java類啟動(dòng)
下面我們通過一個(gè)構(gòu)建HTML頁面的例子,來嘗試一下jwebserver的功能。
HTML頁面準(zhǔn)備
第一步:創(chuàng)建一個(gè)文件夾,比如就叫jwebserver
第二步:創(chuàng)建一個(gè)html文件,就叫index.html吧
第三步:隨便寫點(diǎn)HTML內(nèi)容,比如下面這樣(懶的敲的話,可以根據(jù)圖片內(nèi)的提示直接獲取本案例需要的所有內(nèi)容):

jwebserver命令啟動(dòng)
打開終端,輸入命令:
$?jwebserver
啟動(dòng)速度很快,可以看到如下輸出:

嘗試訪問一下http://127.0.0.1:8000/,就可以獲得之前準(zhǔn)備的HTML內(nèi)容了。

同時(shí),在終端也看到了請(qǐng)求日志:
127.0.0.1?-?-?[20/4月/2022:00:10:58?+0800]?"GET?/?HTTP/1.1"?200?-
127.0.0.1?-?-?[20/4月/2022:00:10:58?+0800]?"GET?/banner-spring-boot.png?HTTP/1.1"?200?-
關(guān)于jwebserver還有一些可選的參數(shù),具體有這些:
-h?or?-??or?--help
?Prints?the?help?message?and?exits.
-b?addr?or?--bind-address?addr
?Specifies?the?address?to?bind?to.??Default:?127.0.0.1?or?::1?(loopback).??For
?all?interfaces?use?-b?0.0.0.0?or?-b?::.
-d?dir?or?--directory?dir
?Specifies?the?directory?to?serve.??Default:?current?directory.
-o?level?or?--output?level
?Specifies?the?output?format.??none?|?info?|?verbose.??Default:?info.
-p?port?or?--port?port
?Specifies?the?port?to?listen?on.??Default:?8000.
-version?or?--version
?Prints?the?version?information?and?exits.
其中比較有用的是
-b:要綁定的ip地址-p:要啟動(dòng)的訪問端口-d:要提供服務(wù)的目錄-o:控制臺(tái)的輸出級(jí)別
所以一個(gè)較為完整的啟動(dòng)命令是這樣的:
jwebserver?-p?9000?-d?/?-b?127.0.0.1?-o?info
這條命令是一個(gè)以根目錄/啟動(dòng)的服務(wù)器,服務(wù)端口是9000,綁定地址是127.0.0.1,控制臺(tái)輸出級(jí)別使用info。
再嘗試訪問一下:http://127.0.0.1:9000/ ,可以看到根目錄/下的文件夾和文件:

怎么樣?是不是還挺簡(jiǎn)單好用的?好了,今天的分享就到這里!不要走開,關(guān)注我!下一篇更新如何使用Java代碼來啟動(dòng)這個(gè)服務(wù)器!
推薦閱讀
你好,我是程序猿DD,10年開發(fā)老司機(jī)、阿里云MVP、騰訊云TVP、出過書、創(chuàng)過業(yè)、國(guó)企4年互聯(lián)網(wǎng)6年。10年前畢業(yè)加入宇宙行,工資不高、也不算太忙,業(yè)余堅(jiān)持研究技術(shù)和做自己想做的東西。4年后離開國(guó)企,加入永輝互聯(lián)網(wǎng)板塊的創(chuàng)業(yè)團(tuán)隊(duì),從開發(fā)、到架構(gòu)、到合伙人。一路過來,給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅(jiān)持下來,多思考、少抱怨、勤動(dòng)手,就很容易實(shí)現(xiàn)彎道超車!所以,不要問我現(xiàn)在干什么是否來得及。如果你看好一個(gè)事情,一定是堅(jiān)持了才能看到希望,而不是看到希望才去堅(jiān)持。相信我,只要堅(jiān)持下來,你一定比現(xiàn)在更好!如果你還沒什么方向,可以先關(guān)注我,這里會(huì)經(jīng)常分享一些前沿資訊,幫你積累彎道超車的資本。
