如何加深对Servlet及其工作模式的理解

学Java Web开发的同学都会接触到Servlet,可能在刚刚开始认识Servlet的时候并不能够准确理解它的本质。笔者认为,对于Servlet的准确理解和定位就是Servlet是一个Java接口。那么对于我们开发者而言什么是接口?其实接口就是一种规范。这种规范能够帮助我们在Web上与服务器产生数据交互,从而生成动态的Web。理论上,Servlet能够对任何类型的请求做出响应,所以,所有需要进行网络请求的类都可以通过Servlet来实现。所以,在开发Java服务器程序的时候,Servlet是一个不可或缺的部分。

在了解了什么是Servlet之后,还需要进一步了解Servlet的本质是什么?

Web服务器习惯处理静态页面,所以需要一个程序来帮忙处理动态请求(如当前时间)。Web服务器程序会将动态请求转发给帮助程序,帮助程序处理后,返回处理后的静态结果给web服务器程序。这样就避免了web服务器程序处理动态页面。Servlet的本质是一个帮助程序。在了解了Servlet的本质之后,我们可以进一步来了解Servlet的主要方法和生命周期:

可以说 servlet的本质是接口,tomcat服务器上的一个对外接口。

Servlet中的主要方法:

init():servlet的初始化方法,仅仅执行一次;

service():处理请求和生成响应;

destroy():在服务器停止并且程序中的Servlet对象不再使用的

时候调用,只执行一次;

生命周期:

实例化 Servlet¬——当Servlet容器启动或者容器检测到客户端请求时;

初始化 Servle——实例化后,容器调用Servlet的init()初始化对象;

处理请求 Servlet——得到客户端请求并做出处理时;

销毁 Servlet——当程序中的Servlet对象不再使用的时候,或者Web服务器停止运行的时候

Servlet就是个类,可以把先它看成一个普通的类。

这个类最开始由容器比如tomcat加载并实例化。在加载并实例化之后、初始化之前它就是个普通的类对象,之后容器会调用它的init方法并把servletconfig对象作为参数传给它,然后这个时候这货就变成一个名副其实的servlet了,然后才有资格接受浏览器的请求。然后如果是在mvc模式下,就作为控制器运行,进行逻辑运算。

那么Servlet的工作模式大概可以概括为以下几点:

1、客户端请求该Servlet;加载Servlet类到内存;实例化并调用init()方法初始化该 Servlet;

2、service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions());

3、加载和实例化 Servlet。这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet;

4、Server 创建一个Servlet的实例;

5、第一个客户端的请求到达Server;

6、Server 调用 Servlet 的 init() 方法(可配置为 Server 创建 Servlet 实例时调用,在 web.xml 中 <servlet> 标签下配置 <load-on-startup> 标签,配置的值为整型,值越小 Servlet 的启动优先级越高);

7、一个客户端的请求到达 Server;

8、Server 创建一个请求对象,处理客户端请求;Server 创建一个响应对象,响应客户端请求;

9、Server 激活 Servlet 的 service() 方法,传递请求和响应对象作为参数;

10、service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;

11、service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet() 或 doPost() 或程序员自己开发的新的方法;

12、对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。一般 Servlet 只初始化一次(只有一个对象),当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。


以上内容从Servlet的本质、主要方法、生命周期和工作模式四个方面对Servlet进行较为细致的认识,在下面的视频教程中,也有对Servlet的详细讲解,相信能够对正在学Java的你有所帮助。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,293评论 18 399
  • 0 系列目录# WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 本...
    七寸知架构阅读 13,773评论 22 190
  • 简介 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用...
    寒桥阅读 2,188评论 0 10
  • 一个人的铠甲 一个人的忠诚 一个人的平静 一个人的天堂我是一个守护天堂的骑士 我是一个坐在这里等死的灵魂我是一个人...
    chajn阅读 551评论 0 1