Java 创建简单HTTP服务器

Java 标准版附带了一个HTTP 服务器API,可以用它来创建一个简单、能工作的嵌入式
HTTP 服务器。下面的程序不需要任何外部依赖。它监听8000 端口,对进来的请求返回一
个成功的HTTP 响应(200),响应内容为如下的JSON 对象:
{"testResponse":"Hello World"}
这里需要一个Java 源文件,包含一个定义了main 方法的类。在main 方法中,创建了一个
服务器实例,该服务器实例根据URL 将请求委托给一个静态处理器(这里被定义为一个
静态内部类):



import java.io.*;
import com.sun.net.httpserver.*;
import java.net.InetSocketAddress;

public class HttpJsonServer {
	public static void main(String[] args) throws Exception {
		HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
		server.createContext("/", new MyHandler());
		server.createContext("/test", new MyHandler2());
		server.setExecutor(null);
		System.out.println("Starting server on port: 8000");
		server.start();
	}

	static class MyHandler implements HttpHandler {
		public void handle(HttpExchange t) throws IOException {
			String response = "{\"testResponse\":\"Hello World\"}";
			t.getResponseHeaders().set("Content-Type", "application/json");
			t.sendResponseHeaders(200, response.length());
			OutputStream os = t.getResponseBody();
			os.write(response.getBytes());
			os.close();
		}
	}

	static class MyHandler2 implements HttpHandler {
		public void handle(HttpExchange t) throws IOException {
			String response = "{\"testResponse\":\"Hello World2\"}";
			t.getResponseHeaders().set("Content-Type", "application/json");
			t.sendResponseHeaders(200, response.length());
			OutputStream os = t.getResponseBody();
			os.write(response.getBytes());
			os.close();
		}
	}
}


这个例子非常简单,没有外部依赖,也不需要构建脚本,只需要编译运行即可:
$ javac HttpJsonServer.java
$ java HttpJsonServer
Starting server on port: 8000
可以在另外一个命令行会话里使用Curl 访问服务器:
$ curl -i http://localhost:8000
HTTP/1.1 200 OK
Content-type: application/json
Content-length: 30
Date: Sun, 09 Jun 2013 01:15:15 GMT
{"testResponse":"Hello World"}
Java Web API服务器 | 81
显然这不是一个功能完备的例子,但是它表明使用Java 开发一个能工作的HTTP 服务器是
一个相对简单可实现的目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值