首先我们先要知道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容器中与客户端进行间接交互

servlet本质的更多相关文章

  1. Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中

    以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...

  2. Jsp与servlet本质上的区别

    1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.jsp更擅长 ...

  3. servlet本质是什么

    作者:Javdroider Hong链接:https://www.zhihu.com/question/21416727/answer/339012081来源:知乎著作权归作者所有.商业转载请联系作者 ...

  4. java servlet的工作原理

    servlet本质上就是java类嘛.不过是有特殊规范的java类而已.下面就说一说为什么servlet要有特殊规范. 首先,考虑一下什么地方用servlet,WEB应用,而且是需要servlet容器 ...

  5. Java Web每天学之Servlet的原理解析

    Java Web每天学之Servlet的工作原理解析,上海尚学堂Java技术文章Java Web系列之二上一篇文章Java Web每天学之Servlet的工作原理解析是之一,欢迎点击阅读. Servl ...

  6. Servlet学习的一些笔记

    Servlet一点笔记 Servlet:Server Applet,全称Java Servlet,是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP ...

  7. Servlet基础学习

    Servlet学习 Servlet是Server与Applet的缩写,是服务端小程序的意思.使用Java语言编写的服务器端程序,可以像生成动态的WEB页,Servlet主要运行在服务器端,并由服务器调 ...

  8. 服务器学习笔记之servlet

    初衷 想学习下服务器这边的知识,制定了一条学习路线:java8--->servlet--->springMvc--->springBoot--->springCloud.在此当 ...

  9. Java web课程学习之Servlet

    Servlet简介   (1) Servlet本质上就是一个Java类,只不过运行在Servlet容器中 (2) Servlet的功能: ① 创建并返回客户请求的动态HTML页面 ② 创建可嵌入到现有 ...

随机推荐

  1. canvas动画:自由落体运动

    经过前面的文章,我们已经能够在canvas画布上画出各种炫酷的图形和画面,但是这些画面都是禁止的,怎么样才能让他们动起来呢? 如何绘制基本图形可以参考:canvas基本图形绘制 如何对基本图形移动旋转 ...

  2. emWin 2天速成实例教程000_如何快速入门ucGUI/emWin

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...

  3. Python Web-第三周-Networks and Sockets(Using Python to Access Web Data)

    1.Networked Programs 1.Internet 我们现在学习Internet部分,即平时我们浏览器做的事情,之后再学习客服端这部分 2.TCP 传输控制协议 3.Socket HTTP ...

  4. spring拦截器的简单实现Interceptor

    原文链接:http://lixuanbin.iteye.com/blog/2250100 1. 需求描述 某内部管理系统采用Spring MVC搭建,用户可以登录系统进行CRUD以及其他的一些日常管理 ...

  5. 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)

    [BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...

  6. 【BZOJ3944】Sum(杜教筛)

    [BZOJ3944]Sum(杜教筛) 题面 求\[\sum_{i=1}^n\mu(i)和\sum_{i=1}^n\phi(i)\] 范围:\(n<2^{31}\) 令\[S(n)=\sum_{i ...

  7. 【BZOJ1975】【SDOI2010】魔法猪学院(搜索,A*,贪心)

    我已经沉迷于粘贴题目地址了... 题解 很显然的贪心呀, 就是一定是最短的若干条路径的长度 所以,不断拓展k短路就可以了 至于怎么用A* 评估函数f(x)=dis[x]+g[x] 其中,dis是到N号 ...

  8. Eclipse增强代码提示插件Code Recommenders安装,顺便说说Eclipse插件安装方法

    1.为什么用Code Recommenders 在用过Intelij Idea后,发现它的自动代码提示非常智能,可以敲关键字就能提示,但是因为公司用的是Eclipse, 所以想找有没有这个插件能增强代 ...

  9. python数据类型——字典类型

    字典(dictionary) python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可 ...

  10. python迭代和切片

    from collections import Iterable #切片************************ # #取一个list或tuple的部分元素是非常常见的操作 ,Python提供 ...