文档章节

servlet工作原理

chape
 chape
发布于 2013/06/08 11:42
字数 895
阅读 424
收藏 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

上一篇: spring ioc原理
下一篇: Hibernate工作流程
chape
粉丝 159
博文 339
码字总数 191349
作品 0
成都
程序员
私信 提问
加载中

评论(0)

JSP与Servlet之间的交互,传值

一.Servlet 首先要明白一点,servlet需要容器的支持才能够运行,如Tomcat、jetty 达到servlet的请求,需要ServletRequest对象和ServletResponse对象去处理 servlet在服务器中的运行:1.加载到内...

osc_feymneeg
2019/03/12
2
0
JSP tomcat 更新不生效

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

juninan
2014/06/10
6.8K
0
web.xml中如果没定义这个配置节,tomcat什么时候装载servlet呢

javaweb初学者,现在想了解下tomcat和servlet的交互原理,在网上看到这篇文章《Tomcat如何与Servlet对象进行交互 - 享受生活 享受工作 - 博客频道 - CSDN.NET》这里是:http://blog.csdn.ne...

LAGOOD
2014/12/21
752
1
JavaWeb-----实现第一个Servlet程序

1.Servlet简介 Servlet是在服务器端运行的一个小程序,实际上一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内 存里的servlet程序。主要用来处理客...

osc_3jc6o7f2
2019/03/12
2
0
Servlet 的生命周期及工作原理

Servlet 生命周期 过程:加载 --> 实例化 --> 服务 --> 销毁 init():在Servlet生命周期中,init()方法只执行一次,无论有多少客户端访问,都不会重复执行。它是在服务器装入Servlet时执行的...

osc_xxbg6mig
2018/09/27
1
0

没有更多内容

加载失败,请刷新页面

加载更多

Flutter 使用Navigator进行局部跳转页面

老孟导读:Navigator组件使用的频率不是很高,但在一些场景下非常适用,比如局部表单多页填写、底部导航一直存在,每个tab各自导航场景。 Navigator 是管理路由的控件,通常情况下直接使用N...

老孟Flutter
今天
28
0
使用site-maven-plugin在github上搭建公有仓库

简介 Maven是我们在开发java程序中经常使用的构建工具,在团队合作开发过程中,如果我们想要将自己写好的jar包共享给别人使用,通常需要自己搭建maven仓库,然后将写好的jar包上传到maven仓库...

flydean
今天
25
1
Python笔记:爬取各国疫情仙去人数数据制作南丁格尔玫瑰图

我凌晨用Python爬虫实时从网上爬取各国在疫情中仙去人数的数据,然后仿人民日报制作成“南丁格尔玫瑰图” 英国37048;意大利32877;西班牙27117都对得上; 但美国、法国、巴西的跟百度大数据...

tengyulong
今天
26
0
PHP Session的用法

在 PHP 中,Session 是一种服务器端的机制,服务器使用一种散列表的结构(类似于 JSON)来保存信息。相比于保存在客户端的 Cookie,Session 将用户交互信息保存在了服务器端,使得同一个客户...

linuxprobe2020
今天
37
0
webpack.03-打包js同时生成html页面

在空文件夹初始化:CMD npm init -y cnpm install -D webpack webpack-cli 文件结构 src(文件夹)--->test.js console.log('hello webpack') src(文件夹)--->index.html <html> ......

_qq507570355
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部