Java Servlet技术简称Servlet技术,是Java开发Web应用的底层技术。由Sun公司于1996年发布,用来代替CGI(当时生成Web动态内容的主流技术)。CGI技术的主要问题是每个Web请求都需要新启动一个进程来处理。创建进程会消耗不少CPU周期,导致难以编写可扩展的CGI程序。而Servlet有着比CGI程序更好的性能,因为Servlet在创建后(处理第一个请求时)就一直保持在内存中。此后,SUN公司发布了JavaServer Pages(JSP)技术,以进一步简化Servlet 程序开发。
Servlet/JSP应用架构
狭义的Servlet指javax.servlet包中的一个接口,而广义的Servlet则是指实现了这个接口的类。一个Servlet应用有一个或多个Servlet程序。
JSP从根本上说是一个简化的Servlet设计,它是在传统的HTML代码中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件。JSP文件会被转换和编译成Servlet程序。
Servlet应用无法独立运行,必须运行在Servlet容器中。Servlet容器将用户的请求传递给Servlet应用,并将结果返回给用户。由于大部分Servlet应用都包含多个JSP页面,因此更准确地说是“Servlet/JSP应用”。Web用户通过IE、Firefox或谷歌等浏览器来访问Servlet应用。通常,浏览器又叫Web客户端。Web服务器和Web客户端间通过HTTP协议通信,因此Web服务器也叫HTTP服务器。
下图展示了Servlet/JSP应用的架构
Servlet/JSP容器是一个可以同时处理Servlet和静态内容的Web容器。过去,由于通常认为HTTP服务器比Servlet/JSP容器更加可靠,因此人们习惯将Servlet/JSP容器作为HTTP服务器的一个模块。这种模式下,HTTP服务器用来处理静态资源,而Servlet/JSP容器则负责生成动态内容。如今,Servlet/JSP容器更加成熟可靠,并被广泛地独立部署。Apache Tomcat和Jetty是当前最流行的Servlet/JSP容器,并且它们是免费而且开源的。
Servlet和JSP只是Java企业版中众多技术中的两个,其他JavaEE技术还有JMS(Java Message Service),EJB(Enterprise JavaBean)、JSF(JavaServer Faces)以及Java持久化(Java Persistence)等,完整的Java EE 技术列表可以访问如下地址:
Java EE - Technologies | Oracle Technology Network | Oracle
要运行JavaEE应用,需要一个JavaEE容器,例如GlassFish、JBoss、Oracle Weblogic或者IBM WebSphere。诚然,我们可以将一个Servlet/JSP应用部署到一个Java EE容器上,但一个Servlet/JSP容器就已经满足需要了,并且更加轻量。当然,Tomcat和Jetty不是JavaEE容器,因此无法运行EJB或JMS技术。
声明:本文内容节选自《Servlet、JSP和Spring MVC初学指南》(Budi Kurniawan[加] Paul Deck[美] 著)