欢迎来到天天文库
浏览记录
ID:57690537
大小:36.00 KB
页数:2页
时间:2020-09-01
《servlet的定义及其生命周期.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、servlet的定义及其生命周期Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。 在代码中,Servlet生命周期由接口javax.servlet.Servlet定义。所有的JavaServlet必须直接或间接地实现javax.servlet.Servlet接口,这样才能在ServletEngine上运行。ServletEngine提供networkService,响应MIMErequest,运行ServletContainer。javax.servlet.Servlet接口定义了一些方法,在Servlet的生命周期中,
2、这些方法会在特定时间按照一定的顺序被调用。如下图所示。 Servlet的生命周期 Servlet如何被加载(Load)、被实例化(Instantiated) ServletEngine负责实例化和加载Servlet,这个过程可以在ServletEngine加载时执行,可以在Servlet响应请求时执行,也可以在两者之间的任何时候执行(配置为loadonstart up的servlet是在容器启动时被加载的)。 Servlet如何被初始化(Initialized)
3、ServletEngine加载好Servlet后,必须要初始化它。初始化时Servlet可以从数据库里读取初始数据,建立JDBCConnection,或者建立对其他有价值的资源的引用。 在初始化阶段,Init()方法被调用。这个方法在javax.servlet.Serlet接口中定义。Init()方法以一个Servlet配置文件(ServletConfig型)为参数。Servletconfiguration对象由ServletEngine实现,可以让Servlet从中读取一些name-value对的参数值。ServletConfig对象还可以让Servlet接受一个Servlet
4、Context对象。 Servlet如何处理请求 Servlet被初始化以后,就处于能响应请求的就绪状态。每个对Servlet的请求由一个ServletRequest对象代表。Servlet给客户端的响应由一个ServletResponse对象代表。当客户端有一个请求时,ServletEngine将ServletRequest和ServletResponse对象都转发给Servlet,这两个对象以参数的形式传给Service方法。这个方法由javax.servlet.Servlet定义并由具体的Servlet实现。 Servlet还可以实现ServletRequest和S
5、ervletResponse接口。ServletRequest接口可以让Servlet获取客户端请求中的参数,如formdata、request信息、协议类型,等等。Servlet可以从ServletInputStream流中读取request数据。ServletResponse接口允许Servlet设置responseheaders和statuscodes。实现这个接口可以使Servlet能访问ServletOutputStream流用来向客户端返回数据。 Servlet如何被释放 ServletEngine没有必要在Servlet生命周期的每一段时间内都保持Servlet
6、的状态。ServletEngine可以随时随意使用或释放Servlet。因此,你不能依赖Servletclass或其成员存储信息。当ServletEngine判断一个Servlet应当被释放时(比如说Engine准备Shutdown或需要回收资源),Engine必须让Servlet能释放其正在使用的任何资源,并保存持续性的状态信息。这些可以通过调用Servlet的destroy方法实现。在ServletEngine释放一个Servlet以前,必须让其完成当前实例的service方法或是等到timeout(如果Engine定义了timeout)。当Engine释放一个Servlet以后
7、,Engine将不能再将请求转发给它,Engine必须彻底释放该Servlet并将其标明为可回收的(给garbagecollection)。 在ServletAPI中最重要的是Servletinterface。所有的Servlets执行这个interface的方式有很多种:或者是直接的,或者通过extending这个class执行它,如HttpServlet。这个Servletinterface提供并安排Servlet与客户端联系的方法。Servlet
此文档下载收益归作者所有