前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自己动手写Web服务器(二)简单的Servlet服务器

自己动手写Web服务器(二)简单的Servlet服务器

作者头像
the5fire
发布2019-02-28 15:35:07
8300
发布2019-02-28 15:35:07
举报

前一篇文章中,通过学习《How Tomcat Works》这本书,我们实现了简单的静态WEB服务器,今天继续复习下一篇,实现一个简单的Servlet服务器。

有了静态服务器实现的基础,我们揣测一下Servlet的实现原理,不过在此之前,我们需要了解什么是Servlet。

关于Servlet的详细定义大家上百科上去看,在这里我们只需知道Servlet是一种小的服务器端程序,担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

从上面可知,Servlet的主要作用是同http来打交道。那么我们再来看一个简单的Servlet实现。

代码语言:javascript
复制
import java.io.*;

import javax.servlet.http.*;
import javax.servlet.*;

public class HelloServlet extends HttpServlet {
  public void doGet (HttpServletRequest req,
                     HttpServletResponse res)
    throws ServletException, IOException
  {
    PrintWriter out = res.getWriter();

    out.println("Hello, world!");
    out.close();
  }
}

看这段代码,其中的out.println(“Hello,world!”);显然就是在同http进行交互了。对比一下我们的静态服务器中的代码,会发现,静态服务器是通过程序把静态资源输出到客户端,而这个Serlvet本身就是程序,并且可以输出字符到客户端。

有了这些认识,Servlet服务器的实现就变得简单,为了让思路变得清晰,我们需要uml图来进行辅助。

整个流程就是:

tomcatimpl02
tomcatimpl02

从图中,我们可以看到Servlet服务器的实现相比于静态服务器其实是多了一个动态加载Servlet的方法,然后再执行Servlet。

因为目前是使用javaee包中的Servlet,因此还需要将我们原先写的Request类和Response类添加对应的ServletRequest和ServletResponse实现。

具体代码就不在博客上写了,感兴趣的话可以自己下载。

TomcatImpl02.src

通过浏览器访问自己的Servlet服务器(也可以叫做容器),结果截图:

这里有一点和《How Tomcat works》书中的不同,书上提示说:“Note that you cannot see the second string Violets are blue,because only the first string is flushed to the browser.”。但是我执行的结果是两条语句都能输出。不清楚原因在哪?某非是Servlet版本的问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-07-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档