用servlet可以创建协议、平台无关的web应用程序,applet运行于浏览器的jre中,而servlet则运行于web应用服务器的servlet容器中,servlet没有用户图形界面,servlet和web应用服务器的servlet容器交互以接收请求返回响应。 请求最先由web应用服务器的servlet容器处理并传给servlet,servlet通过web应用服务器返回响应给客户端。客户端程序可以使用任何可向web应用服务器发送请求的语言开发。
servlet最大的优势在于它的高性能,servlet采用了和cgi截然不同的运行方式,首先servlet在第一次初始化时装载并驻留在内存中,以后直接从内存中运行;其次,在默认情况下servlet以单实例多线程的方式工作,一个新请求到达后,servlet实例开启一个新的线程服务这个请求。
servlet 结构和线程安全
所有的servlet都直接或间接地实现javax.servlet.servlet接口,这些接口规定了servlet如何与servlet容器进行通讯的方法,此外还定义了servlet的生命周期。genericservlet是和协议无关的通用servlet,httpservlet是专门针对http协议开发的servlet,web应用程序的servlet都直接继承httpservlet。其类的继承体系如下图所示: