Java 18 新特性:簡單Web服務器 jwebserver

  • 2022 年 4 月 20 日
  • 筆記

在今年3月下旬的時候,Java版本已經更新到了18。接下來DD計劃持續做一個系列,主要更新從Java 9開始的各種更新內容,但我不全部都介紹,主要挑一些有意思的內容,以文章和視頻的方式來給大家介紹和學習。為了第一時間獲得內容更新,對文章形式感興趣的小夥伴可以關注我的博客或者公眾號(程序猿DD),對視頻形式感興趣的可以關注我的B站或視頻號(程序猿DD)。

簡單Web服務器:jwebserver

JEP 408: Simple Web Server,是這次Java 18推出的一個比較獨立的全新功能點。我們可以通過命令行工具來啟動一個提供靜態資源訪問的迷你Web服務器。

該工具的定位官方文檔中說了一堆:

file

這裡我簡單總結幾點,方便大家理解:

  • 構建目的是應用於測試與教學,不是為了替代Jetty、Nginx等高級服務器
  • 不提供身份驗證、訪問控制或加密等安全功能
  • 僅支持HTTP/1.1,不支持HTTPS
  • 僅支持GET、HEAD請求
  • 可以通過命令行、Java類啟動

下面我們通過一個構建HTML頁面的例子,來嘗試一下jwebserver的功能。

HTML頁面準備

第一步:創建一個文件夾,比如就叫jwebserver

第二步:創建一個html文件,就叫index.html

第三步:隨便寫點HTML內容,比如下面這樣(懶的敲的話,可以根據圖片內的提示直接獲取本案例需要的所有內容):

file

jwebserver命令啟動

打開終端,輸入命令:

$ jwebserver

啟動速度很快,可以看到如下輸出:

file

嘗試訪問一下//127.0.0.1:8000/,就可以獲得之前準備的HTML內容了。

file

同時,在終端也看到了請求日誌:

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 -

關於jwebserver還有一些可選的參數,具體有這些:

-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:要提供服務的目錄
  • -o:控制台的輸出級別

所以一個較為完整的啟動命令是這樣的:

jwebserver -p 9000 -d / -b 127.0.0.1 -o info

這條命令是一個以根目錄/啟動的服務器,服務端口是9000,綁定地址是127.0.0.1,控制台輸出級別使用info。

再嘗試訪問一下://127.0.0.1:9000/ ,可以看到根目錄/下的文件夾和文件:

file

怎麼樣?是不是還挺簡單好用的?好了,今天的分享就到這裡!如果您學習過程中如遇困難?可以加入我們超高質量的技術交流群,參與交流與討論,更好的學習與進步!

另外,不要走開,關注我!下一篇更新如何使用Java代碼來啟動這個服務器!

歡迎關注我的公眾號:程序猿DD。第一時間了解前沿行業消息、分享深度技術乾貨、獲取優質學習資源