什么是Servlet数据库
Servlet是一种服务器端的Java应用程序,具备独立于平台和协议的特性,能够生成动态的Web页面。它担当客户请求(Web浏览器或其余HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。编程
Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不一样,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。浏览器
Servlet相关名称安全
Web服务器性能优化
Web服务器,即Web Server,是Web(互联网)上的一台或多台机器。这些机器上部署了系统软件以及须要在网络中共享的信息。客户端能够经过HTTP协议访问部署到服务器上的资源。服务器
应用服务器网络
应用服务器,即Application Server,是网络上一台或多台机器。这些机器上部署了系统软件用觉得客户端以及其余服务器好比Web服务器提供数据服务、业务处理服务等。常见的应用服务器包括文件服务器、打印服务器以及运行着EJB组件的EJB服务器等。并发
Servlet容器框架
Servlet容器,即Servlet Container,是Web服务器或应用服务器的组成部分,它能够为Servlet提供请求和响应的服务,同时也负责管理Servlet的生命周期。Servlet容器也能够为Servlet提供其它的服务,好比资源服务、安全服务、线程的服务等。Servlet容器便可以集成到Web服务器或应用服务器中,也能够做为独立的程序嵌入到Web服务器或应用服务器中。
编程语言
Servlet做用
Servlet规范经过规定一个编程的框架来达到扩展服务器功能的目的,采用请求-响应模式提供基于Web的服务。当客户机发送请求至服务器时,服务器将请求信息转发给Servlet,Servlet处理请求并生成响应内容并将其传给Web服务器,而后再由Web服务器将响应返回给客户端。
Servlet实现过程
最先支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
- 客户端发送请求至服务器端
- 服务器将请求信息发送至Servlet
- Servlet生成响应信息并将其传给服务器。响应内容动态生成,一般取决于客户端的请求
- 服务器将响应返回给客户端
图为 “客户端与服务器Servlet交互过程”
其实,一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着能够经过“请求-响应”编程模型来访问的应用程序。虽然servlet能够对任何类型的请求产生响应,但一般只用来扩展Web服务器的应用程序。
Web容器
Web容器有两大功能,分别是:
- 提供编写Servlet程序所须要的API
- 提供驻留并执行Servlet程序的环境
这个Servlet运行环境能够完成Servlet程序的实例化、初始化、调用服务方法和去除Servlet的功能,也就是说Web容器能够管理Servlet的生命周期。Servlet驻留在Web容器中,并由Web容器进行管理。Web容器经过转发Web服务器和Servlet之间的请求与响应来充当二者之间的桥梁。
常见的Java Web容器包括:Tomcat,JBoss,WebLogic,WebSphere等。
正确认识Servlet
Servlet不能够独立运行
Servlet必须运行在Servlet容器中,由容器调用它的生命周期方法,上文的Web容器也有声明。所以,Servlet不须要main方法。
Servlet不是线程
Servlet就是一个普通的Java对象,它实现了Servlet接口,并无继承于Thread,所以,Servlet不是线程。当服务器接收到客户端请求时,它会在一个单独的线程中来执行Servlet的方法。
与传统CGI的比较
与传统的CGI和许多其余相似CGI的技术相比,Java Servlet具备更高的效率,更容易使用,功能更强大,具备更好的可移植性,更节省投资。在将来的技术发展过程当中,Servlet有可能完全取代CGI。
在传统的CGI中,每一个请求都要启动一个新的进程,若是CGI程序自己的执行时间较短,启动进程所须要的开销极可能反而超过实际执行时间。而在Servlet中,每一个请求由一个轻量级的Java线程处理(而不是重量级的操做系统进程)。
在传统CGI中,若是有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只须要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择。
1. 方便
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
2. 功能强大
在Servlet中,许多使用传统CGI程序很难完成的任务均可以轻松地完成。例如,Servlet可以直接和Web服务器交互,而普通的CGI程序不能。Servlet还可以在各个程序之间共享数据,使得数据库链接池之类的功能很容易实现。
3. 可移植性好
Servlet用Java编写,ServletAPI具备完善的标准。所以,为IPlanet Enterprise Server写的Servlet无需任何实质上的改动便可移植到Apache、MicrosoftIIS或者WebStar。几乎全部的主流服务器都直接或经过插件支持Servlet。
4. 节省投资
不只有许多廉价甚至免费的Web服务器可供我的或小规模网站使用,并且对于现有的服务器,若是它不支持Servlet的话,要加上这部分功能也每每是免费的(或只须要极少的投资)。
PS:Servlet入门只是Java Servlet系列的第一篇文章,做为Java Servlet的入门基础知识,后续还会有几篇文章来继续深刻的研究Servlet。文章还存在不足之处,欢迎各位大神批评指正。
参考:《servlet详细讲解》