java如何创建一个简单的HttpServer呢?
下文笔者讲述HttpServer的方法及示例分享
学习完本篇之后,你将掌握创建一个简单的HttpServer的方法
学习完本篇之后,你将掌握创建一个简单的HttpServer的方法
借助HttpServer对象 使用HttpServer对象的bind方法和createContext方法 创建端口和上下文目录 使用httpServer的start方法 即可启动一个httpServer例:创建一个简单的HttpServer示例
package com.java265; import java.io.IOException; import java.net.InetSocketAddress; import java.net.URI; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; public class TestHttpServer { public static void main(String[] args) { try { HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);//监听8080端口,第二个参数小于等于0使用默认值,表示可同时接受请求的个数 // HttpServer server = HttpServer.create(); // server.bind(new InetSocketAddress(8080), 0); server.createContext("/testContext", new StartHandler()); // HttpContext context = server.createContext("/testContext");//需要后面设置handler // context.setHandler(new StartHandler()); // server.removeContext(context);//移除context // server.removeContext("/testContext");//移除context server.start(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } server.stop(1000);//停止服务,所有handler处理完或者超时(依据最先触发者停止),关闭所有连接,并且server不能被重新使用 } catch (IOException e) { e.printStackTrace(); } } } class StartHandler implements HttpHandler { @Override public void handle(HttpExchange exchange) throws IOException { System.out.println("getProtocol:" + exchange.getProtocol());//协议版本 System.out.println("getRequestMethod:" + exchange.getRequestMethod());//请求方法GET、POST System.out.println("getResponseCode:" + exchange.getResponseCode());//返回已经设置的响应code,还没设置返回-1 HttpContext context = exchange.getHttpContext(); System.out.println("context.getPath:" + context.getPath()); System.out.println("context.toString:" + context.toString()); System.out.println("context.getAttributes:" + context.getAttributes()); System.out.println("context.getAuthenticator:" + context.getAuthenticator()); System.out.println("context.getFilters:" + context.getFilters()); System.out.println("context.getHandler:" + context.getHandler()); System.out.println("context.getServer:" + context.getServer()); System.out.println("getLocalAddress:" + exchange.getLocalAddress()); System.out.println("getPrincipal:" + exchange.getPrincipal()); System.out.println("getRemoteAddress:" + exchange.getRemoteAddress()); URI uri = exchange.getRequestURI(); System.out.println("getRequestURI:" + exchange.getRequestURI()); System.out.println("uri.getAuthority:" + uri.getAuthority()); System.out.println("uri.getFragment:" + uri.getFragment()); System.out.println("uri.getHost:" + uri.getHost()); System.out.println("uri.getPath:" + uri.getPath()); System.out.println("uri.getQuery:" + uri.getQuery());//url里get请求的参数 System.out.println("uri.getRawAuthority:" + uri.getRawAuthority()); System.out.println("uri.getRawFragment:" + uri.getRawFragment()); System.out.println("uri.getRawPath:" + uri.getRawPath()); System.out.println("uri.getRawQuery:" + uri.getRawQuery()); System.out.println("uri.getRawSchemeSpecificPart:" + uri.getRawSchemeSpecificPart()); System.out.println("uri.getRawUserInfo:" + uri.getRawUserInfo()); System.out.println("uri.getScheme:" + uri.getScheme()); System.out.println("uri.getSchemeSpecificPart:" + uri.getSchemeSpecificPart()); System.out.println("uri.getUserInfo:" + uri.getUserInfo()); System.out.println("uri.getPort:" + uri.getPort()); System.out.println("getRequestBody:" + exchange.getRequestBody()); System.out.println("getResponseBody:" + exchange.getResponseBody()); System.out.println("getResponseHeaders:" + exchange.getResponseHeaders()); exchange.sendResponseHeaders(200, 0);//len>0:响应体必须发送指定长度;len=0:可发送任意长度,关闭OutputStream即可停止;len=-1:不会发响应体; System.out.println("ResponseCode:" + exchange.getResponseCode()); exchange.close();//先关闭打开的InputStream,再关闭打开的OutputStream } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。