这里的HttpServer,并不是哪里专门下载的类库了,而是在JDK1.6中自带的,在com.sun.net.httpserver包中,提供了简单的较高层次意义上的Http ServerAPI,可以构建内置的HTTP Server,支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现。程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给HttpHandler实现类的回调方法.
(摘过来的,也是官方的描述说明)
通过下面使用一个简单的例子,就可以看到怎么使用它们了,详细的功能可以查看API文档。访问localhost:8086/ 和 localhost:8086/test看看
看这些的时候有个小插曲,当时看不懂既然有了createContext ( )方法中的实现HttpHandler接口的类来处理请求,为什么又要有个setExecutor来设置管理线程的Executor,而且还要在start()方法之前;这时自己查看文档的时候看到createContext(),start()方法都是抽象方法(当然HttpServer也是抽象类),是怎么调用的呢?在网上找到其源码时,才发现,HttpServer的创建首先是通过create(InetSocketAddress addr,
int backlog)这个静态方法创建,这里面是通过 HttpServerProvider(它也是抽象类,其子类 sun.net.httpserver.DefaultHttpServerProvider中的createHttpServer)来创建的,其后在具体创建过程中则是new了一个 HttpServerImpl类的实例(这个只是一个包装,具体实现是ServerImpl类来完成最后的HttpServer对象的生成);查看ServerImpl的实现,才知道setExecutor设置的是处理TCP链接请求的线程,而createContext
里设置的是针对具体的请求进行处理的回调方法,而且可以通过设置调用多次createContext(),设置不同路径采用不同或相同的处理方法。为什么绕了这么多,采用了什么设计模式,我是还没到那个高度,期待有人能给留言解说下;或者自己以后慢慢的体会吧!
后面再把这些东西合起来,想个大概的应用场景。
参考
实现Http Server的三种方法http://lpn520.iteye.com/blog/781273
分享到:
相关推荐
【JAVA初级教程——Web系统开发技术与方法】涵盖了Web编程的多个核心领域,旨在帮助初学者建立起完整的Web系统开发知识体系。以下是对每个知识点的详细解释: 1. **Web编程基本知识**: - **HTML**是超文本标记...
Java作业2——影院在线订票系统是一个基于JSP和MySQL技术构建的简易应用程序,主要用于学习和实践Java Web开发。在这个项目中,学生被要求设计一个能够实现用户在线选座、购票以及管理数据库的系统,虽然它可能没有...
"ImageServer.java"可能是处理图像流的核心类,它可能包含了从远程摄像头获取图像、压缩图像以减少传输负担、以及将图像数据转化为适合在Android设备上显示的格式等功能。Android提供了Bitmap类用于图像处理,...
操作系统实验WebServer是一个重要的实践项目,它涉及到计算机科学的核心领域——操作系统,以及网络服务的关键组件——Web服务器。在这个实验中,我们将深入理解操作系统如何管理资源,特别是如何通过线程池来优化...
Apache Tomcat是基于Java的开源Web服务器,它不仅能够运行Java Servlet,还能部署和执行Java Server Pages (JSP)技术,以及支持Java Web应用程序所需的其他标准协议。Tomcat的工作原理涉及到多个组件,包括连接器...
【标题】:“bbs.rar_javascriput”——基于JavaScript和Servlet的论坛系统实现 在Web开发领域,JavaScript和Servlet是两种常见的技术,分别负责客户端和服务器端的交互。这个名为“bbs.rar_javascriput”的项目,...
4. **第4章 客户端动态脚本JavaScript**:JavaScript是实现网页动态效果的关键,本章讲解了JavaScript的基础语法、DOM操作、事件处理,以及Ajax(异步JavaScript和XML)的初步概念,为学习Web2.0技术铺平道路。...
通过以上内容的详细介绍,我们不仅了解了RIA的基本概念及其优势,还深入探讨了当前主流的RIA技术以及ArcGIS Server REST接口的相关知识。同时,也对ArcGIS Flex API有了初步的认识,包括其基本概念、地图功能组件及...
2. **HTTP协议**:作为Web应用,它需要理解和处理HTTP请求和响应,包括GET和POST方法,用于数据检索和提交。 3. **数据库交互**:股票应用通常需要存储和检索大量实时或历史数据,因此可能使用了MySQL、Oracle或...
《在线商店系统——Java技术深度剖析》 "OnlineStore"项目是一个典型的基于Java技术构建的在线商店应用。在深入探讨这个项目之前,我们先要理解Java作为一种强大的编程语言,在Web开发中的核心地位。Java以其“一次...