package com.what21.jdk16.demo04;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Executors;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class HttpServerDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
InetSocketAddress addr = new InetSocketAddress(8080);
HttpServer server = HttpServer.create(addr, 0);
server.createContext("/", new MyHandler());
server.setExecutor(Executors.newCachedThreadPool());
server.start();
System.out.println("Server is listening on port 8080");
}
}
class MyHandler implements HttpHandler {
/**
* handle
*/
public void handle(HttpExchange exchange) throws IOException {
String requestMethod = exchange.getRequestMethod();
if (requestMethod.equalsIgnoreCase("GET")) {
Headers responseHeaders = exchange.getResponseHeaders();
responseHeaders.set("Content-Type", "text/plain");
exchange.sendResponseHeaders(200, 0);
OutputStream responseBody = exchange.getResponseBody();
Headers requestHeaders = exchange.getRequestHeaders();
Set keySet = requestHeaders.keySet();
Iterator iter = keySet.iterator();
while (iter.hasNext()) {
String key = iter.next();
List values = requestHeaders.get(key);
String s = key + " = " + values.toString() + "\n";
responseBody.write(s.getBytes());
}
responseBody.close();
}
}
}
package com.what21.jdk16.demo04;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpsConfigurator;
import com.sun.net.httpserver.HttpsServer;
public class MyHttpsServer {
static class MyHttpsHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
InputStream is = t.getRequestBody();
String response = "come on baby";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
/**
* @param args
*/
public static void main(String[] args) {
try {
//实现HTTP SERVER ,设置HttpServer的端口为80
HttpServer server = HttpServer.create(new InetSocketAddress(8888),0);
// 用MyHandler类内处理到/的请求
server.createContext("/index", new MyHttpsHandler());
// creates a default executor
server.setExecutor(null);
server.start();
//=============实现HTTPS Server=============
HttpsServer hss = HttpsServer.create(new InetSocketAddress(443),0);
//建立证书库
KeyStore ks = KeyStore.getInstance("JKS");
//载入证书
ks.load(new FileInputStream("证书名"), "密码".toCharArray());
//建立一个密钥管理工厂
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
//初始工厂
kmf.init(ks, "密码".toCharArray());
//建立证书实体
SSLContext sslContext = SSLContext.getInstance("SSLv3");
//初始化证书
sslContext.init(kmf.getKeyManagers(), null, null);
//https配置
HttpsConfigurator conf = new HttpsConfigurator(sslContext);
hss.setHttpsConfigurator(conf);
hss.setExecutor(null);
hss.createContext("/", new MyHttpsHandler());
hss.start();
} catch (Exception e){
e.printStackTrace();
}
}
}