虽然写的不是很好,但 最终解释权以及版权归13东倍所有!

package com.web;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
new HttpWeb();
}

}

package com.web;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class HttpWeb {
private static int port=8880;
private boolean isRun=true;
public HttpWeb() throws IOException{
//System.out.println("coming HttpWeb()");
ServerSocket listening=new ServerSocket(port);
System.out.println("listening监听的端口号---"+listening.getLocalPort());
while(isRun){
System.out.println("loop");
Socket socket=listening.accept();
System.out.println("socket---"+socket);
Request request=new Request(socket.getInputStream());
//request.getURI();
Response response=new Response(socket.getOutputStream());
//response.outHTML(request.getURI());
WebProcess wp=new WebProcess(request,response);
//wp.returnFile();
response.outHTML(wp.returnFile());
 
socket.close();
}
}
}

package com.web;
import java.io.IOException;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Request {
private InputStream inputStream=null;
public Request(InputStream inputStream) {
this.inputStream=inputStream;
}

public String getURI() throws IOException{
String resource=null;
BufferedReader in=new BufferedReader(new InputStreamReader(inputStream));
System.out.println("in----------"+in);
String line=in.readLine();
System.out.println("line---------"+line);
resource=line.substring(line.indexOf("/")+1,line.lastIndexOf("/")-5);
System.out.println("resource---------"+resource);
return resource;
}

}

package com.web;
import java.io.OutputStream;
import java.io.PrintWriter;
public class Response {
private PrintWriter out=null;
public Response(OutputStream outputStream) {
out=new PrintWriter(outputStream,true);
}
public void outHTML(String datas){
System.out.println("coming outHTML()");
out.println(datas);
}

}

package com.web;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class WebProcess {
private Request request=null; 
private Response response=null;
public WebProcess(Request request, Response response) {
this.request=request;
this.response=response;
}
public String returnFile() throws IOException{
String resource=request.getURI();
File file=new File(resource);
System.out.println("file-----------"+file);
FileInputStream fis=new FileInputStream(file.getAbsolutePath());
System.out.println("fis----------"+fis);
byte[] data=new byte[fis.available()];
fis.read(data);
String datas=new String(data);
return datas;
}

}

HttpWeb服务器之--用OO方式写的更多相关文章

  1. 用OO方式写键盘字母小游戏

    <html>  <head>   <title>0.0</title>   <script>    window.onload=functi ...

  2. Session服务器之Redis

    Session服务器之Redis Redis与Memcached的区别内存利用率:使用简单的key value (键值对)存储的话,Mermcached 的内存利用率更高,而如果Redis采用hash ...

  3. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

  4. backup服务器之rsync服务

    backup服务器之rsync服务   rsync是开源的.快速的.多功能的可实现全量及增量的本地或远程数据同步备份的优秀工具.它拥有scp.cp的全量复制功能,同时比scp.cp命令更优秀.更强大. ...

  5. Web地图服务、WMS 请求方式、网络地图服务(WMS)的三大操作

    转自奔跑的熊猫原文 Web地图服务.WMS 请求方式.网络地图服务(WMS)的三大操作 1.GeoServer(地理信息系统服务器) GeoServer是OpenGIS Web 服务器规范的 J2EE ...

  6. Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  7. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

  8. OO方式下,ALV TREE和ALV GRID的不同之处

    作为大部分报表程序的基础,ALV GRID差不多是每个ABAP开发者必须了解和掌握的内容,因此网上也不乏相关资料,而ALV TREE的应用相对较少,中文资料也就比较少见了.实际上,ALV TREE和A ...

  9. Web服务器之iis,apache,tomcat三者之间的比较

    IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器.主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer P ...

随机推荐

  1. iOS开发中关于本地数据中SQLite数据库常用的SQL语句

    创建表 CREATE TABLE IF NOT EXISTS "student" ("number" INTEGER PRIMARY KEY AUTOINCRE ...

  2. hdu4620 Fruit Ninja Extreme

    Fruit Ninja Extreme Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  3. 2014年国内经常使用移动client推送服务介绍和比較

    经过5年移动互联网的迅速发展,如今推送服务方面国内已经出现了非常多产品,比如极光推送,个推,一推,百度推送,友盟推送等,我们在选择推送服务时,首先排除了付费的推送服务,重点调查了免费的推送服务.   ...

  4. STL之iterator(迭代器)

    3.迭代器简单介绍 除了使用下标来訪问vector对象的元素外,标准库还提供了訪问元素的方法:使用迭代器.迭代器是一种检查容器内元素而且遍历元素的数据类型. 百科释义: 迭代器(iterator)是一 ...

  5. 用定时器T0的中断控制8位LED闪烁

    #include<reg52.h> #define uchar unsigned char #define uint unsigned int uint i; void main() { ...

  6. premake在Ubuntu和GCC环境下创建简单的C++工程

    由于premake基于lua脚本,为了方便编辑lua脚本,我在emacs24中利用package system安装了lua-mode. 然后创建config.lua文件,填入下面这段,主要来自:htt ...

  7. GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛

    GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛     :GAE+bottle+jinja2+beaker快速开发 ...

  8. POJ 1258-Agri-Net (Kruskal)

    题目链接:Agri-Net 最小生成树水题,数组开的和题目描写叙述一样,可是就是RE,有填了个0,还好这个题用 库鲁斯卡尔 敲了一遍,发现了点问题,曾经写的库鲁卡尔模板有点问题,多写了步没用的操作,已 ...

  9. C#中一些易混知识的比较

     Equals 和==的区别         C#中有两种不同的相等:引用相等和值相等         ==是比较两个变量的值是否相同或两个引用是不是指向同一个内存地址.         Equals ...

  10. SVN 1.8.x 服务器安装(转)

    目录[-] 一. SVN 服务器下载.安装 1. 关于 Subversion 1.8.11 2. 兼容性问题 3. 安装包下载 3.1 VisualSVN 3.2 Win32Svn 3.3 SlikS ...