网站大量收购闲置独家精品文档,联系QQ:2885784924

Servlet实例化.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Servlet实例化

如果没有设置loadOnStartup,则第一次请求的时候实例化 分三种情况: loadOnStartup 0 即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做实例化 这种情况和没有设置loadOnStartup是一样的。 loadOnStartup 0 web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化 loadOnStartup = 0 web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化 servlet实例化 解惑 本来一直以为 servlet是在容器启动的时候就实例化的,可是后来仔细想过,如果有1千个servlet,那服务器启动的时候就要实例化一千个类,那就是要在内存(堆中)中创建一千个对象,一次创建这么多对象,对于内存(堆中)而言负载量相当的大,有可能就会出现《内存溢出》的异常,所以后来想想,应该是在请求的时候才去实例化的吧,这样的话,对于容器而言不用启动的时候就加载那么多东西,感觉这就是请求时才加载的根本原因吧,纯属个人见解,希望各位有不同见解的提出来,大家一起讨论。 servlet 销毁 解惑 destroy方法在容器移除servlet 时执行,同样只执行一次。这个方法会在所有的线程的service()方法执行完成或者超时后执行,调用这个方法后,容器不会再调用这个servlet的方法,也就是说容器不再把请求发送给这个servlet。这个方法给servlet释放占用的资源的机会,通常用来执行一些清理任务 Servlet容器停止或者重新启动:Servlet容器调用Servlet对象的destroy方法来释放资源 大多数程序员都知道Servlet的生命周期,简单的概括这就分为四步:servlet类加载---实例化---服务---销毁。对这个过程只是肤浅了解下,对于servlet何时被销毁,还是不太情楚。下面我们描述一下Tomcat与Servlet是如何工作的,首先看下面的时序图. 1、Web Client 向Servlet容器(Tomcat)发出Http请求 2、Servlet容器接收Web Client的请求 3、Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中 4、Servlet容器创建一个HttpResponse对象 5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象 6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息 7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据 8、Servlet容器把HttpServlet的响应结果传给Web Client 对于Servlet容器(Tomcat)与HttpServlet是怎样进行交互的呢,看下类图 Servlet的框架是由两个Java包组成的:javax.servlet与javax.servlet.http。在javax.servlet包中定义了所有的Servlet类都必须实现或者扩展的通用接口和类。在javax.servlet.http包中定义了采用Http协议通信的HttpServlet类。Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这个接口。 在Servlet接口中定义了5个方法, 其中3个方法代表了Servlet的生命周期: 1、init方法:负责初始化Servlet对象。 2、service方法:负责响应客户的请求。 3、destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。 一、创建Servlet对象的时机 1、Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。 2、在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、 HttpResponse对象,从而调用Servlet对象的service方法。 3、Servlet的类文件被更新后,重新创建ServletServlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的load-on-startup属性决定 的。从中我们也能看到同

文档评论(0)

saa9099 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档