atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener
atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener
1. 自定义web服务器的实现方案,基于原始socket vs 基于tcpListener vs 基于HttpListener1
1. 自定义web服务器的实现方案,基于原始socket vs 基于tcpListener vs 基于HttpListener
前面两篇文章分别介绍了基于原始socket的web服务器和基于tcpListener的web服务器,本篇文章将继续介绍另外一种基于HttpListener的。
HttpListener进一步的简化了Http协议的监听,仅需通过字符串的方法提供监听的地址和端口号以及虚拟路径,就可以开始监听工作了。
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
2. download
Downloads |
||||||
stable-9: |
Stable (Java 8+) 9.3.7.v20160115 |
|||||
9.3.7.v20160115: |
Release (Java 8+) |
|||||
9.3.6.v20151106: |
Release (Java 8+) |
|||||
9.2.15.v20160210: |
Release (Java 7+) |
|||||
9.2.14.v20151106: |
Release (Java 7+) |
|||||
8.1.17.v20150415: |
Release (EOL) |
|||||
7.6.17.v20150415: |
Release (EOL) |
3. Lib
2016/02/27 20:05 <DIR> .
2016/02/27 20:05 <DIR> ..
2016/02/27 20:05 0 d.txt
2016/02/27 19:58 80,831 jetty-annotations-9.3.7.v20160115.jar
2016/02/27 19:53 136,427 jetty-http-9.3.7.v20160115.jar
2016/02/27 19:53 105,276 jetty-io-9.3.7.v20160115.jar
2016/02/27 19:58 483,159 jetty-server-9.3.7.v20160115.jar
2016/02/27 19:53 416,442 jetty-util-9.3.7.v20160115.jar
2016/02/27 19:53 111,130 jetty-webapp-9.3.7.v20160115.jar
4. Code
package aaaCfg;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import com.attilax.io.filex;
public class jetty extends AbstractHandler
{
public void handle(String target,
Request baseRequest,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<h1>Hello World</h1>"+filex.getUUidName());
}
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);
server.setHandler(new jetty());
server.start();
server.join();
System.out.println("--f");
}
}
5. HttpListener类
HttpListener类依赖于IIS 6.0中的Http.sys功能,因此必须使用把http.sys作为系统级HTTP服务的操作系统。只有Windows Vista、Windows Server 2003和Windows XP SP2(以及未来版本的操作系统)包含了这个功能,因此我们应升级和安装服务包。未来的操作系统都会提供这个功能。
HttpListener用http.sys注册一个或多个"前缀"。注册完成后,HTTP子系统会把请求传递给已注册的监听器,这个过程包括创建一个HttpListenerContext对象并把它发送给监听器。类似于ASP.NET中的Context对象,HttpListenerContext对象也包含了Request和Response对象所需要的各种属性。我们可以使用Request属性读取请求,把响应写入Response属性,然后关闭Response,把生成的页面发送到用户的浏览器。表31-10列出了HttpListener中最重要的成员。
表31-10 HttpListener中最重要的成员
成 员 |
描 述 |
Abort |
不处理完现存的请求就强行关闭服务器 |
Close |
在处理完现存的请求后关闭服务器 |
Start |
启动监听器,接收请求 |
Stop |
关闭监听器,停止接收请求 |
IsListening |
该属性判断监听器当前是否能接收请求 |
Prefixes |
监听器可以响应的请求类型的集合。这些类型指的是 URL的左边部分,例如“http://localhost:8080/”或者 “http://serverName:1234/vrootName/”。前缀必须以斜线结尾, 否则就会产生运行时错误。即使同一个服务器上安装了IIS, 只要没有定义与IIS一样的虚拟路径,仍可以使用端口80 |
//等待传入的请求,该方法将阻塞进程,直到收到请求
HttpListenerContext context = listener.GetContext();
//取得请求的对象
HttpListenerRequest request = context.Request;
6. Reef
JETTY9(9.2.1)入门学习 - 小灰灰的部落 - 博客频道 - CSDN.NET.htm
用java实现的一个简单web服务器程序 - lubiaopan的专栏 - 博客频道 - CSDN.NET.htm
自己动手写简单的web服务器--java实现-thomaslwq-ChinaUnix博客.htm
31.2.3 使用HttpListener创建自己的Web服务器(1) - 51CTO.COM.htm
基于HttpListener的web服务器 - wolfy - 博客园.htm
atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener的更多相关文章
- Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结
Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word excel pdf 的web预览要求 ...
- 自定义web服务器(四)
关于HTTP协议的具体内容,前面章节已经有所讲解,相信读者已有所了解,在此不在累述,本章节讲解自定义web服务器. 一,.net提供自定义Web服务器的类 以下只是写主要的类 1.HTTPListe ...
- 网络知识 - 简易的自定义Web服务器
简易的自定义Web服务器 基于浏览器向服务端发起请求 两台主机各自的进程之间相互通信,需要协议.IP地址和端口号,IP表示了主机的网络地址,而端口号则表示了主机上的某个进程的地址,IP加Port统称为 ...
- [C# 网络编程系列]专题三:自定义Web服务器
转自:http://www.cnblogs.com/zhili/archive/2012/08/23/2652460.html 前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网 ...
- 转:【专题三】自定义Web服务器
前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网络中的协议有了大致的了解的, 本专题将针对HTTP协议定义一个Web服务器,我们平常浏览网页通过在浏览器中输入一个网址就可以看到 ...
- 专题三:自定义Web服务器
前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网络中的协议有了大致的了解的, 本专题将针对HTTP协议定义一个Web服务器,我们平常浏览网页通过在浏览器中输入一个网址就可以看到 ...
- 前端web服务器数据同步方案
概述: 网站采用了web和mysql数据库分离的架构,前端有web1.web2.web3需要对他们进行上传文件同步 方案: 在web2的windows服务器上安装GoodSync软件,利用其双向同步特 ...
- ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上
一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Windows上,这样Asp.net开发的网站就难以做到跨平台.由于微软的各项技术的开源,所以微软自然 ...
- net网站运行在自定义的Web服务器上
ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上 一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Win ...
随机推荐
- WebKit内核分析之Page
参考地址:http://blog.csdn.net/dlmu2001/article/details/6213377 注:本系列博客是在原博主博客基础上增加了自己的理解和片段,可以看源博文获得清晰的结 ...
- Go目录
1. Go语言获取项目当前路径 2. Go语言TCP/UDP Socket编程 3. Go语言实现HashSet
- zk框架中利用map类型传值来创建window,并且传值
@Command @NotifyChange("accList") public void clear(@BindingParam("id") String a ...
- 2014 网选 5012 Dice(bfs模板)
/* 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 思路:很直白的bfs,将每一种 ...
- Origami – 用于 Quartz 的免费的交互设计框架
Origami 是一个为 Quartz Composer 开发的免费的工具包——由Facebook设计团队创建,让交互设计原型更加简单,不需要编程. 如今,大多数设计师通过创建静态原型来表达要实现的应 ...
- Dewey – 标记和搜索 Chrome 浏览器书签
Dewey 是一个 Chrome 应用程序,用于标记,搜索和排序你的 Chrome 浏览器书签.借助 Dewey,您可以添加自定义标签,生成你的书签截图,灵活快捷的方式进行搜索和排序. 您可能感兴趣的 ...
- 工作流数据库表设计-ASP.NET
公司准备开发一套工作流引擎,以前没有什么OA开发经验,也是第一次设计工作流引擎,我把我的一些思路分享一下,希望得到些帮助或者能帮助到一些人. 产品的定位: 1.能够做到前后端分离 2.可以做到项目的分 ...
- AutoTransformHandler
public static ObservableCollection<F> Transform<T, F>(List<T> target) where F : ne ...
- 写出优美代码的两个方式:一步到位VS迭代优化
最近把手头这个安卓APP的所有事务性方法都写完了,有了以下体会,新手体会,老鸟轻拍 想写成优美代码的人一般都会有这样的想法: 一定要在写每一句代码,写每一个方法,构造每一个类的时候,都要记得优化: ...
- SQL Server视图复习
视图的好处: 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,采购人员,可以 ...