轻量级奇迹:Java 18迎来迷你Web服务器的时代

简介: 轻量级奇迹:Java 18迎来迷你Web服务器的时代

JEP 408,是这次 Java 18 推出的一个比较独立的全新功能点。我们可以通过命令行工具来启动一个提供静态资源访问的迷你 Web 服务器。

jwebserver

这里我简单总结几点,方便大家理解:

  • 构建目的是应用于测试与教学,不是为了替代 Jetty、Nginx 等高级服务器
  • 不提供身份验证、访问控制或加密等安全功能
  • 仅支持 HTTP/1.1,不支持 HTTPS
  • 仅支持 GET、HEAD 请求
  • 可以通过命令行、Java 类启动

下面我们通过一个构建 HTML 页面的例子,来尝试一下 jwebserver 的功能。

HTML 页面准备

第一步:创建一个文件夹,比如就叫 jwebserver

第二步:创建一个 html 文件,就叫 index.html

第三步:随便写点 HTML 内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
  <h1>Hello World</h1>
</body>
</html>

jwebserver 命令启动

打开终端,输入命令:

$ jwebserver

尝试访问一下 http://127.0.0.1:8000/ ,就可以获得之前准备的 HTML 内容了,同时,在终端也看到了请求日志。

关于 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 代码启动

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
        var addr = new InetSocketAddress(9000);
        var server = SimpleFileServer.createFileServer(
                addr, Path.of("/"), SimpleFileServer.OutputLevel.INFO);
        server.start();
    }
}


相关文章
|
1天前
|
SQL 缓存 监控
基于Java的Web应用性能优化技术
基于Java的Web应用性能优化技术
16 3
|
5天前
|
前端开发 JavaScript Java
JAVA Web开发入门与实战
本文引导读者入门JAVA Web开发,介绍了Web开发的基本概念,如Servlet、JSP和JavaBean,并详细阐述了JAVA Web开发环境的搭建。文章通过一个在线书店系统的实战项目,展示了从需求分析、数据库设计到前后端开发的全过程,涵盖Servlet处理请求、JSP动态生成页面及表单添加书籍功能。最后,文章提及了进阶技术,如框架使用、前端集成和安全性考虑,鼓励读者深入探索JAVA Web开发的广阔世界。
|
8天前
|
Java API 数据库
利用Java构建高性能的RESTful Web服务
在现代软件开发中,RESTful Web服务已成为一种流行的架构模式,用于构建可扩展、可维护的网络应用。本文将探讨如何使用Java编程语言及其相关框架(如Spring Boot)来构建高性能的RESTful Web服务。我们将不仅仅关注基本的RESTful API设计,还将深入讨论性能优化、安全性、以及服务扩展性等方面的技术细节。通过本文,读者将能够掌握构建高效RESTful Web服务的核心技术和实践。
|
12天前
|
移动开发 前端开发 JavaScript
Java和web前端,IT新人该如何选择?,2024年最新Web前端内存优化面试
Java和web前端,IT新人该如何选择?,2024年最新Web前端内存优化面试
|
12天前
|
Java 数据库连接 数据库
spring--为web(1),富士康java面试题整理
spring--为web(1),富士康java面试题整理
|
12天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
28 2
|
13天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
21 0
|
14天前
|
前端开发 Java 测试技术
Java一分钟之Spring MVC:构建Web应用
【5月更文挑战第15天】Spring MVC是Spring框架的Web应用模块,基于MVC模式实现业务、数据和UI解耦。常见问题包括:配置DispatcherServlet、Controller映射错误、视图解析未设置、Model数据传递遗漏、异常处理未配置、依赖注入缺失和忽视单元测试。解决这些问题可提升代码质量和应用性能。注意配置`web.xml`、`@RequestMapping`、`ViewResolver`、`Model`、`@ExceptionHandler`、`@Autowired`,并编写测试用例。
306 3
|
14天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
23 1
|
14天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
14 0