This repository has been archived since February 2021

 




✨ This library is no longer maintained, try simplehttpserver5. ✨




 


Logo

SimpleHttpServer

Java CI CodeQL Deploy Maven Central version license

A simplified implementation of the sun http server for JDK11.
This library simplifies complex operations for both the server, exchange, and handlers.
DocumentationIssues

Setup

Compiled binaries can be found on Maven Central. Maven Central

For projects built locally, compiled binaries can also be found in releases. releases

Features

📋 Complicated tasks made easy

Simplified exchange methods for:

  • Parsing HTTP GET/POST with multipart/form-data support.
  • Output stream writing with #send.
  • Sending gzip compressed responses.
  • Sending files
SimpleHttpHandler handler = new SimpleHttpHandler(){

    @Override
    public void handle(SimpleHttpExchange exchange){
        Map POST = exchange.getPostMap();

        MultipartFormData form = exchange.getMultipartFormData();
        Record record = form.getRecord("record");
        FileRecord file = (FileRecord) form.getRecord("file");

        exchange.send(new File("OK.png"), true);
    }

};

⭐ Extended Features

Out of the box support for:

  • HTTP Cookies
  • HTTP Sessions
  • Multithreaded Servers
SimpleHttpServer server = new SimpleHttpServer(8080);
server.setHttpSessionHandler(new HttpSessionHandler());

HttpHandler handler = new HttpHandler(){

    @Override
    public void handle(HttpExchange exchange){
        HttpSession session = server.getHttpSession(exchange);
        String session_id = session.getSessionID();

        Map<String,String> cookies = exchange.getCookies();

        exchange.close();
    }

};

💻 Simplified Handlers

Easy to use handlers:

  • Redirect Handler
  • Predicate Handler
  • File Handler
  • Server-Sent-Events Handler
  • Temporary Handler
  • Throttled Handler
RedirectHandler redirect = new RedirectHandler("https://github.com/");

FileHandler fileHandler = new FileHandler();
fileHandler.addFile(new File("index.html"));
fileHandler.addDirectory(new File("/site"))

SSEHandler SSE = new SSEHandler();
SSE.push("Server sent events!");

ThrottledHandler throttled = new ThrottledHandler(new HttpHandler(), new ServerExchangeThrottler())

Contributing

Development

Role
Developer & Maintainer
Started
December 2019
Completed
March 2020
Last Updated
February 2021
Description

Java library based on the backend of my capstone project. Simplifies the Java sun http server. Newer version is simplehttpserver5.

Status
Archived

Built with
  • Java
  • Apache Maven
Built using
  • IntelliJ IDEA
  • GitHub
  • GitHub Actions
Built for
  • Java