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

HttpServer和HttpsServer簡單實現

系統 2936 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條評論
主站蜘蛛池模板: 米易县| 和顺县| 南安市| 女性| 乌鲁木齐市| 汕尾市| 建水县| 泸溪县| 社旗县| 册亨县| 如东县| 扶绥县| 高雄市| 利津县| 洞口县| 瑞昌市| 长宁区| 顺义区| 彭山县| 县级市| 贡嘎县| 淳安县| 五常市| 老河口市| 格尔木市| 瑞丽市| 泸西县| 秦皇岛市| 饶平县| 集安市| 南昌市| 区。| 峨边| 五寨县| 唐海县| 临泽县| 萨迦县| 哈尔滨市| 怀安县| 垫江县| 义乌市|