文档章节

servlet工作原理

chape
 chape
发布于 2013/06/08 11:42
字数 895
阅读 414
收藏 19

一、Servlet工作原理

       Servlet是运行在Servlet容器中的,由Servlet容器来负责Servlet实例的查找、创建以及整个生命周期的管理,Servlet整个生命周期可以分为四个阶段:类装载及实例创建阶段、实例初始化阶段、服务阶段以及实例销毁阶段

1.类装载及实例创建阶段

     默认情况下,Servlet实例是在接受第一次请求时进行创建并且以后的请求进行复用(单例!),如果有Servlet实例需要进行一些复杂的操作,需要在初始化时就完成,比如打开文件、初始化网络连接等,可以配置在服务器启动时就创建实例,具体配置方法为在声明servlet标签中添加<load-on-startup>1</load-on-startup>标签。

2.初始化 init(ServletConfig config)

      一旦Servlet实例被创建,将会调用Servlet的init方法,同时传入ServletConfig实例,传入Servlet的相关配置信息,init方法在整个Servlet生命周期中只会调用一次。

3.服务 service(HttpServletRequest request HttpServletResponse response)

      为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下(每一个请求到来servlet容器都会产生一个线程来调用service方法,但是需要注意每个线程也共享servlet对象的成员变量),Servlet开发者必须保证该方法的线程安全性(注意线程安全!)

      一个HttpServletRequest类型的对象,该对象封装了用户的请求信息,此对象调用相应的方法可以获取封装的信息,即使用这个对象可以获取用户提交的信息。另外一个参数对象是HttpServletResponse类型的对象,该对象用来响应用户的请求。

4.销毁 destory()

      服务器关闭时会调用destory方法,销毁servlet实例!当Servlet容器将决定结束某个Servlet时,将会调用destory()方法,在destory方法中进行资源释放,一旦destory方法被调用,Servlet容器将不会再发送任何请求给这个实例,若Servlet容器需再次使用该Servlet,需重新再实例化该Servlet实例。

二、Servlet执行流程

     web服务器接受到一个http请求后,web服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml 配置文件找到相应的处理servlet,同时将request、response对象传递给它,servlet通过request对象可知道客户端的请求者、请求信息以及其他的信息等,servlet在处理完请求后会把所有需要返回的信息放入response对象中并返回到客户端,servlet一旦处理完请求,servlet容器就会刷新response对象,并把控制权重新返回给web服务器。

三、与其它技术的比较

与其它服务相比servlet有以下的一些优点:

1、运行速度上比CGI快,因为使用了多线程

2、servlet使用了标准的api,可被许多web服务支持

3、与系统无关性,一次编译多次使用

本文转载自:http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156487.html

共有 人打赏支持
chape
粉丝 157
博文 339
码字总数 191349
作品 0
成都
程序员
JSP tomcat 更新不生效

今天遇到一问题,更改好的jsp部署到tomcat后,无论如何页面也不生效,最后才知道是tomcat的work目录没有清的原因,借此机会也特地看了下work目录的作用以及原理,做个记录学习下: jsp,tom...

juninan
2014/06/10
0
0
Java Servlet 总结

Servlet 是 Java Web 开发的起点,几乎所有的 Java Web 框架都是基于 Servlet 的封装,其中最主要的就是 Servlet 和 Filter 接口。我重新学习了一遍 Servlet,对 Java Web 开发有了更深的理解...

落英坠露
07/07
0
0
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

№贪↗恋♂
2012/08/08
0
0
JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明
04/18
0
0
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

罗荣熙
2012/12/01
0
2

没有更多内容

加载失败,请刷新页面

加载更多

IDEA 鼠标跳到下一行

敲代码时有时会出现这样的情况,鼠标在图中的位置,还需要手动将鼠标移动到这行的末尾然后再回车才能到新的一行。 用【Shift + Enter】,可以【IDEA新建一行,并且光标移到新行】...

karma123
4分钟前
0
0
在Kubernetes集群中部署ownCloud云盘系统

ownCloud ownCloud is a file sharing server that puts the control and security of your own data back into your hands. TL;DR; $ helm install stable/owncloud Introduction This char......

openthings
6分钟前
0
0
Python编写的以太坊虚拟机的新实现Py-EVM

Py-EVM是用Python编写的以太坊虚拟机的新实现。目前github上695个star,正在积极开发中,但正在通过以太坊/测试提供的测试套件快速推进。我们感谢有Vitalik和现有的PyEthereum代码,使得我们...

geek12345
7分钟前
0
0
(2)集成element-ui

(2)集成element-ui 1 安装element-ui依赖 cnpm install --save element-ui 2 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。 首先,安装 ...

neumeng
12分钟前
0
0
linux下tree命令的用法解释

tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来 linux下的tree就比较强大了,但一般系统并不自带这个命令,需要手动下载安装。 安装 : 1 yum -y install tree -a 显示所有文...

嘘嘘者
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部