Java 18 新特性:简单Web服务器 jwebserver
在今年3月下旬的时候,Java版本已经更新到了18。接下来DD计划持续做一个系列,主要更新从Java 9开始的各种更新内容,但我不全部都介绍,主要挑一些有意思的内容,以文章和视频的方式来给大家介绍和学习。为了第一时间获得内容更新,对文章形式感兴趣的小伙伴可以关注我的博客或者公众号(程序猿DD),对视频形式感兴趣的可以关注我的B站或视频号(程序猿DD)。
简单Web服务器:jwebserver
JEP 408: Simple Web Server,是这次Java 18推出的一个比较独立的全新功能点。我们可以通过命令行工具来启动一个提供静态资源访问的迷你Web服务器。
该工具的定位官方文档中说了一堆:
这里我简单总结几点,方便大家理解:
- 构建目的是应用于测试与教学,不是为了替代Jetty、Nginx等高级服务器
- 不提供身份验证、访问控制或加密等安全功能
- 仅支持HTTP/1.1,不支持HTTPS
- 仅支持GET、HEAD请求
- 可以通过命令行、Java类启动
下面我们通过一个构建HTML页面的例子,来尝试一下jwebserver的功能。
HTML页面准备
第一步:创建一个文件夹,比如就叫jwebserver
第二步:创建一个html文件,就叫index.html
吧
第三步:随便写点HTML内容,比如下面这样(懒的敲的话,可以根据图片内的提示直接获取本案例需要的所有内容):
jwebserver命令启动
打开终端,输入命令:
$ jwebserver
启动速度很快,可以看到如下输出:
尝试访问一下http://127.0.0.1:8000/
,就可以获得之前准备的HTML内容了。
同时,在终端也看到了请求日志:
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/ ,可以看到根目录/
下的文件夹和文件:
怎么样?是不是还挺简单好用的?好了,今天的分享就到这里!如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!
另外,不要走开,关注我!下一篇更新如何使用Java代码来启动这个服务器!
欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源
最新文章
- *HDU 1054 二分图
- #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲
- C++ 用libcurl库进行http通讯网络编程
- oracle系统包—-dbms_output用法
- USACO 3.2 kimbits DP
- (转)Unity3D游戏开发 NGUI之渐变加载到100%的Loading场景进度条
- 功能分解——Android下画分时图与k线图有感
- 《Python核心编程》 第六章 序列 - 课后习题
- php中GD库的一些简单使用
- Jsp内置对象-session
- 利用智能手机(Android)追踪一块磁铁(三)
- CentOS7中将home迁移到/下的命令
CentOS7中将home迁移到/下的命令
- 分析解剖微服务系列(二)-SOA和微服务异同
- (最简单)红米手机5A的USB调试模式在哪里开启的方法
- windows连接oracle数据库
- 1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序
- wzyxidian Scanner 与 Readable 的read()方法
- Ubuntu下pdf和图片互转
- test case VS test scenario
- H5——video百花齐放(浏览器自带的播放器)
热门文章
- uoj310. 【UNR #2】黎明前的巧克力
- Golang 包了解以及程序的执行
- MM32F0140的复位脚nRST复用成普通GPIO PA10功能
- @RequestMapping与@Autowired的作用
- 转载:STL常用容器的底层数据结构实现
- spring 提供了哪些配置方式?
- Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)
- java中为什么把Checked Exception翻译成受检的异常?
- ubantu系统之 lunch时报错:no such file /....../.lunchrc
- 在IntelliJ IDEA配置Tomcat