Creare un semplice server HTTP con Java?


Qual è il modo più semplice per creare un semplice server HTTP con Java? Ci sono librerie in commons per facilitare questo? Ho solo bisogno di rispondere a GET/POST e non posso usare un server di applicazioni.

Qual è il modo più semplice per farlo?

Author: Stefan Kendall, 2010-04-26

13 answers

Utilizzare Pontile . Ecco l'esempio ufficiale per incorporare Jetty . (Ecco un tutorial obsoleto .)

Jetty è piuttosto leggero, ma fornisce un contenitore servlet, che potrebbe contraddire il tuo requisito contro l'utilizzo di un "server di applicazioni".

È possibile incorporare il server Jetty nell'applicazione. Jetty consente sia incorporato o servlet opzioni contenitore.

Ecco un altro rapido guida introduttiva insieme al codice sorgente .

 46
Author: Kris, 2021-01-08 14:45:29

Ecco come andrei su questo:

  1. Avvia un ascolto ServerSocket (probabilmente sulla porta 80).
  2. Una volta ricevuta una richiesta di connessione, accetta e passa a un altro thread/processo (questo lascia il tuo ServerSocket disponibile per continuare ad ascoltare e accettare altre connessioni).
  3. Analizza il testo della richiesta (in particolare, le intestazioni in cui vedrai se si tratta di un GET o POST e i parametri passati.
  4. Rispondi con le tue intestazioni (Content-Type, ecc.) e l'HTML.

Trovo è utile usare Firebug (in Firefox) per vedere esempi di intestazioni. Questo è ciò che vuoi emulare.

Prova questo link: - Server multithread in Java

 33
Author: Philippe Signoret, 2016-04-29 22:14:16

Il più semplice è Semplice c'è un tutorial, nessun WEB-INF non Servlet API senza dipendenze. Solo un semplice server HTTP leggero in un unico BARATTOLO.

 21
Author: ng., 2010-04-26 22:27:07

Se si utilizza Sun JDK è possibile utilizzare questa libreria integrata
Guardate questo sito su come utilizzare.

Se non ci sono diversi server HTTP Open Source qui che puoi incorporare nel tuo software.

 8
Author: Romain Hippeau, 2017-05-23 12:34:31

Java 6 ha un server http incorporato predefinito.

Controlla il thread qui

A proposito, se si prevede di avere un servizio web rest, ecco un semplice esempio usando jersey.

 4
Author: Titu, 2017-05-23 11:47:05

Sono sorpreso che questo esempio non sia qui:

Http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/ElementalHttpServer.java

MODIFICA >> Il link qui sopra non è raggiungibile. Ecco un estratto dall'esempio POST seguito dal link agli esempi HTTP.

 if (!conn.isOpen()) {
        Socket socket = new Socket(host.getHostName(), host.getPort());
        conn.bind(socket);
    }
    BasicHttpEntityEnclosingRequest request = new
    BasicHttpEntityEnclosingRequest("POST",
    "/servlets‐examples/servlet/RequestInfoExample");
    request.setEntity(requestBodies[i]);
    System.out.println(">> Request URI: " + request.getRequestLine().getUri());
    httpexecutor.preProcess(request, httpproc, coreContext);
    HttpResponse response = httpexecutor.execute(request, conn, coreContext);
    httpexecutor.postProcess(response, httpproc, coreContext);
    System.out.println("<< Response: " + response.getStatusLine());
    System.out.println(EntityUtils.toString(response.getEntity()));
    System.out.println("==============");
    if (!connStrategy.keepAlive(response, coreContext)) {
    conn.close();
    } else {
    System.out.println("Connection kept alive...");
    }

Http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/

 4
Author: nikdeapen, 2015-12-11 12:00:36

Ho scritto un tutorial che spiega come scrivere un semplice server HTTP un po ' di tempo fa in Java. Spiega cosa sta facendo il codice e perché il server è scritto in questo modo mentre il tutorial progredisce. Potrebbe essere utile http://kcd.sytes.net/articles/simple_web_server.php

 3
Author: Charles Dobson, 2012-03-19 20:59:09

Incorporare Tomcat è relativamente indolore come tali cose vanno. Ecco un buon riferimento StackOverflow su di esso.

 1
Author: Dan, 2017-05-23 12:17:59

Ho implementato un collegamento

NB per l'elaborazione di json, ho usato jackson. Puoi anche rimuoverlo, se hai bisogno di

 1
Author: akash, 2019-12-05 13:15:50

Jetty è un ottimo modo per incorporare facilmente un server HTTP. Supporta il proprio modo semplice per collegare i gestori ed è un server di app J2EE completo se hai bisogno di più funzionalità.

 1
Author: maerics, 2021-01-06 08:35:18

Un contenitore servlet è sicuramente la strada da percorrere. Se Tomcat o Jetty sono troppo pesanti per te, considera Winstone o TTiny .

 0
Author: Michael Borgwardt, 2010-04-26 22:22:32

Undertow è un leggero non-blocking embedded web server che si può ottenere installato e funzionante molto rapidamente.

public static void main(String[] args) {
Undertow.builder()
        .addHttpListener(8080, "localhost")
        .setHandler((exchange) -> exchange.getResponseSender().send("hello world"))
        .build().start();
}
 0
Author: Bill O'Neil, 2019-03-19 00:37:25

Ho appena aggiunto un repository pubblico con un server pronto per l'esecuzione utilizzando Jetty e JDBC per avviare il progetto.

Estrai da github qui: https://github.com/waf04/WAF-Simple-JAVA-HTTP-MYSQL-Server.git

 -1
Author: William Falcon, 2013-10-15 02:21:18