首先我们先要知道servlet是什么,这有两种解释。一是目前大多数人所说的,一个实现了servlet接口的类就可以叫作servlet。二,servlet只是一个接口。那么看起来这两点都和servlet接口有关,那么我们知道弄清楚了servlet接口就好了。

  查看servlet接口源码,会发现里面一共只有五个方法。

   接口的作用是规范,就是为了规范实现他的那些子类,那servlet接口定义的就是一套处理网络请求的规范。实现他的那些子类就要实现他的方法,其中里面最重要的三个方法,init(),service(),destory()。那么问题就变成了,你初始化要做什么,你接收到请求时如何服务,你销毁时要做什么。

  那么实现了servlet的类就能处理请求吗?不能,因为servlet不直接和客户端打交道,实现类中不会有端口不会有url等一系列信息,既然这样是如何与客户端进行交互的。所以就有了servlet容器,servlet并不能直接处理请求,而是需要把servlet放在servlet容器中,tomcat就是这样一个容器,我们在配置tomcat时会发现xml里面有许多端口等等,这些才是与重要的信息。servlet容器监听端口,收到请求后,根据url等信息,mapping匹配选择应该让哪个servlet处理,再调用servlet的service方法,servlet处理完之后把response返回给tomcat,tomcat再把这个response传回去。

  这么理解之后就更好理解servlet的运行过程了。servlet放在web服务器(servlet容器,比如tomcat)中,容器接收到请求后,选择让哪个合适的servlet去处理,如果这个合适的servlet没有实例对象,就先创建一个,有了实例对象就直接处理。处理过程,调用servlet实例对象的init()方法,创建一个用于封装http请求的HttpServletRequest对象和HttpServletResponse对象,然后调用service()方法并将request和response对象作为参数传进service(),service处理完之后,把response传给容器,容器再还给请求方。完成处理,调用destory()方法,该servlet被标记为垃圾,等待jvm回收该垃圾。

  所以问题解决了,servlet是一个接口,用来规范网络请求(通过request和response,像tomcat与jetty的代码就不一样,而程序员只要会使用request和response就可以,这就是规范),实现servlet的类放在servlet容器中与客户端进行间接交互

最新文章

  1. Ajax实现简单下拉选项
  2. RequestContextListener作用
  3. mysql的sql文件的备份与还原
  4. Eclipse SVN插件账号、密码修改
  5. Cannot initialise keyboard run ./nano-X
  6. Servlet 获取IllegelStateException
  7. mongodb window安装配置
  8. Kafka 1.0.0集群安装
  9. springboot 开启事务以及手动提交事务
  10. js判断移动端是否安装某软软件,安装直接打开相应的链接,否则跳转到下载商店方法
  11. phpcms 自定义方法
  12. iOS 录制视频MOV格式转MP4
  13. jQuery-切换2
  14. Java 泛型类型基础
  15. HP管理工具System Management Homepage安装配置
  16. hdu2069-2071
  17. HDU 5280 Senior's Array 最大区间和
  18. Gradle编译时下载依赖失败解决方法
  19. Mac OSX使用隐藏文件夹
  20. 【PTA 天梯赛训练】词频统计(map+vector)

热门文章

  1. C#连接oracle数据库步骤
  2. 【转载】[ORACLE]详解not in与not exists的区别与用法
  3. monkey简介与最常用命令
  4. ubuntu14.04安装cuda
  5. ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
  6. Python机器学习介绍(Python Machine Learning 中文版)
  7. 【POJ3207】Ikki's Story IV - Panda's Trick
  8. AC自动机模板2(【CJOJ1435】)
  9. 【BZOJ4196】【NOI2015】软件包管理器(树链剖分,线段树)
  10. [BZOJ3223] [Tyvj1729] 文艺平衡树 (splay)