The Java EE Tutorial - Part III The Web Tier - 17 Java Servlet Technology
17 Java Servlet Technology
17.1 What Is a Servlet?
servlet是Java编程语言中一个工具类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。
The javax.servlet and javax.servlet.http packages provide interfaces and classes for writing servlets. All servlets must implement the Servlet interface, which defines lifecycle methods.
When implementing a generic(通用的) service, you can use or extend the GenericServlet class provided with the Java Servlet API.
The HttpServlet class provides methods, such as doGet and doPost, for handling HTTP-specific services.
servlet接口定义的是一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:
- 你初始化时要做什么
- 你销毁时要做什么
- 你接受到请求时要做什么
这是Java给的一种规范!
servlet接口定义的是一套处理网络请求的规范,但不会直接和客户端打交道。
servlet容器才是与客户端直接打交道的家伙,比如我们最常用的tomcat,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。
17.2 Servlet Lifecycle
servlet的生命周期由部署了servlet的容器控制。当一个请求被映射到servlet时,容器执行以下步骤。
- 如果servlet实例不存在,容器将会:
a. Loads the servlet class
b. Creates an instance of the servlet class
c. Initializes the servlet instance by calling the init method(参考 Creating and Initializing a Servlet) - 容器调用service方法,传递请求和响应对象。(Service methods are discussed in Writing Service Methods.)
如果需要移除servlet,容器通过调用servlet的destroy方法来完成servlet。有关更多信息,请参见结束Finalizing a Servlet。
生命周期:init——>service——>destroy——>jvm回收
17.2.1 Handling Servlet Lifecycle Events
通过定义侦听器对象,在生命周期事件发生时调用其方法,您可以监视并响应servlet生命周期中的事件。要使用这些侦听器对象,必须定义和指定 the listener class。
17.2.1.1 Defining the Listener Class
监听器,懒

浙公网安备 33010602011771号