将socket扔进线程池前需要定义好任务,要进行哪些逻辑处理由SocketProcessor定义,根据线程池的约定,作为任务必须扩展Runnable。用如下伪代码表示

protected class SocketProcessor implements Runnable {

public void run() {

对socket进行处理并输出响应报文;

连接数计数器减一腾出通道;

关闭socket;

}

}

任务主要分为三点:处理socket并相应客户端、连接数计数器减一、关闭socket。其中对socket的处理是最重要也是最复杂的,它包括对底层socket字节流的读取、http协议请求报文的解析(请求行、请求头、请求体等信息的解析)、根据请求行解析得到路径去寻找相应主机上web项目的资源、根据处理的结果组装好http协议响应报文输出到客户端。此部分是web容器的核心,往下将一一剖析。引入任务定义器后整个模块变为如下:

喜欢研究java的同学可以交个朋友,下面是本人的微信号:

最新文章

  1. 几个毫无节操纯属恶搞的JavaScript插件
  2. OPENVPN
  3. mat工具MemoryAnalyzer进行分析java内存溢出hprof文件
  4. Training - An Introduction to Enterprise Integration
  5. .NET微信通过授权获取用户的基本信息
  6. ADF_Controller系列5_通过绑定TasksFlow创建Train
  7. VC6.0到VS2013全部版本下载地址
  8. load & get 加载方式
  9. 本地安装plsql和instantclient连接linux服务器端的oracle
  10. 20145237《Java程序设计》实验报告一
  11. python魔法方法之构造和析构
  12. Arthur and Questions CodeForces - 518E (贪心模拟)
  13. Thymeleaf模板布局
  14. 力扣(LeetCode)728. 自除数
  15. KBEngine 安装
  16. BootStrap中按钮点击后被禁用按钮的最佳实现方法
  17. javascript 事件知识集锦
  18. Effective C++ 条款05:了解C++编写并调用哪些函数
  19. 在Gridview中输入小数时报对于int32 太大或太小
  20. day10上节内容补充和初始函数

热门文章

  1. Linux 基本bash命令
  2. window 2008 下 安装域管理并且控制禁用QQ和U盘
  3. jieba库分词统计
  4. form submit提交
  5. Servlet技术 Cookie与Session
  6. 手把手教你全家桶之React(一)
  7. k8s Kubernetes v1.10 最简易安装 shell
  8. JVM初探- 内存分配、GC原理与垃圾收集器
  9. Dynamics CRM2016 WebApi查询之alternate key
  10. 安卓高级5 zXing