Servlet2.3 API
1.在Servlet2.3 API包含了两个包:Javax.servlet(通用servlet,提供 servlet/Web应用程序和Web容器之间的
合同(contract);从开发者看,提供了处 理客户请求和开发基于servlet的Web应用程序的一个标准库
.(javax.servlet包 为开发一个跨平台、跨servlet容器的Web应用程序提供了基础))和
javax.servlet.http(专用servlet,).
2.API包含了20个接口和16个类.(API指定了servlet请求和响应接口,而容器为他 们提供了基层的类实现)
3.javax.servlet接口
javax.servlet包由12个接口组成.Servlet容器提供了下列7个接口的实现:
.ServletConfig
.ServletContext
.ServletRequest
.ServletResponse
.RequestDispatcher
.FilterChain
.FilterConfig
这些是容器必须向servlet提供的对象,以便于像Web应用程序提供服务.
负责建立应用程序的程序员要实现剩下的5个接口:
.Servlet
.ServletContextListener
.ServletContextAttributeListener
.SingleThreadModel
.Filter
定义这些程序接口目的是使容器通过接口中定义的方法来调用相应的实现.
servlet容器只需要知道接口中定义的方法,而实现的细节则有开发者来完成.
4.javax.servlet类
在这个包中有7个类(加上两个异常类)
.GenericServlet
.ServletContextEvent
.ServletContextAttributeEvent
.ServletInputStream
.ServletOutputStream
.ServletRequestWrapper
.ServletResponseWrapper
GenericServlet抽象类可以由于开发独立于协议的servlet,并且只要求实现service()方法.
5.Servlet接口
所有的servlet必须实现Servlet接口.
6.servlet的存活期
Servlet接口定义了三个存活期方法,由servlet容器调用:
public void init(ServletConfig config)throws ServletException
public void service(ServletRequest req, ServletResponse res)throws ServletException,IOException
public void destroy()
7.获取初始化参数
Servlet接口定义了servlet必须实现的另一个方法:
public ServletConfig getServletConfig()
getServletConfig()方法设计用于返回面对ServletConfig对象的一个引用,其中包含着相应servlet的初始
化和启动参数.
8.servlet线程问题
容器/服务器收到许多的请求,并且这些请求经常会同时或者几乎同时出现,因此容器必须负责为每个请求建
立不同的线程.(service()方法可以由容器在不同的线程中调用,来处理众多的不同的请求).
9.有效的servlet存活期治理
当servlet实例被servlet容器从内存中泻出的时,该servlet容器将对该servlet调用destroy()方法.这个方
法只在所有针对service()方法调用都完成或者超出时限的时候调用一次.
10.获取关于servlet的信息
在Servlet接口中有更多的方法需要有servlet实现:
public String getServletInfo() throws ServletException, IOException
getServletInfo()方法设计用于返回一个String对象,其中包含着关于该servlet的信息.
11.GenericServlet类
GenericServlet类是Servlet接口的一个抽象类的实现.
12.存活期方法
servlet初始化由一个init()方法完成.
public void init(ServletConfig config)
public void init()
init(ServletConfig)方法是Servlet接口要求的.
当容器调用时,init(ServletConfig)方法的GenericServlet实现在servlet中存储对响应ServletConfig对象
的一个引用,然后调用上面的第二个init()方法.在代码中调用超类(superclass)方法(通过super.init(config)).