ServletAPI中有4个Java包:
1、javax.servlet:其中包含定义Servlet和Servlet容器之间契约的类和接口
2、javax.servlet.http:其中包含定义HTTPServlet和Servlet容器之间契约的类和接口
3、javax.servlet.annotation: 其中包含Servlet、Filter、Listener的标注,它还为被标注元件定义元数据
4、javax.servlet.descriptor :其中包含提供程序化登录web应用程序的配置信息的类型。
二. Servlet技术概述
Servlet技术的核心是Servlet接口,他是所有Servlet类必须直接或间接实现的一个接口,在编写实现Servlet的Servlet类的时候是直接实现它,在扩展实现这个接口的类的时候就是间接实现它。
Servlet接口中定义了Servlet与Servlet容器之间的契约,这个契约归结起来就是:Servlet容器将Servlet类加载到内存,并在Servlet类的实例上调用具体的方法。在一个应用程序中每种Servlet类种只能有一个实例。
用户请求致使Servlet容器调用了Servlet类种的service方法,并且传入一个ServletRequest实例和一个ServletResponse的实例,ServletRequest中封装了当前的HTTP请求,
因此Servlet开发人员不必解析和操作原始的HTTP请求数据.ServletResponse表示=当前用户的HTTP响,使得将响应发回客户端变得十分容易.
对于每一个应用程序,Servlet容器还会创建一个Servlet Context的实例,这个对象中封装了上下文的环境详情,每个上下文只有一个ServletContext.每个Servlet示例也都有一个封装Servlet配置的ServletConfig
三, Servlet接口
Servlet接口中定义了5个方法:
1、void init(ServletConfig config) throws ServletException
2、void service(ServletRequest request, ServletResponse response) throws ServletException,java.ioi.IOException
3、void destroy()
4、java.lang.String getServletInfo()
5、ServletConfig getServletConfig()
这里需要注意的是,在编写Java方法签名的时候,对于与包含该方法的类型不处于同一个包中的类型的时候要使用类的全名.所以在service方法中javax.servlet.ServletException的签名中可以不用写包的名称,但是java.io.IOException则要编写完整的类名称.
在这五个方法中,init、service和destroy是生命周期方法.Servlet容器根据以下规则调用这三个方法:
init: 当Servlet第一次被请求的时候Servlet容器会调用这个方法,在后续的请求中不会被再次调用
service: 每当请求Servlet的时候多会调用一次
destroy: 当销毁Servlet的时候,该方法被调用.