java如何创建一个简单的HttpServer呢?

戚薇 Java经验 发布时间:2023-06-23 23:16:42 阅读数:8065 1
下文笔者讲述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
	}
	
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202306/16875334516872.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者