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
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


