虽然写的不是很好,但 最终解释权以及版权归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. 交换机Trunk端口配置

    本文为转发,简单明了,我喜欢. Trunk端口的配置步骤如下: 一 组网需求: 1.SwitchA与SwitchB用trunk互连,相同VLAN的PC之间可以互访,不同VLAN的PC之间禁止互访: 2 ...

  2. 闲扯 Javascript 00

    引言 Javascript  的作用在此就不阐述了,相信你已经知道它的用途!那我说点什么呢? 不如就和大家先扯一把,后面的工作 随后后展开吧! 首先声明:我个人对Javascript 认识,我只知道它 ...

  3. (读书笔记).NET大局观-.NET框架类库概观

    .NET框架类库概况 构建在.NET框架上所有的软件,都会用到通用语言进行时,即使基于最简单的CLR程序,也需要用到一部分.NET框架类库,更精致复杂的软件则使用这个类库提供的更多服务. .NET框架 ...

  4. 在WINDOWS下 三步快速配置 eclipse c++ 环境

    所需软件 1.Eclipse IDE for C/C++ Developers http://www.eclipse.org/downloads/packages/eclipse-ide-cc-dev ...

  5. 《大象UML》看书笔记2:

    <大象UML>看书笔记2 抽象角度:                                                        在为现实世界建模的时候,首先要搞清楚有多 ...

  6. 基于visual Studio2013解决C语言竞赛题之1049抓牌排序

       题目 解决代码及点评 /* 功能:插入排序.许多玩牌的人是以这样的方式来对他们手中的牌进行排序的: 设手中原有3张牌已排好序,抓1张新牌,若这张新牌的次序在原来的第2张牌之后,第 3 ...

  7. Coin Toss

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31329#problem/G 使用二维数组f[ i ] [ j  ] 表示前i 位中有j个 ...

  8. jquery 获取 TABLE单元格的值

    1.JQ部分: var tds = $("#table1 td"); tds.click(function(){ //给所有td添加点击事件        var tdSeq = ...

  9. EasyUI - 一般处理程序 返回 Json值

    使用 一般处理程序(ashx)返回Json值. 原始Json数组的格式: [ { ", "name":"张三", "sex":&q ...

  10. ASP.NET - 缓存(Cache)

    页面缓存: 给页面添加<%@ OutPutCache Duration = “15” VaryByParam = “none” %> 这样就可以启用页面缓存了,那么在规定的时间内,页面之访 ...