JavaWeb基础总结:Servlet专题

最近工作中有部分整改老接口的任务,大部分与Spring的拦截器,Tomcat相关,改到一些底层的代码发现,对基础J2EE的知识有些遗忘,需要频繁查阅,索性从头系统的整理一下Servlet和Filter的知识。

Servlet是什么

Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序。具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。通常来说,Servlet 是指所有实现了 Servlet 接口的类。Servlet的主要工作流程如下图:

JavaWeb基础总结:Servlet专题

 

Servlet 的请求首先会被 HTTP 服务器(如 Apache)接收,HTTP 服务器只负责静态 HTML 页面的解析,而 Servlet 的请求会转交给 Servlet 容器,Servlet 容器会根据 web.xml 文件中的映射关系,调用相应的 Servlet,Servlet 再将处理的结果返回给 Servlet 容器,并通过 HTTP 服务器将响应传输给客户端。

Servlet 主要用于处理客户端传来的 HTTP 请求,并返回一个响应,它能够处理的请求有 doGet() 和 doPost() 等。
Servlet 由 Servlet 容器提供,Servlet 容器是指提供了 Servlet 功能的服务器(如 Tomcat)。
Servlet 容器会将 Servlet 动态加载到服务器上,然后通过 HTTP 请求和 HTTP 应与客户端进行交互。

Servlet的相关类及接口

Sun 公司提供了一系列的接口和类用于 Servlet 技术的开发,其中最重要的接口是 javax.servlet.Servlet。在 Servlet 接口中定义了 5 个抽象方法,具体如下表:

 Servlet接口的抽象方法 方法声明 功能描述
void init(ServletConfig config)   容器在创建好 Servlet 对象后,就会调用此方法。该方法接收一个 ServletConfig 类型的参数,Servlet 容器通过该参数向 Servlet 传递初始化配置信息  
ServletConfig getSendetConfig()   用于获取 Servlet 对象的配置信息,返回 Servlet 的 ServletConfig 对象  
String getServletInfo()   返回一个字符串,其中包含关于 Servlet 的信息,如作者、版本和版权等信息  
voidservice (ServletRequest request,ServletResponse response)   负责响应用户的请求,当容器接收到客户端访问 Servlet 对象的请求时,就会调用此方法。
容器会构造一个表示客户端请求信息的 ServletRequest 对象和一个用于响应客户端的 ServletResponse 对象作为参数传递给 service() 方法。
在 service() 方法中,可以通过 ServletRequest 对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用 ServletResponse 对象的方法设置响应信息
 
void destroy()   负责释放 Servlet 对象占用的资源。当服务器关闭或者 Servlet 对象被移除时,Servlet 对象会被销毁,容器会调用此方法  

Servlet 接口中的五个方法,其中 init()、service() 和 destroy() 方法可以表现 Servlet 的生命周期,它们会在某个特定的时刻被调用。
针对 Servlet 的接口,Sun 公司提供了两个默认的接口实现类:GenericServlet HttpServlet。其中,GenericServlet 是一个抽象类,该类为 Servlet 接口提供了部分实现,它并没有实现 HTTP 请求处理。
HttpServletGenericServlet 的子类,它继承了 GenericServlet 的所有方法,并且为 HTTP 请求中的 GET 和 POST 等类型提供了具体的操作方法。通常情况下,编写的 Servlet 类都继承自 HttpServlet,在开发中使用最多的也是 HttpServlet 对象。

HttpServlet 类的常用方法 方法声明 功能描述
protected void doGet (HttpServletRequest req, HttpServletResponse resp)   用于处理 GET 类型的 HTTP 请求的方法  
protected void doPost(HttpServletRequest req, HttpServletResponse resp)   用于处理 POST 类型的 HTTP 请求的方法  

 

Servlet的生命周期

在java程序中,任何对象都有其生命周期,Servlet也不例外;

JavaWeb基础总结:Servlet专题

图 中描述了 Servlet 的生命周期。Servlet容器加载之后,按照功能的不同,大致可以将 Servlet 的生命周期分为三个阶段,分别是初始化阶段、运行阶段和销毁阶段。

初始化阶段

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxpzd.html