Servlet学习补充

Servlet学习补充

=============================================================================
Servlet是sun公司提供的一门用于开发动态web资源的技术。
    Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),
    需要完成以下2个步骤:
        1. 编写一个Java类,实现servlet接口。
        2. 把开发好的Java类部署到web服务器中。
        
    提示:按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。
-----------------------------------------------------------------------------
Servlet的运行过程
    Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
    1. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。
    2. 装载并创建该Servlet的一个实例对象。 
    3. 调用Servlet实例对象的init()方法。
    4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个用于封装HTTP响应消息的HttpServletResponse对象,
       然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
    5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
-----------------------------------------------------------------------------
Servlet的生命周期(1)
    1. Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。
    2. 针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象(单实例),
       也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
    3. 在Servlet的整个生命周期内,Servlet的init方法只被调用一次。
       而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。
       对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,
       然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXxx方法。 
Servlet的生命周期(2)
    如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。
    举例:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

Java多线程之死锁(Deadlock)及死锁避免(Deadlock Prevention)线程死锁(Thread Deadlock)更复杂的死锁情况数据库死锁死锁避免(Deadlock Preven

死锁就是当两个或者多个线程阻塞了 ,正在等到所需要的锁,但这些锁被其他也在等待的线程锁持有。死锁常常发生在多个线程在同一个时刻,需要同一些锁,但是他们获取锁的顺...

11510
来自专栏逆向技术

远程线程注入

一丶远程线程注入的讲解 远程线程注入的原理,我会写一个远程线程开发的例子 我们总共需要几步 /*1.查找窗口,获取窗口句柄*/ /*2.根据...

270100
来自专栏同步博客

Memcache存储机制与指令汇总

  memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

10520
来自专栏Spark学习技巧

Mapreduce shuffle详解

Mapreduce shuffle详解 Mapreduce确保每个reducer的的输入都是按键排序的。系统执行排序的过程(即将map输出作为输入 传给redu...

47230
来自专栏社区的朋友们

深入浅出 Nodejs( 三 ):Nodejs 核心模块机制

本篇教程关于Nodejs的核心模块机制,具体讲Nodejs核心模块的原理、C/C++扩展模块的原理、包、模块调用栈以及NPM。

1.2K00
来自专栏北京马哥教育

python thrift 服务端与客户端使用

本文生动简洁介绍了如何通过python搭建一个服务端和客户端的简单测试程序。 一、简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了...

61970
来自专栏公众号_薛勤的博客

深入理解Spring Boot数据源与连接池原理

在使用Spring Boot数据源之前,我们一般会导入相关依赖。其中数据源核心依赖就是spring‐boot‐starter‐jdbc 如下

2.2K30
来自专栏黑泽君的专栏

day46_Webservice学习笔记_02

开发步骤:   第一步:导入jar包   第二步:创建SEI接口,要在接口上加入注解:@WebService

8810
来自专栏张善友的专栏

.net 2.0 你是如何使用事务处理?

     事务处理作为企业级开发必备的基础设施, .net 2.0通过System.Transactions对事务提供强大的支持.你还是在使用.net 1.x下...

22960
来自专栏佳爷的后花媛

php基础(一)

static 是静态变量,在局部函数中存在且只初始化一次,使用过后再次使用会使用上次执行的结果; 作为计数,程序内部缓存,单例模式中都有用到。

29220

扫码关注云+社区

领取腾讯云代金券