- 浏览: 76863 次
文章分类
最新评论
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 457public static void sendMessag ... -
利用快速排序算法快速的取出前一千条数据
2013-08-06 15:49 514实现代码如下:原理是利用了快速排序‘分治’思想,判断左边区域 ... -
java的JNI本地调用代码
2013-06-21 11:56 454Jni中C++和Java的参数传递 如何使用JNI的一些基 ... -
如何解决在window下高并发TCP请求端口被占用问题
2013-05-02 09:43 3029当客户端启动到服务器的 TCP/IP 套接字连接时,客户端通 ... -
Maven的简单使用
2013-04-26 11:44 686----------------准备工作---------- ... -
js 压缩工具使用
2013-04-19 11:40 705//测试代码 compiler("F:\\com ... -
解决加载相同的类
2013-04-19 09:38 605URLClassLoader classLoader1 = ... -
将长url转化为短url
2013-02-21 18:05 683public class ShortAddressUtil ... -
如何判断上传的图片是否是正真的图片 防止上传恶意的非图片文件
2013-02-19 17:03 991final String JPG = "ffd ... -
ChartDirect使用<制作统计图的组件>
2012-11-30 11:39 1523//创建一个由X,Y轴 ... -
获取字符拼音首字母
2012-10-08 13:41 760/** * @date 2010-1-22 * @bu ... -
jetty嵌入式采用xml配置
2012-09-24 09:40 1004Server server = new Server(); ... -
生成验证码图片
2012-08-29 17:29 896Java生成验证码 为了防止用户恶意,或者使用软 ... -
WebService分布式应用实现
2012-08-28 17:30 1109WebService 是一种跨语言的系统间交互标准,对外提供功 ... -
利用MulticastSocket发送广播信息
2012-08-24 11:35 788多播组通过 D 类 IP 地址和标准 UDP 端口号指定。D ... -
插件类的一种加载形式URLClassLoader
2012-08-22 10:11 764URL url = new URL("file ... -
部署RMI应用(服务器与RMI注册表分离方式)
2012-08-20 17:56 2128一般情况下,我们的部署RMI应用的时候是把服务器和RMI注册表 ... -
RMI远程调用
2012-08-03 17:42 754第一步:远程对象接口 WareHose.java pack ... -
使用JNDI获取DataSource对象
2012-08-03 14:24 806Tomcat的conf/context.xml在<Con ... -
获取摘要、加密、解密
2012-08-02 16:57 1192生成SHA或MD5摘要 MessageDigest sha ...
相关推荐
https证书文件,nodejs http-server开启https的证书,可以直接在本地启动https的协议,方便部署和使用。
该c++ web server基于boost.asio库编写,同时支持http和https协议。该工程基于vs2015编译通过,相关配置和说明见readme.txt
下这个吧 , https://download.csdn.net/download/dami_lixm/11341046 android端HttpServer的实现,PC端通过浏览器访问android端SD卡上文件的功能
linux 平台下实现一个简单httpserver 具体可以参考个人博客。
C# httpserver 的实现,简单的封装,非常实用!更适合初学者的学习、借鉴
通过STM32F103单片机和W5500网络芯片,实现建立HTTPS访问服务器,可以使用网页进行浏览,操作配置参数等。 【实例截图】 【核心代码】 出厂默认程序是“HTTP Server NetBIOS 固定IP协议”组合,并内嵌“梦想版”...
NULL 博文链接:https://xylong.iteye.com/blog/1908187
vc web server 源码,支持http和https。
Windows c/c++基于libevent openssl实现的https Server
C++ HTTP HTTPS POST GET(curl和winhttp实现) 里面包含例程和相关lib 调试可用。
全网唯一的基于java 写的完整的httpservlet 实现,可通过xml 灵活配置
HTTP server的源代码,集成了HTTP server和SSL server,方便移植和学习之用。好东西哦
下面列举一个配置同时支持Http和Https的功能。 需要注意的是:既然选择使用Https,就是为了保证通信安全,那么就没必要再用Http进行通信了。在URL中还支持Http的方式,主要是为了用户不知道网站支持Https,还是使用...
一个HTTP 服务器的源码... 简单易懂 共享给大家
nodejs 创建的http server与https server,用于调式https双向认证使用
1.全网唯一的Java 实现根据http请求协议源码的独立HttpServer 服务,无需首先web、webservice 等问题,自由注册。自由访问; 2.灵活的可配置的xml 文件 3.使用只需要一个jar 包 和一个xml 引入即可,支持多端口、多...
1.在stm32使用lwip协议栈实现http client,完成向客户端定时发送数据 2.实现DNS域名解析操作 3.实现通过DHCP获取DNS服务器地址,可以通过此地址进行域名解析 4.使用MDK5.20编译
HttpServer学习的最好的东西了