简单servlet容器的实现原理
2017-04-17 17:52
260 查看
程序执行步骤
创建一个ServerSocket对象;调用ServerSocket对象的accept方法,等待连接,连接成功会返回一个Socket对象,否则一直阻塞等待;
从Socket对象中获取InputStream和OutputStream字节流,这两个流分别对应request请求和response响应;
处理请求:读取InputStream字节流信息,转成字符串形式,并解析,这里的解析比较简单,仅仅获取uri(统一资源标识符)信息;
处理响应(分两种类型,静态资源请求响应或servlet请求响应):如果是静态资源请求,则根据解析出来的uri信息,从WEB_ROOT目录中寻找请求的资源资源文件,
读取资源文件,并将其写入到OutputStream字节流中;如果是Servlet请求,则首先生成一个URLClassLoader类加载器,加载请求的servlet类,生产servlet对象,执行service方法(往OutputStream写入响应的数据);
关闭Socket对象;
转到步骤2,继续等待连接请求;
这里,servlet容器的UML图如下所示:
应用程序入口点在HttpServer1中,创建一个ServerSocket等待客户端的请求。每次请求成功时创建一个Request对象和Response对象。并根据需求分发到StaticResourceProcessor或者ServletProcessor实例中。(若请求的是静态资源则发送到StaticResourceProcessor,如果是一个servlet则发送到ServletProcessor1中)
相关文章推荐
- 实现一个简单的Servlet容器
- [深入剖析Tomcat]一个简单的servlet容器实现
- 一个简单的servlet容器实现
- 一个简单的Servlet容器实现
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
- Spring实现原理分析(二十六).Spring Boot关于嵌入式servlet容器
- IoC原理-使用反射/Emit来实现一个最简单的IoC容器
- 基于Java web服务器简单实现一个Servlet容器
- Tomcat源码之旅--最简单的Servlet容器实现
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
- Servlet容器的一个简单实现
- [深入剖析Tomcat]一个简单的servlet容器实现2
- IoC原理-使用反射/Emit来实现一个最简单的IoC容器
- 学习笔记之 Servlet容器服务器原理 简易实现代码
- 利用JAVA的动态属性之反射原理实现一个简单AOP容器 - AOP的实现原理分析
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )
- 根据RemObject的远程方法调用原理实现的简单远程方法调用
- 也谈WEB打印(二):简单的分析一下IE的打印原理并实现简单的打印和预览
- jsp文件上传原理简单实现
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)