周期
servlet生命周期通过web容器控制

Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。
初始化阶段:
1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。
3,Servlet容器创建一个servlet对象。
4,Servlet容器调用servlet对象的init方法进行初始化。
运行阶段:
当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。
然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的
信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和
servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。
销毁阶段:
当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,
同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放
servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。
在这里该注意的地方:
在servlet生命周期中,servlet的初始化和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数
接口
我们常见的J2EE中关于servlet的类和接口有很多,我们常见的是servlet接口.这个是所有servlet都要实现的一个接口.还有GenericServlet即通用servlet.是独立于协议的servlet.它实现了servlet接口.我们常用到的是HttpServlet它是用在http协议上的servlet.
我们可使用以下两种方式之一创建Servlet:
● 实现Servlet接口
● 扩展的GenericServlet类或HttpServlet类
在创建Servlet后,还要描述Servlet细节,以及在运行时环境中,Servlet及Web应用程序中其他关联Web组件的附加信息。规范将XML文档中嵌入的这些信息称为部署描述符,供Web容器在部署组件时使用。在创建和部署Servlet后,Servlet成为Web服务器“容器”中的“实例”。
我们可以创建两类的servlet
一种是单线程的servlet.实现SingleThreadModel.这时web容器将所有的客户请求转发给一个实例.
另一种是多线程的servlet.多线程的servlet有很多地方需要注意.很容易造成数据的不一致.
处理请求
在servlet默认情况下,无论你是get还是post请求,都会经过service方法来处理,然后转向doGet或doPost方法;如果form的提交方式是get,则转向doGet方法,如果是post方式,则转向doPost方法。
当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。
在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。
ServletContext
Servlet是一个接口,呈现了Web应用的Servlet视图。
Web服务器能支持若干Web应用程序。每个Web应用程序又能支持一个或多个Servlet。同一个Web应用程序的多个Servlet需要共享Web应用程序环境的资源。为此,Servlet规范提供了ServletContext接口。
对于ServletContext而言,最重要的上下文信息包括:
● 初始化参数
● 上下文属性
● 资源
初始化参数。
初始化参数用来初始化Web应用程序。这些参数由部署描述符中的“键-值”对提供。
ServletContextAPI允许通过getInitParameter()和getInitParameterNames()等方法访问这些初始化参数。
上下文属性。
上下文属性是一组应用程序属性,由Web应用程序的Servlet共享。可设置和获得参数,也可通过编程方法,从Web应用程序中删除上下文属性。ServletContextAPI允许通过多种方法访问上下文属性,如setAttribute()、getAttribute()、removeAttribute()和getAttributeNames()等。
资源。
“静态”内容文件的层次,是Web应用程序的一部分,被称为“Web应用程序资源”,包括HTML、GIF和JPEG等文件。ServletContextAPI允许通过多种方法访问这些资源,例如getResource()和getResourceAsStream()等。
过滤器
Filter是轻量级Web组件,能及时转换HttpServletRequest和HttpServletResponse对象的头和内容。Filter和Servlet都是Web应用程序的一部分,都用生命期方法管理。
作用
1,任何系统或网站都要判断用户是否登录。
2,网络聊天系统或论坛,功能是过滤非法文字
3,统一解决编码
4,数据压缩和解压缩

创建
1,生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。
2,重写接口里面的三个方法:init,doFilter,destroy。
3,然后在web.xml配置过滤器。

filter从javax.servlet.FilterConfig对象中获得Servlet上下文和部署参数
部署

事件监听器
对request,session,application3种事件的监听。
作用:负责监听各种事件的发生并做出相应的响应。
Request代表一次请求,Session代表一次回话,Application(Servlet上下文)代表一个Web应用。

本文介绍了Servlet的生命周期,包括初始化、运行和服务销毁阶段,并探讨了如何处理请求、使用ServletContext及实现过滤器等内容。
185





