你的位置:首页 > 软件开发 > Java > 一个简单的Servlet容器实现[一]

一个简单的Servlet容器实现[一]

发布时间:2016-06-21 12:00:04
上篇写了一个简单的Java web服务器实现,只能处理一些静态资源的请求,本篇文章实现的Servlet容器基于前面的服务器做了个小改造,增加了Servlet请求的处理。程序执行步骤创建一个ServerSocket对象;调用ServerSocket对象的accept方法,等待连接, ...

  上篇写了一个简单的Java web服务器实现,只能处理一些静态资源的请求,本篇文章实现的Servlet容器基于前面的服务器做了个小改造,增加了Servlet请求的处理。

程序执行步骤

  1. 创建一个ServerSocket对象;
  2. 调用ServerSocket对象的accept方法,等待连接,连接成功会返回一个Socket对象,否则一直阻塞等待;
  3. 从Socket对象中获取InputStream和OutputStream字节流,这两个流分别对应request请求和response响应;
  4. 处理请求:读取InputStream字节流信息,转成字符串形式,并解析,这里的解析比较简单,仅仅获取uri(统一资源标识符)信息;
  5. 处理响应(分两种类型,静态资源请求响应或servlet请求响应):如果是静态资源请求,则根据解析出来的uri信息,从WEB_ROOT目录中寻找请求的资源资源文件, 读取资源文件,并将其写入到OutputStream字节流中;如果是Servlet请求,则首先生成一个URLClassLoader类加载器,加载请求的servlet类,生产servlet对象,执行service方法(往OutputStream写入响应的数据);
  6. 关闭Socket对象;
  7. 转到步骤2,继续等待连接请求;

代码实现:

添加依赖:

    <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->    <dependency>      <groupId>javax.servlet</groupId>      <artifactId>servlet-api</artifactId>      <version>2.3</version>    </dependency>

原标题:一个简单的Servlet容器实现[一]

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录