Servlet
图解Servlet容器在整个web服务流程的位置。
我们先来看一眼这张图,有个大致影响。在逐一解释相关概念后,再回过头来形象的记忆。
Servlet学术定义。
Servlet是基于Java技术的web组件,托管于Servlet容器,用于生成动态内容。
A servlet is a Java™ technology-based Web component, managed by a container, that generates dynamic content.(摘自官方文档)
Servlet容器
上文中提到了Java技术、web组件、Servlet容器、动态内容。关于Java技术就不在这里讨论了。要了解其它三个的含义,我们的先从Servlet容器说起。
以下是关于Servlet的容器的官方描述。从中我们提取三个关键的知识点来描述。
- 首先Servlet是web server或者application server的一部分。
- 需要持支基于MIME的解码和编码的请求和响应(http协议相关,实际上也就是要支持http协议)。
- 能够创建,并管理servlet的整个生命周期。
The servlet container is a part of a Web server or application server that provides the network services over which requests and responses are sent, decodes MIME-based requests, and formats MIME-based responses. A servlet container also contains and manages servlets through their lifecycle.(摘自官方文档)
从这三点中,我们可以看出一个servlet容器应该具备的三大基本特征。关于第二、三点,我们在后面展开讨论。这里我们先说说什么是web服务器和应用服务器。
首先我们来说一下web服务器。由于早期的互联网全是静态的网页没有动态交互功能,我们把这种仅提供静态页面内容的服务器就称为web服务器。后来由于技术的发展,互联网的内容需要动态交互因此添加了许多其他功能,我们把这类综合性的web服务器称为应用服务。把上述两类服务器带servlet功能的就称为servlet容器。
通常的web服务器,我们熟悉的有Apache、nginx。应用服务器,如tomcat、weblogic、jetty、jboss等。这些应用服务为由于实现了Servlet容器的功能,也是Servlet容器。
至于为什么是一个web组件,是用于生产动态内容的。也就不言而喻了。比如你要登录一个网站,那么纯静态的网页是不可能办到的,就需要servlet技术作为支持,因此它也就算是web服务中的一部分了,也就是一个web组件了。动态内容就更容易了,现在网页上很多内容都是实时变动的,静态网页肯定是办不到了,只能通过servlet后台编码来动态生产内容在返回给浏览器。