Servlet 是用java语言编写的服务器端程序,能够使服务器根据运行时的情况动态生成web页面,具体过程如下:
客户端向服务器端发送请求
服务器将请求信息发送给servlet
servlet根据请求进行响应,产生相应的html语句,并将这些语句传给服务器。
服务器将响应内容返回给客户端。
java Servlet内部采用线程方式提供服务,不需要为每个请求启动一个进程,采用线程的方式,可以同时为多个请求服务。
Servlet完全运行在java虚拟机上,Servlet具有平台无关性,而且是服务器无关的,编写Servlet要用到java servlet开发工具JSDK,JSDK包括了两个用于开发servlet的软件包,javax.servlet和javax.servlet.http
每个servlet程序都需要实现servlet接口,并且作为web容器中的组件,servlet有自己的生命周期,
init()方法在服务器装入servlet时执行,destroy()方法在服务器停止、卸载servlet时执行。Service()方法中实现主要的逻辑功能。
Servlet简介
servlet是一种动态加载的模块,可为服务器接受的请求提供服务,完全运行在java虚拟机上,由于Servlet在服务器端运行,所以并不依赖于浏览器的兼容性。
Servlet容器
负责处理客户请求,将请求传送给Servlet并把结果返回给客户。不同程度的容器实际实现可能有所变化,但容器与Servlet之间的接口是由ServletAPI定义。这个接口定义了Servlet容器在servlet上要调用的函数以及传递给servlet的对象类。
Servlet接口
Servlet提供公共接口public interface Servlet,该接口提供功能函数调用原型说明。其生命周期由javax.servlet.Servlet接口定义,当编写Servlet时必须直接或间接的实现这个接口。一般采用间接实现函数,即通过从javax.servlet.GenericServlet类或javax.servlet.http.HttpServlet类继承。
Servlet生命周期
Servlet的生命周期是指一个Servlet从被加载,初始化,响应请求,提供服务到被销毁的全过程。详细的处理过程如下:
- Servlet容器创建Servlet的一个实例。
- 容器调用该实例的init函数,进行初始化,如果初始化失败则直接卸载该实例。
- 如果容器对该Servlet有请求,则调用该实例的service函数,提供服务。如果服务请求出错,则抛出异常Unaviable
- 服务完成后,容器调用该实例的destroy函数。
销毁并标记该实例以供作为垃圾收集。
注意:一旦请求了一个Servlet,就没有办法阻止容器执行一个完整的生命周期
容器在Servlet首次被调用时,创建一个Servlet实例,并保持该实例在内存中。让其对所有的请求进行处理。容器可以决定在任何时候把这个实例从内存中移走。容器为每个Servlet创建一个单独的实例,但并不会每接到一个请求就创建一个新线程,而是使用一个线程池来动态的将线程分配到来的请求。