断断续续地翻译完了,给国内需要的朋友看。
原文地址:
https://beginnersbook.com/2013/05/servlet-tutorial/
Servlet 是运行在web服务器的JVM里的java程序。 用于开发动态web应用.
在我们深入研究之前,我们要理解什么是“动态web应用”。 一个web应用可以描述为一组web页面的集合,当我们动态地调用它,对于不同用户它只是不同的web页面,服务端将根据客户端的请求生成web页面。
静态web页和动态web页主要的不同是,静态页面如其命名对于任何用户都是相同的,但是动态web页是基于客户端的请求。例如,假设有一个web应用展示给你两个inpurt域和一个add按钮,当你输入两个数值并点击add按钮,它展示给你另外的一个两个输入值的和web页面,这个web应用自然是动态的,因为展示给你的第二个结果的页面是根据用户的输入,对于任何用户,它都不是静态的。
然而,你可以说servlet所做的事情可以通过CGI(Common Gateway Interface)来完成。这是对的,但是CGI有一些限制,例如执行,可伸缩性,可重用性等,而servlet没有这些限制。我不打算更细致地讨论CGI,但是我会告诉你为什么servlet是更好的。
CGI 的限制
服务器必须创建一个新的CGI进程去处理每个客户端请求。例如,加入有100个用户正在访问web应用,那么服务器必须创建100个CGI进程去处理他们的请求。因为服务器资源是有限的,所以每次都为一个新的请求创建一个进程是一个不可取的选择。因为服务器资源有限,所以服务器在同一个时刻处理超过一定数量的用户的请求。
Servlet为什么比CGI更好呢?
正如我上面提到的,并发的请求被服务器线程处理,这里是一个图形化展示:
(image)[https://beginnersbook.com/wp-content/uploads/2013/05/How_Servlet_Works.jpg]
Servlet 的特点
现在我们已经理解了什么是Servlet,它的应用是什么。让我们更深入地探索讨论它的主要特征。
1 可移植性
Servlet 使用java作为编程语言,因为java是平台独立的,所以servlet自然也是平台独立的。例如,你可以在Winidows操作系统上创建servlet,使用GlassFish作为web 服务器,然后可以使用Apache tomcat把它运行在其他的操作系统上,例如Unix,Linux,这个特点让servlet具有可移植性,这也是servlet对CGI的主要优势。
2 效率和可伸缩性
一旦一个servlet被部署,并载入到web服务器中,🗼可以立刻开始满足客户端的请求。web服务使用轻量级的线程调用servlet,因此多个客户端的请求可以同时被一个servlet满足通过使用java多线程的特点。相较于CGI服务器必须为每一个客户端请求初始化一个新的进程,servlet是十分的高效和可伸缩。
3 健壮性
通过继承java的高级特性(例如垃圾回收,异常处理,java安全管理器等),servlet不太统一出现内容管理问题和内存泄漏问题,这是的servlet开发程序根甘泉,更少出错。