日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

HttpServer和HttpsServer簡單實現

系統 2911 0
javaSE本身自己就實現了web功能,分別有兩種實現一種是HTTP、HTTPS,實現類分別為HttpServer和HttpsServer但是都要自己實現HttpHandler,而且HTTPS的實現要麻煩一些需要創建證書。創建證書的工具java的bin目錄下有名字叫keytool創建方法入下:
HttpServer和HttpsServer簡單實現
    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();
		}
	}
}

  

HttpServer和HttpsServer簡單實現


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 六枝特区| 宝鸡市| 香格里拉县| 道孚县| 盘锦市| 桐柏县| 濉溪县| 贵港市| 汝城县| 卓资县| 神木县| 北流市| 泾川县| 遂平县| 时尚| 南丰县| 湾仔区| 曲阜市| 山东| 无为县| 黄平县| 巍山| 同江市| 望奎县| 中江县| 铜川市| 涿州市| 阳高县| 塔河县| 五原县| 北川| 化隆| 鄂托克前旗| 兴城市| 鄂伦春自治旗| 维西| 永仁县| 常山县| 广灵县| 宜城市| 隆德县|