虽然写的不是很好,但 最终解释权以及版权归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. js 中 字符串的转换

    JS 中将 number 转换为 string 我们比较熟悉,直接用toString() 的方法就可以了:那么将 string 转换成为 number 都有些什么方法呢?如下便简单的列举了一些,以便记 ...

  2. Jsp的include指令静态导入和动态导入的区别

    1.什么是静态导入? 静态导入指的是,将一个外部文件嵌入到当前JSP文件中,同时解析这个页面的JSP语句,它会把目标页面的其他编译指令也包含进来. include的静态导入指令使用语法: <%@ ...

  3. hdu3999The order of a Tree (二叉平衡树(AVL))

    Problem Description As we know,the shape of a binary search tree is greatly related to the order of ...

  4. JQuery5.04获取

    获取body:  $('body'); 或者 $(document.body); 获取元素标签:$('div');   $('a'); 获取ID: $('id'); 获取某个元素的某个属性: $('a ...

  5. Embedded Linux Primer----嵌入式Linux基础教程--章节介绍

    章节介绍 第一章,“导引”,简要介绍了Linux被迅速应用在嵌入式环境的驱动因素,介绍了与嵌入式Linux相关的几个重要的标准和组织. 第二章,“第一个嵌入式经历”,介绍了与后几章所构建的嵌入式Lin ...

  6. OpenProcessToken令牌函数使用方法

    >GetCurrentProcessID 得到当前进程的ID OpenProcessToken得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限AdjustTokenPr ...

  7. 用WebCollector制作一个爬取《知乎》并进行问题精准抽取的爬虫(JAVA)

    简单介绍: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API.仅仅需少量代码就可以实现一个功能强大的爬虫. 怎样将WebCollector导入项目请 ...

  8. POJ 2286 The Rotation Game 迭代搜索深度 + A* == IDA*

    感觉这样的算法还是比較局限的吧,反复搜索是一个不好的地方,并且须要高效的估值函数来进行强剪枝,这点比較困难. 迭代搜索深度是一个比較炫酷的搜索方式,只是有点拿时间换空间的感觉. 首先迭代深度比較搓的写 ...

  9. Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)

    CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等). 1,CLHeading对象通过一组属性提供航向相关数据: magneticHeadi ...

  10. Eclipse用法和技巧十七:覆盖父类方法

    在学校里面学习java,遇到访问权限修饰符一直停留在public是公有的,外面可以访问:protected是对子类可见的,外部不可以访问:private仅在本类中可见.工作之后,接触到了java代码多 ...