- 浏览: 78940 次
文章分类
最新评论
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(); } } }
发表评论
-
使用javamail组件-----邮件发送
2013-08-09 16:35 485public static void sendMessag ... -
利用快速排序算法快速的取出前一千条数据
2013-08-06 15:49 534实现代码如下:原理是利用了快速排序‘分治’思想,判断左边区域 ... -
java的JNI本地调用代码
2013-06-21 11:56 473Jni中C++和Java的参数传递 如何使用JNI的一些基 ... -
如何解决在window下高并发TCP请求端口被占用问题
2013-05-02 09:43 3088当客户端启动到服务器的 TCP/IP 套接字连接时,客户端通 ... -
Maven的简单使用
2013-04-26 11:44 713----------------准备工作---------- ... -
js 压缩工具使用
2013-04-19 11:40 730//测试代码 compiler("F:\\com ... -
解决加载相同的类
2013-04-19 09:38 625URLClassLoader classLoader1 = ... -
将长url转化为短url
2013-02-21 18:05 709public class ShortAddressUtil ... -
如何判断上传的图片是否是正真的图片 防止上传恶意的非图片文件
2013-02-19 17:03 1015final String JPG = "ffd ... -
ChartDirect使用<制作统计图的组件>
2012-11-30 11:39 1541//创建一个由X,Y轴 ... -
获取字符拼音首字母
2012-10-08 13:41 780/** * @date 2010-1-22 * @bu ... -
jetty嵌入式采用xml配置
2012-09-24 09:40 1027Server server = new Server(); ... -
生成验证码图片
2012-08-29 17:29 924Java生成验证码 为了防止用户恶意,或者使用软 ... -
WebService分布式应用实现
2012-08-28 17:30 1164WebService 是一种跨语言的系统间交互标准,对外提供功 ... -
利用MulticastSocket发送广播信息
2012-08-24 11:35 808多播组通过 D 类 IP 地址和标准 UDP 端口号指定。D ... -
插件类的一种加载形式URLClassLoader
2012-08-22 10:11 789URL url = new URL("file ... -
部署RMI应用(服务器与RMI注册表分离方式)
2012-08-20 17:56 2150一般情况下,我们的部署RMI应用的时候是把服务器和RMI注册表 ... -
RMI远程调用
2012-08-03 17:42 769第一步:远程对象接口 WareHose.java pack ... -
使用JNDI获取DataSource对象
2012-08-03 14:24 833Tomcat的conf/context.xml在<Con ... -
获取摘要、加密、解密
2012-08-02 16:57 1224生成SHA或MD5摘要 MessageDigest sha ...
相关推荐
5. 设计和实现RESTful接口,根据HTTP方法和URL路由请求。 6. 使用JSON库解析和生成JSON数据。 这个项目"https-example-master"可能包含了一个完整的示例代码,你可以通过阅读和运行这个项目来进一步理解上述概念。...
本项目聚焦于轻量级的C++实现的HTTP服务器(httpserver)和HTTP客户端(httpclient),利用mongoose库作为基础,为开发者提供了一种简单且高效的方法来添加HTTP功能,而无需依赖如libcurl这样的大型库。 HTTP(超...
HTTP-Server 是一个轻量级的Node.js模块,用于创建简单的HTTP服务器,可以方便地用来测试和托管静态文件。在某些情况下,如进行安全的Web通信或模拟生产环境,我们可能需要在本地开启HTTPS服务。HTTPS是一种基于TLS/...
下这个吧 , https://download.csdn.net/download/dami_lixm/11341046 android端HttpServer的实现,PC端通过浏览器访问android端SD卡上文件的功能
在这个项目中,我们看到一个使用Boost.ASIO实现的Web服务器,它同时支持HTTP和HTTPS协议,这对于创建安全的Web服务至关重要。 首先,我们需要理解Boost.ASIO库的核心概念。ASIO代表Asynchronous Service Input/...
《httpserver简单实现与深入学习》 在信息技术领域,HTTP服务器是互联网基础设施的重要组成部分,它负责接收HTTP请求并返回HTTP响应。本篇文章将探讨HTTP服务器的简单实现,并深入讲解其工作原理和技术细节。 首先...
在提供的`httpserver_multithread`压缩包中,我们可以找到以下文件: - `mongoose.c` 和 `mongoose.h`:这是mongoose库的核心源码,包含了HTTP服务器的实现。 - `main.c` 或类似文件:这是项目的主程序,实现了多...
项目提供了一种独立的、基于Java的HTTP服务器实现,集成了HTTP Servlet、HttpClient和HTTPS功能。这对于学习和理解HTTP服务器的工作原理,以及实践Java Web开发具有很高的价值。同时,它的XML配置方式使得服务器的...
C# httpserver 的实现,简单的封装,非常实用!更适合初学者的学习、借鉴
c++ http通讯 基于mongoose 的httpserver和httpclient。Mongoose是一个轻量化的web服务器,通过提供一个web接口给它,它可以嵌入到现有的工程当中。Mongoose的整个代码只有一个c文件和一个h文件,使用起来非常方便。...
在文件名为`testHttpServer`的压缩包中,可能包含了实际的HttpServer实现代码、测试用例或者其他相关资源,你可以解压后查看具体实现细节,加深对HttpServer使用和工作原理的理解。 总的来说,HttpServer是Web服务...
在Linux平台上,使用C语言实现一个简单的HTTP服务器是一项基础但重要的技能,这涉及到网络编程、多线程处理以及文件操作等多个领域。以下是一些相关的知识点: 1. **TCP/IP协议与HTTP协议**: - TCP(传输控制协议...
通过STM32F103单片机和W5500网络芯片,实现建立HTTPS访问服务器,可以使用网页进行浏览,操作配置参数等。 【实例截图】 【核心代码】 出厂默认程序是“HTTP Server NetBIOS 固定IP协议”组合,并内嵌“梦想版”...
首先,我们需要了解什么是HTTP2和HTTPS,以及它们的优点和缺点,然后我们将学习如何使用Spring Boot实现Undertow服务器同时支持HTTP2和HTTPS。 什么是HTTP2? HTTP2是HTTP协议自1999年HTTP1.1发布后的首个更新,...
"C#使用Socket发送HTTP/HTTPS请求的实现代码" C#中使用Socket发送HTTP/HTTPS请求是一种高效的方法,特别是在需要自定义HTTP封包或对HTTP请求进行深入控制时。本文主要介绍了如何使用C#的Socket类来发送HTTP/HTTPS...
总之,HttpServer是网络编程的重要组成部分,掌握其工作原理和实现方法,对于成为一名优秀的后端开发者至关重要。通过深入学习和实践,你可以更好地理解互联网服务背后的运行机制,从而设计和构建出高效、稳定的Web...
2. **HTTP协议的理解**:理解HTTP请求和响应的结构,包括状态码、头部、主体等,是实现HTTP服务器的关键。TinyHttpd需要能够解析客户端发送的HTTP请求,并根据请求类型(GET、POST等)和URL路径来处理。 3. **...
本示例“HttpServerDemo.zip”提供的是一种在Windows平台上使用C/C++语言,结合libevent库和openssl库实现HTTPS服务器的方法。下面将详细介绍相关知识点。 1. **HTTPS**: HTTPS(HyperText Transfer Protocol ...
本资源包“C++ HTTP HTTPS POST GET(curl和winhttp实现).zip”提供了使用C++语言通过curl库和Windows API(WinHTTP)来实现HTTP和HTTPS的POST和GET请求的示例代码和相关库。以下将详细介绍这两个方法及其应用。 ...
在Java中,我们可以使用多种库来实现HTTP通信,其中包括`com.sun.net.httpserver`包,这是一个内置的轻量级HTTP服务器,适用于测试、原型设计以及简单的应用。本示例将详细介绍如何使用`com.sun.net.httpserver`包...