Have a simple HTTP serverTag(s): Networking
Since Java 1.6, there's a built-in HTTP server included with the JDK.
The HttpServer provides a simple high-level Http server API, which can be used to build embedded HTTP servers.
import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; /* * a simple static http server */ public class SimpleHttpServer { public static void main(String[] args) throws Exception { HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0); server.createContext("/test", new MyHandler()); server.setExecutor(null); // creates a default executor server.start(); } static class MyHandler implements HttpHandler { public void handle(HttpExchange t) throws IOException { byte [] response = "Welcome Real's HowTo test page".getBytes(); t.sendResponseHeaders(200, response.length); OutputStream os = t.getResponseBody(); os.write(response); os.close(); } } }
The next HttpServer provides 2 contexts :
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.Headers; public class SimpleHttpServer { public static void main(String[] args) throws Exception { HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0); server.createContext("/info", new InfoHandler()); server.createContext("/get", new GetHandler()); server.setExecutor(null); // creates a default executor server.start(); } static class InfoHandler implements HttpHandler { public void handle(HttpExchange t) throws IOException { String response = "Use /get to download a PDF"; t.sendResponseHeaders(200, response.length()); OutputStream os = t.getResponseBody(); os.write(response.getBytes()); os.close(); } } static class GetHandler implements HttpHandler { public void handle(HttpExchange t) throws IOException { // add the required response header for a PDF file Headers h = t.getResponseHeaders(); h.add("Content-Type", "application/pdf"); // a PDF (you provide your own!) File file = new File ("c:/temp/doc.pdf"); byte [] bytearray = new byte [(int)file.length()]; FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis); bis.read(bytearray, 0, bytearray.length); // ok, we are ready to send the response. t.sendResponseHeaders(200, file.length()); OutputStream os = t.getResponseBody(); os.write(bytearray,0,bytearray.length); os.close(); } } }
NOTE:
The packages com.sun.* are not part of the supported, public interface and may even disappear in upcoming Java releases.
See these related HowTo :
See also SimpleWeb, an open source http server.