Java Servlet 技术是Java体系中开发Web应用的底层技术。1996年Servlet和JSP由SUN系统公司发布,以替代CGI技术,随后标准化来支持产生Web动态内容。CGI技术为解个请求创建相应的进程,但是,创建进程会耗费大量的CPU周期,最终导致很难编写可伸缩的CGI程序。相对于CGI程序,一个Servlet则快多了,这是因为当一个Servlet为相应第一次请求而被创建后,会驻留在内存中,以便响应后续请求。
JSP (JavaServer Pages)技术于19999年发布,以便简化Servlet开发。
从Servlet技术出现的那天起,人们开发了大量的Web框架来帮助程序员快速编写Web应用程序。这些开发框架让开发人员能更关注业务逻辑,减少编写“相似”的代码片段。尽管如此,开发人员依然需要去理解Servlet技术的基础概念。尽管实践中会应用些诸如SpringMVC、Struct2或者JSF等强大的开发框架,但如果没有深入理解Servlet和JSP技术,则无法有效和高效地开发。
Servlet 是运行在Servlet容器中的Java程序,而Servlet容器或Servlet引擎相当于一个Web服务器,但是可以产生动态内容,而不仅是静态资源。
Servlet当前的版本为3.1, 其规范定义可见JSR (Java Specification Request) 340,基于Java标准版本6及以上。JSP 2.3规范定义在JSR245。
一个Servlet是一个Java程序。一个Servlet应用包含了一个或多个Servlet,一个JSP页面会被翻译并编译成个Servlet。
一个Servlet应用运行在一个Servlet容器中,它无法独立运行。Servlet容器将来自用户的请求传递给Servlet应用。并将Servlet应用的响应返回给用户。由于大部分Servlet应用都会包含些JSP界面,故称Java Web应用为"Servlet/JSP"应用会更恰当些。
Web用户通过一个诸如IE、火狐或者Chrome等Web浏览器来访问Servlet应用。Web浏览器又被称为Web客户端。下图展示了一个典型的Servlet/JSP应用架构。
Web服务端和WEb客户端基于HTTP通信。因此,Web 服务嘴往往也称为HTTP务端。
一个Servlet/JSP容器是个能处理Servlet以及静态资源的Web服务端。过去,由于HTTP服务器更加健壮,所以人们更愿意将Servlet/JSP容器作为HTTP服务器(如Apache HTTP服务器)的一个模块来运行,在这种场景下,Servlet/JSP容器用来产生动态内容,而HTTP服务器处理静态资源。今天,Servlet/JSP容器已经更加成熟,并且被广泛地独立部署。Apache Tomcat和Jetty作为最流行的Servlet/JSP容器,免费面且开源。