首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HttpServer跟HttpsServer简单实现

2012-09-09 
HttpServer和HttpsServer简单实现javaSE本身自己就实现了web功能,分别有两种实现一种是HTTP、HTTPS,实现类

HttpServer和HttpsServer简单实现
javaSE本身自己就实现了web功能,分别有两种实现一种是HTTP、HTTPS,实现类分别为HttpServer和HttpsServer但是都要自己实现HttpHandler,而且HTTPS的实现要麻烦一些需要创建证书。创建证书的工具java的bin目录下有名字叫keytool创建方法入下:

import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.InetSocketAddress;import java.security.KeyManagementException;import java.security.KeyStore;import java.security.KeyStoreException;import java.security.NoSuchAlgorithmException;import java.security.UnrecoverableKeyException;import java.security.cert.CertificateException;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 HTTpServer {public static void main(String[] args) throws IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException {//http实现HttpServer http = HttpServer.create(new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 8989),0);http.createContext("/web", new HTTpServer().new MyHandler());http.setExecutor(null);http.start();//https实现HttpsServer https = HttpsServer.create(new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 8787), 0);https.createContext("/web", new HTTpServer().new MyHandler());https.setExecutor(null);KeyStore ks = KeyStore.getInstance("JKS");   //建立证书库    ks.load(new FileInputStream("F:/serverkeys"), "luoxun".toCharArray());  //载入证书    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");  //建立一个密钥管理工厂    kmf.init(ks, "luoxun".toCharArray());  //初始工厂    SSLContext sslContext = SSLContext.getInstance("SSLv3");  //建立证书实体    sslContext.init(kmf.getKeyManagers(), null, null);   //初始化证书   HttpsConfigurator httpsConfigurator = new HttpsConfigurator(sslContext);https.setHttpsConfigurator(httpsConfigurator);https.start();}class MyHandler implements HttpHandler{public void handle(HttpExchange exchange) throws IOException {String protocol = exchange.getProtocol();String method    = exchange.getRequestMethod();String url = exchange.getRequestURI().toString();String query     = exchange.getRequestURI().getQuery();InputStream  request  =exchange.getRequestBody();OutputStream response = exchange.getResponseBody();InetSocketAddress address = exchange.getRemoteAddress();String host = address.getHostName();String port = String.valueOf(address.getPort());StringBuilder sb = new StringBuilder();sb.append("<meta http-equiv='charset' content='text/html;charset=gb2312'>");sb.append("<p>协议:%s</p>");sb.append("<p>提交方式:%s</p>");sb.append("<p>URL:%s</p>");sb.append("<p>参数列表:%s</p>");sb.append("<p>主机名::%s</p>");sb.append("<p>端口号:%s</p>");String content = String.format(sb.toString(), protocol,method,url,query,host,port);byte[] contentBin = content.getBytes();exchange.sendResponseHeaders(200, contentBin.length);response.write(contentBin);response.flush();response.close();}}}

热点排行