`

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();
		}
	}
}
  • 大小: 47.5 KB
分享到:
评论

相关推荐

    C++实现 Https Server 支持 restful json

    5. 设计和实现RESTful接口,根据HTTP方法和URL路由请求。 6. 使用JSON库解析和生成JSON数据。 这个项目"https-example-master"可能包含了一个完整的示例代码,你可以通过阅读和运行这个项目来进一步理解上述概念。...

    轻量级C++实现的httpserver和httpclient

    本项目聚焦于轻量级的C++实现的HTTP服务器(httpserver)和HTTP客户端(httpclient),利用mongoose库作为基础,为开发者提供了一种简单且高效的方法来添加HTTP功能,而无需依赖如libcurl这样的大型库。 HTTP(超...

    nodejs http-server开启https的证书

    HTTP-Server 是一个轻量级的Node.js模块,用于创建简单的HTTP服务器,可以方便地用来测试和托管静态文件。在某些情况下,如进行安全的Web通信或模拟生产环境,我们可能需要在本地开启HTTPS服务。HTTPS是一种基于TLS/...

    android端HttpServer的实现

    下这个吧 , https://download.csdn.net/download/dami_lixm/11341046 android端HttpServer的实现,PC端通过浏览器访问android端SD卡上文件的功能

    基于boost.asio库的C++http/https web server

    在这个项目中,我们看到一个使用Boost.ASIO实现的Web服务器,它同时支持HTTP和HTTPS协议,这对于创建安全的Web服务至关重要。 首先,我们需要理解Boost.ASIO库的核心概念。ASIO代表Asynchronous Service Input/...

    httpserver简单实现与深入学习

    《httpserver简单实现与深入学习》 在信息技术领域,HTTP服务器是互联网基础设施的重要组成部分,它负责接收HTTP请求并返回HTTP响应。本篇文章将探讨HTTP服务器的简单实现,并深入讲解其工作原理和技术细节。 首先...

    基于mongoose实现Http Server(多线程)

    在提供的`httpserver_multithread`压缩包中,我们可以找到以下文件: - `mongoose.c` 和 `mongoose.h`:这是mongoose库的核心源码,包含了HTTP服务器的实现。 - `main.c` 或类似文件:这是项目的主程序,实现了多...

    HttpServer.zip_http servlet server_httpclient_http服务器_java https

    项目提供了一种独立的、基于Java的HTTP服务器实现,集成了HTTP Servlet、HttpClient和HTTPS功能。这对于学习和理解HTTP服务器的工作原理,以及实践Java Web开发具有很高的价值。同时,它的XML配置方式使得服务器的...

    C# HttpServer 实现

    C# httpserver 的实现,简单的封装,非常实用!更适合初学者的学习、借鉴

    c++ http通讯 基于mongoose 的httpserver和httpclient

    c++ http通讯 基于mongoose 的httpserver和httpclient。Mongoose是一个轻量化的web服务器,通过提供一个web接口给它,它可以嵌入到现有的工程当中。Mongoose的整个代码只有一个c文件和一个h文件,使用起来非常方便。...

    HttpServer 使用例子

    在文件名为`testHttpServer`的压缩包中,可能包含了实际的HttpServer实现代码、测试用例或者其他相关资源,你可以解压后查看具体实现细节,加深对HttpServer使用和工作原理的理解。 总的来说,HttpServer是Web服务...

    linux平台下C语言实现一个简单的httpsever

    在Linux平台上,使用C语言实现一个简单的HTTP服务器是一项基础但重要的技能,这涉及到网络编程、多线程处理以及文件操作等多个领域。以下是一些相关的知识点: 1. **TCP/IP协议与HTTP协议**: - TCP(传输控制协议...

    STM32+W5500_HTTPS实现访问.zip

    通过STM32F103单片机和W5500网络芯片,实现建立HTTPS访问服务器,可以使用网页进行浏览,操作配置参数等。 【实例截图】 【核心代码】 出厂默认程序是“HTTP Server NetBIOS 固定IP协议”组合,并内嵌“梦想版”...

    Spring Boot实现Undertow服务器同时支持HTTP2、HTTPS的方法

    首先,我们需要了解什么是HTTP2和HTTPS,以及它们的优点和缺点,然后我们将学习如何使用Spring Boot实现Undertow服务器同时支持HTTP2和HTTPS。 什么是HTTP2? HTTP2是HTTP协议自1999年HTTP1.1发布后的首个更新,...

    c#使用Socket发送HTTP/HTTPS请求的实现代码

    "C#使用Socket发送HTTP/HTTPS请求的实现代码" C#中使用Socket发送HTTP/HTTPS请求是一种高效的方法,特别是在需要自定义HTTP封包或对HTTP请求进行深入控制时。本文主要介绍了如何使用C#的Socket类来发送HTTP/HTTPS...

    HttpServer案例

    总之,HttpServer是网络编程的重要组成部分,掌握其工作原理和实现方法,对于成为一名优秀的后端开发者至关重要。通过深入学习和实践,你可以更好地理解互联网服务背后的运行机制,从而设计和构建出高效、稳定的Web...

    一个Delphi实现的HttpServer,支持RESTful风格路由

    2. **HTTP协议的理解**:理解HTTP请求和响应的结构,包括状态码、头部、主体等,是实现HTTP服务器的关键。TinyHttpd需要能够解析客户端发送的HTTP请求,并根据请求类型(GET、POST等)和URL路径来处理。 3. **...

    HttpServerDemo.zip

    本示例“HttpServerDemo.zip”提供的是一种在Windows平台上使用C/C++语言,结合libevent库和openssl库实现HTTPS服务器的方法。下面将详细介绍相关知识点。 1. **HTTPS**: HTTPS(HyperText Transfer Protocol ...

    C++ HTTP HTTPS POST GET(curl和winhttp实现).zip

    本资源包“C++ HTTP HTTPS POST GET(curl和winhttp实现).zip”提供了使用C++语言通过curl库和Windows API(WinHTTP)来实现HTTP和HTTPS的POST和GET请求的示例代码和相关库。以下将详细介绍这两个方法及其应用。 ...

    JAVA HTTP 发送 接收 com.sun.net.httpserver包 demo

    在Java中,我们可以使用多种库来实现HTTP通信,其中包括`com.sun.net.httpserver`包,这是一个内置的轻量级HTTP服务器,适用于测试、原型设计以及简单的应用。本示例将详细介绍如何使用`com.sun.net.httpserver`包...

Global site tag (gtag.js) - Google Analytics