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

来源:https://www.cnblogs.com/didispace/archive/2022/04/20/16169147.html
-Advertisement-
Play Games

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


在今年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

嘗試訪問一下http://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。

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

file

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

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文轉載自https://segmentfault.com/a/1190000019155991 初始化項目 使用 koa-generator 腳手架工具 npm install koa-generator -g #全局安裝 koa2 demo #創建demo項目 cd demo && npm in ...
  • 目錄 一.簡介 二.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 OpenGL (ES) 學習路 ...
  • 前言 最近公司有個PHP項目需要開發維護,之前一直都是跟著巨硬混的,現在要接觸PHP項目。學習一門新語言之前,先搭建好環境吧,鑒於公司項目是基於php 7.1.33 版本的,所以以下我使用的都是基於這個版本的。 下載安裝包 Nginx 下載 http://nginx.org/en/download. ...
  • JDK動態代理中:抽象類不可以被代理 沒有介面不可以被代理 在 Java 8之前,介面可以有常量變數和抽象方法。我們不能在介面中提供方法實現。如果我們要提供抽象方法和非抽象方法(方法與實現)的組合,那麼我們就得使用抽象類。 在 Java 8 介面引入了一些新功能——預設方法和靜態方法。 Java 9 ...
  • 前端除了用js++css+html,還有沒有其它辦法?其實python也可以 1. 安裝與基本流程 Python學習交流Q群:906715085### 安裝 PyWebIO 和其他的第三方庫一樣使用pip install PyWebIO就行,沒有任何難度,此處不做多講。 但是在正式講解一些常見的操作 ...
  • 什麼叫裝箱 & 拆箱? 將int基本類型轉換為Integer包裝類型的過程叫做裝箱,反之叫拆箱。 首先看一段代碼 public static void main(String[] args) { Integer a = 127, b = 127; Integer c = 128, d= 128; S ...
  • 總體來說註解這一塊的內容不是很多,歸納下來:1.註解的定義。2.註解的保存性策略(@Retention)和java內置註解3.註解的反射主要是跟前面的反射機制相結合,反射章節聽完基本都是相同的方法從類-方法--屬性來獲取。 4.註解的作用還是存在在java的反序列化漏洞,當然在java開發中也會有很... ...
  • 在說神經網路之前,我們討論一下神經元(Neurons),它是神經網路的基本單元。神經元先獲得輸入,然後執行某些數學運算 後,再產生一個輸出。比如一個2輸入神經元的例子: 在這個神經元里,輸入總共經歷了3步數學運算,先將輸入乘以權重(weight): 最後經過激活函數(activation funct ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...