《深入剖析Tomcat》一2.1 javax.servlet.Servlet接口

简介: 本节书摘来自华章出版社《深入剖析Tomcat》一书中的第2章,第2.1节,作者(美)Budi Kurniawan,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.1 javax.servlet.Servlet接口

Servlet编程需要使用到javax.servlet和javax.servlet.http两个包下的接口和类。在所有的类和接口中,javax.servlet.servlet接口是最为重要。所有的servlet程序都必须实现实现该接口或继承自实现了该接口的类。
在Servlet接口中声明了5个方法,方法签名如下:
image

在Servlet接口中声明的5个方法里,init()、service()和destroy()方法是与servlet的生命周期相关的方法。当实例化某个servlet类后,servlet容器会调用其init()方法进行初始化。servlet容器只会调用该方法一次,调用后则可以执行服务方法了。在servlet接收任何请求之前,必须是经过正确初始化的。servlet程序员可以覆盖此方法,在其中编写仅需要执行一次的初始化代码,例如载入数据库驱动程序、初始化默认值等。一般情况下,init()方法可以留空。

当servlet的一个客户端请求到达后,servlet容器就调用相应的servlet的service()方法,并将javax.servlet.servletRequest对象和javax.servlet.servletResponse对象作为参数传入。ServletRequest对象包含客户端的HTTP请求的信息,ServletResponse对象则封装servlet的响应信息。在servlet对象的整个生命周期内,service()方法会被多次调用。

在将servlet实例从服务中移除前,servlet容器会调用servlet实例的destroy()方法。一般当servlet容器关闭或servlet容器要释放内存时,才会将servlet实例移除,而且只有当servlet实例的service()方法中的所有线程都退出或执行超时后,才会调用destroy()方法。当servlet容器调用了某个servlet实例的destroy()方法后,它就不会再调用该servlet实例的service()方法了。调用destroy()方法让servlet对象有机会去清理自身持有的资源,如内存、文件句柄和线程等,确保所有的持久化状态与内存中该servlet对象的当前状态同步。

代码清单2-1展示了名为PrimitiveServlet的servlet的代码,该servlet非常简单,可以用来测试本章中的servlet容器应用程序。PrimitiveServlet类实现了javax.servlet.Servlet接口(所有的servlet都要实现该接口),提供了Servlet接口中声明的5个方法的实现。PrimitiveServlet类所做的事情非常简单。每次调用init()、service()和destroy()方法时,Servlet都会将方法名写入标准控制台中。此外,service()方法会从servletResponse对象中获取java.io.PrintWriter对象,并将字符串发送到客户端浏览器。
image

相关文章
|
6月前
|
前端开发 应用服务中间件 C++
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。(二)
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。(二)
|
5月前
|
关系型数据库 MySQL Linux
【Linux】jdk & Tomcat & MySql的安装及Linux后端接口部署
【Linux】jdk & Tomcat & MySql的安装及Linux后端接口部署
107 0
|
7月前
|
安全 Java 应用服务中间件
【JavaWeb】Tomcat底层机制和Servlet运行原理
网络通信:Tomcat使用Java的Socket API来监听特定的端口(通常是8080),接收来自客户端的HTTP请求。 线程池:Tomcat使用线程池来处理并发的请求。当有新的请求到达时,Tomcat会从线程池中获取一个空闲线程来处理该请求,这样可以提高处理效率。 生命周期管理:Tomcat负责管理Servlet和其他Web组件的生命周期,包括初始化、请求处理和销毁等阶段。(init(), run())
|
6月前
|
JSON 前端开发 JavaScript
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。(一)
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。
|
3月前
|
前端开发 Java 应用服务中间件
HTTP&Tomcat&Servlet
HTTP&Tomcat&Servlet
59 0
|
9月前
|
关系型数据库 MySQL 应用服务中间件
tomcat与servlet程序出现乱码的解决方法(已解决)
tomcat与servlet程序出现乱码的解决方法(已解决)
71 0
|
4月前
|
前端开发 关系型数据库 MySQL
J2EE项目部署与发布(Linux版本)->jdk&tomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署
J2EE项目部署与发布(Linux版本)->jdk&tomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署
51 0
|
4月前
|
关系型数据库 MySQL Java
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
44 0
|
6月前
|
Java 应用服务中间件 Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
29 0
|
7月前
|
Java 数据库连接 应用服务中间件
java-初识Servlet,Tomcat,JDBC
我们在此文章知道了servlet 是基于Java语言编写的服务器端程序,可以处理Web容器(如Tomcat)发送过来的HTTP请求,也写了实例代码,另外servlet的过滤器,可以用来处理请求前与请求后的一些逻辑。;接着简单了介绍了tomcat,知道Tomcat 作为一个 Web 服务器,可以通过 Servlet 容器来管理和运行 Servlet;最后介绍jdbc,以及jdbc连接数据库的实例代码。
52 0