javaSE本身自己就實現(xiàn)了web功能,分別有兩種實現(xiàn)一種是HTTP、HTTPS,實現(xiàn)類分別為HttpServer和HttpsServer但是都要自己實現(xiàn)HttpHandler,而且HTTPS的實現(xiàn)要麻煩一些需要創(chuàng)建證書。創(chuàng)建證書的工具java的bin目錄下有名字叫keytool創(chuàng)建方法入下:
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實現(xiàn)
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實現(xiàn)
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>協(xié)議:%s</p>");
sb.append("<p>提交方式:%s</p>");
sb.append("<p>URL:%s</p>");
sb.append("<p>參數(shù)列表:%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();
}
}
}
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

