学Java Web开发的同窗都会接触到Servlet,可能在刚刚开始认识Servlet的时候并不可以准确理解它的本质。笔者认为,对于Servlet的准确理解和定位就是Servlet是一个Java接口。那么对于咱们开发者而言什么是接口?其实接口就是一种规范。这种规范可以帮助咱们在Web上与服务器产生数据交互,从而生成动态的Web。理论上,Servlet可以对任何类型的请求作出响应,因此,全部须要进行网络请求的类均可以经过Servlet来实现。因此,在开发Java服务器程序的时候,Servlet是一个不可或缺的部分。
在了解了什么是Servlet以后,还须要进一步了解Servlet的本质是什么?
Web服务器习惯处理静态页面,因此须要一个程序来帮忙处理动态请求(如当前时间)。Web服务器程序会将动态请求转发给帮助程序,帮助程序处理后,返回处理后的静态结果给web服务器程序。这样就避免了web服务器程序处理动态页面。Servlet的本质是一个帮助程序。在了解了Servlet的本质以后,咱们能够进一步来了解Servlet的主要方法和生命周期:
能够说 servlet的本质是接口,tomcat服务器上的一个对外接口。
Servlet中的主要方法:
init():servlet的初始化方法,仅仅执行一次;
service():处理请求和生成响应;
destroy():在服务器中止而且程序中的Servlet对象再也不使用的
时候调用,只执行一次;
生命周期:
实例化 Servlet¬——当Servlet容器启动或者容器检测到客户端请求时;
初始化 Servle——实例化后,容器调用Servlet的init()初始化对象;
处理请求 Servlet——获得客户端请求并作出处理时;
销毁 Servlet——当程序中的Servlet对象再也不使用的时候,或者Web服务器中止运行的时候
Servlet就是个类,能够把先它当作一个普通的类。
这个类最开始由容器好比tomcat加载并实例化。尚学堂陈老师强调在加载并实例化以后、初始化以前它就是个普通的类对象,以后容器会调用它的init方法并把servletconfig对象做为参数传给它,而后这个时候这货就变成一个名副其实的servlet了,而后才有资格接受浏览器的请求。而后若是是在mvc模式下,就做为控制器运行,进行逻辑运算。
那么Servlet的工做模式大概能够归纳为如下几点:
一、客户端请求该Servlet;加载Servlet类到内存;实例化并调用init()方法初始化该 Servlet;
二、service()(根据请求方法不一样调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions());
三、加载和实例化 Servlet。这项操做通常是动态执行的。然而,Server 一般会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet;
四、Server 建立一个Servlet的实例;
五、第一个客户端的请求到达Server;
六、Server 调用 Servlet 的 init() 方法(可配置为 Server 建立 Servlet 实例时调用,在 web.xml 中 <servlet> 标签下配置 <load-on-startup> 标签,配置的值为整型,值越小 Servlet 的启动优先级越高);
七、一个客户端的请求到达 Server;
八、Server 建立一个请求对象,处理客户端请求;Server 建立一个响应对象,响应客户端请求;
九、Server 激活 Servlet 的 service() 方法,传递请求和响应对象做为参数;
十、service() 方法得到关于请求对象的信息,处理请求,访问其余资源,得到须要的信息;
十一、service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet() 或 doPost() 或程序员本身开发的新的方法;
十二、对于更多的客户端请求,Server 建立新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象做为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。通常 Servlet 只初始化一次(只有一个对象),当 Server 再也不须要 Servlet 时(通常当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。程序员
以上内容从Servlet的本质、主要方法、生命周期和工做模式四个方面对Servlet进行较为细致的认识,在下面的视频教程中,也有对Servlet的详细讲解,相信可以对正在学Java的你有所帮助。
web