http://book.51cto.com/art/200811/97628.htm
http://blog.csdn.net/whuqin/archive/2010/10/23/5960730.aspx
http://blog.csdn.net/rcom10002/archive/2010/10/26/5966227.aspx
http://hu437.iteye.com/blog/719355
4.1 Servlet API
图4-1显示了Servlet API中的主要接口与类的类框图。
(点击查看大图)图4-1 Servlet API的类框图 |
4.1.1 Servlet接口
Servlet API的核心是javax.servlet.Servlet接口,所有的Servlet类都必须实现这一接口。在Servlet接口中定义了5个方法,其中有3个方法都由Servlet容器来调用,容器会在Servlet的生命周期的不同阶段调用特定的方法。
init(ServletConfig config)方法:负责初始化Servlet对象。容器在创建好Servlet对象后,就会调用该方法。
service(ServletRequest req, ServletResponse res)方法:负责响应客户的请求,为客户提供相应服务。当容器接收到客户端要求访问特定Servlet对象的请求时,就会调用该Servlet对象的service()方法。
destroy()方法:负责释放Servlet对象占用的资源。当Servlet对象结束生命周期时,容器会调用此方法。
Servlet接口还定义了以下两个返回Servlet的相关信息的方法。JavaWeb应用中的程序代码可以访问Servlet的这两个方法,从而获得Servlet的配置信息及其他相关信息。
getServletConfig():返回一个 ServletConfig 对象,在该对象中包含了 Servlet的初始化参数信息。
getServletInfo():返回一个字符串,在该字符串中包含了Servlet的创建者、版本和版权等信息。
在 Servlet API 中,javax.servlet.GenericServlet 抽象类实现了 Servlet 接口,而javax.servlet.http.HttpServlet 抽象类是 GenericServlet 类的子类。当用户开发自己的Servlet类时,可以选择扩展GenericServlet类或者HttpServlet类。图4-2显示了 Servlet接口及其实现类的类框图。
(点击查看大图)图4-2 Servlet接口及其实现类的类框图 |
Java Servlet API中接口与类的作用与生命周期作了归纳。这些接口与类的生命周期都由Servlet容器来控制,容器会在特定的时刻创建或销毁它们的实例。
表4-1 Servlet API中的主要的接口与类的作用和生命周期
(续表)
在Servlet接口中定义了3个与生命周期相关的方法。
init():当容器初始化Servlet时调用该方法。
service():当客户端请求访问Servlet时,容器调用该方法。
destroy():当容器销毁Servlet时调用该方法。
以本章4.1.7节的例程4-4的HelloServlet类为例,在编写用于响应HTTP请求的Servlet时,通常涉及下列4个步骤。
(1)扩展HttpServlet抽象类。
(2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法。
(3)读取HTTP请求信息,例如通过HttpServletRequest 对象来读取请求参数。
在HttpServletRequest中提供了以下用于检索参数信息的方法。
getParameter(String name):返回与参数名name对应的参数值。
getParameterNames():返回一个Enumeration对象,它包含了所有的参数名信息。
getParameterValues():返回一个Enumeration对象,它包含了所有的参数值信息。
(4)生成 HTTP 响应结果。通过 HttpServletResponse 对象可以生成响应结果,HttpServletResponse 对象有一个getWriter()方法,该方法返回一个PrintWriter对象。使用PrintWriter的print()或println()方法可以向客户端发送字符串数据流。