Introduction au serveur Web simple de Java

Blog

MaisonMaison / Blog / Introduction au serveur Web simple de Java

Sep 02, 2023

Introduction au serveur Web simple de Java

Par Matthew Tyson Architecte logiciel, InfoWorld | L'une des nouvelles fonctionnalités les plus pratiques incluses dans la version Java 18 (mars 2022) était le nouveau serveur Web simple, qui facilite la mise en route et la mise en service.

Par Matthieu Tyson

Architecte logiciel, InfoWorld |

L'une des nouvelles fonctionnalités les plus pratiques incluses dans la version Java 18 (mars 2022) était le nouveau serveur Web simple, qui facilite la mise en route et la configuration d'un serveur de fichiers HTTP. Il expose également une API qui étend le package httpserver existant pour créer des cas d'utilisation simples. Le nouveau Simple Web Server est un outil utile que tout développeur Java devrait avoir dans son sac à astuces. Regardons ça!

La nouvelle commande jwebserver de Java simplifie l'exécution d'un serveur Web de base. Il est analogue à l'outil SimpleHTTPServer populaire dans le monde Python.

La première étape consiste à vous assurer que vous exécutez Java 18 ou une version ultérieure. Tapez java --version pour savoir quelle version vous utilisez actuellement. Je recommande d'utiliser SDKMan pour gérer les installations JDK. C’est particulièrement utile pour jongler avec plusieurs versions.

La chose la plus élémentaire que vous puissiez faire avec Java Simple Web Server est de servir le répertoire actuel sur le port 8000. Entrez simplement la commande présentée dans le listing 1.

À partir de là, si vous accédez à votre navigateur et visitez localhost:8000, vous verrez une liste du système de fichiers, comme le montre la figure 1.

Vous devrez peut-être effectuer plusieurs opérations courantes pour affiner Simple Web Server sur la ligne de commande. Par exemple, vous pouvez modifier le port, l'adresse à laquelle se lier (l'interface réseau sur laquelle écouter) et le répertoire à servir.

Dans le listing 2, vous pouvez voir comment écouter sur le port 8080, sur toutes les interfaces et dans le répertoire /foo/bar.

Comme vous pouvez le constater, l'outil de ligne de commande jwebserver permet de servir des fichiers statiques en utilisant la syntaxe la plus simple possible. Ensuite, nous examinerons l'API Simple Web Server.

Le Javadoc Simple Web Server est un bon point de départ pour en savoir plus sur l'API. La classe SimpleFileServer existe dans le package com.sun.net.httpserver. (Ce package héberge également les anciennes API de bas niveau pour la création de serveurs Web. Le package httpserver étend cette fonctionnalité pour des exigences plus simples.) L'outil CLI jwebserver utilise SimpleFileServer pour faire son travail, et nous pouvons également l'utiliser par programme.

La classe SimpleFileServer gère uniquement GET et HTTP/1.1. Nous pouvons cependant faire des choses intéressantes avec. Par exemple, cette introduction à l'utilisation de Simple Web Server suggère un moyen d'utiliser le projet de système de fichiers en mémoire Google Java pour simuler un système de fichiers pour le gestionnaire.

Nous allons utiliser l'idée d'un système de fichiers en mémoire pour modifier le FileHandler dans SimpleFileServer afin de servir réellement un système de fichiers virtuel à partir de la mémoire. Ensuite, nous utiliserons le package httpserver pour gérer un POST afin d'ajouter un faux fichier au faux système de fichiers.

Pour commencer, créons un projet Maven rapide à l'aide de la commande suivante :

Maintenant, CD dans le nouveau répertoire /jsws.

Définissez les versions du compilateur et de la source sur 18 dans le pom.xml, comme décrit ici.

Ensuite, ajoutez Google Jimfs aux dépendances, comme indiqué dans le listing 3.

Maintenant, nous pouvons modifier le fichier src/main/java/App.java pour servir un faux système de fichiers. Vous pouvez voir le code pour ce faire dans le listing 4.

L'idée du listing 4 est de simuler l'API standard du système de fichiers local à l'aide de la bibliothèque jimfs open source de Google, qui implémente l'API java.nio.file mais fait tout en mémoire, comme un système de fichiers virtuel. À l'aide de la bibliothèque, vous pouvez définir vos propres chemins de répertoire et fichiers par programme. Nous créons donc notre propre structure de répertoires virtuels et la transmettons à SimpleFileServer en tant que gestionnaire de fichiers.

Nous configurons la classe SimpleFileServer par programme :

Cela accepte l’adresse Internet à laquelle se lier, tout comme nous l’avons vu sur la ligne de commande. Dans ce cas, nous transmettons l'interface non spécifiée et le port 8080. Après cela vient la racine du système de fichiers. Pour cet exemple, nous allons lui donner l'objet Path créé par notre méthode createDirectoryHierarchy().