`

Servlet工作原理

    博客分类:
  • java
阅读更多

一、Servlet工作原理

 

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

类装载及实例创建阶段

 

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

初始化 init(ServletConfig config)

 

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

服务 services()

 

     为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下,Servlet开发者必须保证该方法的线程安全性。    

销毁 destory()

 

      当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、与系统无关性,一次编译多次使用


分享到:
评论
14 楼 h521999 2011-03-12  
aoliwen521 写道
为啥这些很容易查找到的基础资料还会被发上来??

呵呵。。。确实是很容易查找到的资料,只是个人随便总结一下,方便于一些新手吧,以后尽量发些有质量的帖子吧。。。。
13 楼 h521999 2011-03-12  
shaomeng95 写道
楼主,关键的方法名称都搞错了,赶紧改免得误人啊

感谢,已更改过来了,笔误....
12 楼 aoliwen521 2011-03-12  
为啥这些很容易查找到的基础资料还会被发上来??
11 楼 sunrisetg 2011-03-12  
看看,记录下!
10 楼 shaomeng95 2011-03-12  
楼主,关键的方法名称都搞错了,赶紧改免得误人啊
9 楼 accphc 2011-03-11  
默认情况下,Servlet实例是在接受到第一个请求时进行创建并且以后的请求进行复用,如果有Servlet实例需要进行一些复杂的操作,需要在初始化时就完成,比如打开文件、初始化网络连接等,可以配置在服务器启动时就创建实例,具体配置方法为在声明servlet标签中添加<load-on-startup>1</load-on-startup>标签。
学习啦
8 楼 java_xiaoyi 2011-03-11  
面试宝典。。。。
7 楼 t42dw 2011-03-11  
nianien 写道
t42dw 写道
Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。

而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet 。

servlet与CGI区别应该是这个

有没有可能容器实现的不是单例模式,而是对象池模式呢?


恩,好象听说过有用对象池的,不过就算是对象池模式应该也是维护一定数量的对象不可能每来一个请求创建一个不
6 楼 nianien 2011-03-11  
t42dw 写道
Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。

而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet 。

servlet与CGI区别应该是这个

有没有可能容器实现的不是单例模式,而是对象池模式呢?
5 楼 zhaosong 2011-03-11  
我晕,还以为 是servlet的实现方式。
4 楼 t42dw 2011-03-11  
Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。

而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet 。

servlet与CGI区别应该是这个
3 楼 h521999 2011-03-11  
qz小峰 写道
其实吧,如果能阅读Web容器相关源码,应该能了解得更多!


嗯,赞成,一直在找时间想系统的研究一下。
2 楼 qz小峰 2011-03-11  
其实吧,如果能阅读Web容器相关源码,应该能了解得更多!
1 楼 myloverjay 2011-03-11  
又学习了一次

相关推荐

    Servlet 工作原理解析

    Servlet 工作原理解析

    servlet工作原理

    ### Servlet工作原理详解 #### 一、Servlet简介与工作流程 Servlet是一种服务器端的Java应用程序,主要用于接收客户端发送的HTTP请求,并返回响应结果。Servlet在Java Web开发中扮演着核心角色,它负责处理用户...

    servlet工作原理(2)

    ### servlet工作原理(2) #### 一、Servlet基础与重定向机制 在Java Web开发领域,Servlet技术扮演着至关重要的角色。它不仅为开发者提供了一种标准的方式来处理客户端请求,而且还是构建动态Web应用程序的核心...

    JSP+JavaBean+Servlet工作原理

    总结起来,JSP+JavaBean+Servlet的工作原理是一个典型的Web应用程序开发模型,通过合理的分工,实现了高效、可维护的动态网站开发。在实际应用中,开发者通常会结合其他框架,如Spring MVC,进一步提升开发效率和...

    Servlet工作原理解析PDF版

    ### Servlet工作原理深入解析 #### 一、引言 随着互联网技术的快速发展,Web应用程序已成为企业和个人进行在线交互的重要手段。在众多Web开发框架和技术中,Servlet作为一种基于Java的服务器端编程模型,自诞生...

    Servlet工作原理问答共2页.pdf.zip

    Servlet工作原理的深入理解对于任何希望在Web开发领域有所建树的开发者都至关重要。以下是对Servlet工作原理的详细阐述: 1. **Servlet定义**:Servlet是Java编程语言中的一组接口,由Sun Microsystems(现为Oracle...

    servlet工作原理解析

    ### Servlet工作原理与生命周期解析 #### 一、Servlet概述 Servlet是Java Web开发中的核心组件之一,主要用于处理客户端发送到服务器端的HTTP请求,并生成相应的响应。Servlet技术由Sun Microsystems在1997年推出...

    深入Java Web心脏:Servlet工作原理全解析

    ### 深入Java Web心脏:Servlet工作原理全解析 #### Java语言概述 Java作为一种流行的编程语言,由Sun Microsystems(现归Oracle所有)于1995年首次发布。其设计初衷是为了满足跨平台性、面向对象编程、健壮性、...

    Servlet生命周期与工作原理

    下面我们将详细探讨这三个阶段以及Servlet的工作原理。 1. **初始化阶段** 当Servlet容器(如Tomcat)启动时,可以通过在`web.xml`配置文件中设置`&lt;load-on-startup&gt;`标签来指定Servlet在服务器启动时自动加载,其...

    servlet工作原理讲解

    详细讲解servlet的机制及使用方法,其中有非常容易理解的实例和图解,推荐。

    Servlet运行原理图

    Servlet运行原理图,描述servlet运行的步骤方向和servlet运行过程

    Jsp+JavaBean循序渐进教程+Servlet工作原理实例

    JSP+JavaBean+Servlet三层结构的实质是多了一个Controller:Servlet来分发客户端浏览器的请求。如果把起控制器作用的Servlet的作用理解为对客户端的请求进行预处理对理解Servlet将有很大的帮助。通过web.XML配置文件...

Global site tag (gtag.js) - Google Analytics