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 ...
随机推荐
- python 字符串比较
cmp方法比较两个对象,并根据结果返回一个整数.cmp(x,y)如果X< Y,返回值是负数 如果X>Y 返回的值为正数. sStr1 = 'strch'sStr2 = 'strchr'pr ...
- oracle 11g 如何创建、修改、删除list-list组合分区
Oracle11g在分区方面做了很大的提高,不但新增了4种复合分区类型,还增加了虚拟列分区.系统分区.INTERVAL分区等功能. 9i开始,Oracle就包括了2种复合分区,RANGE-HASH和R ...
- gulpfile.js 合并压缩 requirejs 的配置文件
var gulp = require("gulp"); // var babel = require("gulp-babel"); // 用于ES6转化ES5 ...
- MyEclipse for Spring启动时报错"An internal error occurred during: 'Updating indexes'.Java heap space"的解决办法
问题 MyEclipse for Spring在启动时,报如下错误:An internal error occurred during: 'Updating indexes'.Java heap sp ...
- ROC和AUC介绍以及如何计算AUC ---好!!!!
from:https://www.douban.com/note/284051363/?type=like 原帖发表在我的博客:http://alexkong.net/2013/06/introduc ...
- bat 结束进程
@echo offEcho 先等待7秒..等待启动其他软件ping 127.0.0.1 -n 60Echo 正在杀死进程...taskkill /f /im funshion.exetaskkill ...
- AVL树(一)之 图文解析 和 C语言的实现
概要 本章介绍AVL树.和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现.本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++ ...
- vs2010安装和使用
vs2010是之前我跟老师做网站项目时安装的,这次软件工程作业我就用它了,安装过程中的截图就不存在了,我就详细说说它的使用吧. VS2010软件挺大的,下载大概要一个多小时,安装过程大概都是下一步. ...
- Hekaton是如何影响你数据库的目标恢复时间(RTO)的
这个周末我发现了SQL Server 2014里Hekaton的一个有趣副作用,很遗憾它会负面影响你数据库的目标恢复时间(Recovery Time Objective,RTO).你已知道,对于每个本 ...
- 希望早几年知道的5个Unix命令
原文: http://spin.atomicobject.com/2013/09/09/5-unix-commands/ 希望早几年知道的5个Unix命令 使用*nix系统已经有一段时间了.但是还是有 ...