Introduzione al server Web semplice di Java

Blog

CasaCasa / Blog / Introduzione al server Web semplice di Java

Sep 02, 2023

Introduzione al server Web semplice di Java

Di Matthew Tyson Software Architect, InfoWorld | Una delle nuove funzionalità più utili incluse nella versione Java 18 (marzo 2022) è stato il nuovo Simple Web Server, che semplifica l'avvio e

Di Matthew Tyson

Architetto software, InfoWorld |

Una delle nuove funzionalità più utili incluse nella versione Java 18 (marzo 2022) è stata il nuovo Simple Web Server, che semplifica l'avvio e la configurazione di un file server HTTP. Espone inoltre un'API che estende il pacchetto httpserver esistente per creare semplici casi d'uso. Il nuovo Simple Web Server è uno strumento utile che ogni sviluppatore Java dovrebbe avere nella propria borsa dei trucchi. Controlliamolo!

Il nuovo comando jwebserver di Java semplifica l'esecuzione di un server Web di base. È analogo al popolare strumento SimpleHTTPServer nel mondo Python.

Il primo passaggio è assicurarsi di utilizzare Java 18 o una versione successiva. Digita java --version per scoprire quale versione stai attualmente utilizzando. Consiglio di utilizzare SDKMan per gestire le installazioni JDK. È particolarmente utile per destreggiarsi tra più versioni.

La cosa più semplice che puoi fare con Java Simple Web Server è servire la directory corrente sulla porta 8000. Basta inserire il comando mostrato nel Listato 1.

Da lì, se accedi al browser e visiti localhost:8000, vedrai un elenco del file system, come mostrato nella Figura 1.

Esistono diverse operazioni comuni che potresti dover eseguire per ottimizzare Simple Web Server sulla riga di comando. Ad esempio, puoi modificare la porta, l'indirizzo a cui collegarti (l'interfaccia di rete su cui ascoltare) e la directory da servire.

Nel Listato 2 puoi vedere come ascoltare sulla porta 8080, su tutte le interfacce e nella directory /foo/bar.

Come puoi vedere, lo strumento da riga di comando jwebserver consente di servire file statici utilizzando la sintassi più semplice possibile. Successivamente, daremo un'occhiata all'API Simple Web Server.

Il Javadoc Simple Web Server è un buon punto di partenza per conoscere l'API. La classe SimpleFileServer esiste nel pacchetto com.sun.net.httpserver. (Questo pacchetto ospita anche le API più vecchie e di basso livello per la creazione di server Web. Il pacchetto httpserver estende tale funzionalità per requisiti più semplici.) Lo strumento CLI jwebserver utilizza SimpleFileServer per svolgere il suo lavoro e possiamo anche utilizzarlo a livello di programmazione.

La classe SimpleFileServer gestisce solo GET e HTTP/1.1. Possiamo fare alcune cose interessanti con esso, però. Ad esempio, questa introduzione all'utilizzo di Simple Web Server suggerisce un modo per utilizzare il progetto del file system in memoria Java di Google per falsificare un file system per il gestore.

Utilizzeremo l'idea di un file system in memoria per modificare il FileHandler in SimpleFileServer per servire effettivamente un file system virtuale dalla memoria. Quindi utilizzeremo il pacchetto httpserver per gestire un POST per aggiungere un file faux al file system faux.

Per iniziare, creiamo un rapido progetto Maven utilizzando il seguente comando:

Ora, inserisci il CD nella nuova directory /jsws.

Imposta le versioni del compilatore e del sorgente su 18 nel pom.xml, come descritto qui.

Successivamente, aggiungi Google jimfs alle dipendenze, come mostrato nel Listato 3.

Ora possiamo modificare il file src/main/java/App.java per servire un file system falso. Puoi vedere il codice per farlo nel Listato 4.

L'idea nel Listato 4 è quella di simulare l'API standard del file system locale utilizzando la libreria jimfs open source di Google, che implementa l'API java.nio.file ma fa tutto in memoria, come un file system virtuale. Utilizzando la libreria, è possibile definire i propri percorsi di directory e file a livello di codice. Quindi, creiamo la nostra struttura di directory virtuale e la passiamo a SimpleFileServer come gestore di file.

Configuriamo la classe SimpleFileServer a livello di codice:

Questo accetta l'indirizzo Internet a cui collegarsi, proprio come abbiamo visto dalla riga di comando. In questo caso passiamo all'interfaccia non specificata e alla porta 8080. Successivamente arriva la radice del file system. Per questo esempio, gli forniremo l'oggetto Path creato dal nostro metodo createDirectoryHierarchy().