现在web开发很少直接全部用Servlet来做,但是了解Servlet仍然是很必要的,可以帮助我们更加了解Java web的基本实现。
文章有以下部分:
1.Servlet是什么?有哪些优点?
2.Servlet的生命周期
3.实现方法
1.Servlet是什么?有哪些优点?
1.1基本概念
Servlet是什么?
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
另一个blog上的说法:处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)。
B/S:浏览器/服务器。 浏览器通过网址来访问服务器,比如访问百度,在浏览器中输入www.baidu.com,这个时候浏览器就会显示百度的首页。
小结:Servlet本质上是一个Java接口,可以响应http请求。在B/S模式(浏览器/服务器)下,浏览器向服务器发送请求(request)后,会调用对应的实现类的方法,并且将响应(response)返回给浏览器。1.2优点
总结就一句:高效易用,可移植性好。
a.高效
在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
c.功能强大在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
d.可移植性好Servlet用Java编写,Servlet API具有完善的标准。因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。
2.Servlet的生命周期
1.加载Servlet类
类加载器负责加载servlet类。 当Web容器接收到servlet的第一个请求时,将加载servlet类。
2.创建Servlet实例
Web容器在加载servlet类之后创建一个servlet的实例。servlet实例在servlet生命周期中只创建一次。
3.调用init方法
Web容器在创建servlet实例后调用init方法一次。 init方法用于初始化servlet。 它是javax.servlet.Servlet接口的生命周期方法。
4.调用service方法每当接收到servlet的请求时,Web容器都会调用service方法。servlet容器通过产生多个线程来处理多个请求,每个线程执行servlet的单个实例的service()方法。
如果servlet未初始化,则遵循上述前三个步骤,然后调用service方法。 如果servlet被初始化,它调用service方法。 请注意,servlet仅初始化一次。
5.调用destroy方法从服务中删除servlet实例之前,即在停止服务器或取消部署项目时,Web容器调用destroy方法。它使servlet有机会清理所有资源,例如内存,线程等。
这些方法由web容器调用。
3.实现方法
实现方法有三种:
1.实现Servlet接口
2.继承GenericServlet
3. 继承HttpServlet
常用的是第三种。
下一篇会详细的说如何创建一个最简单的Servlet~~