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 {  
 
-         
 
-         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();  
 
-         
 
-         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();  
 
-         }  
 
-     }  
 
- }