Servlet工作原理

  Servlet容器,形象地说就是担当Web服务器和Servlet之间的中间人的角色。Web服务器将被请求的Servlet的URI和request对象转交给Servlet容器,然后由Servlet容器调用相应的Servlet程序处理该请求,并将Servlet的请求结果返回给web服务器。

  javax.servlet.Servlet是Servlet程序的一个重要接口,所有的Servlet必须实现这个接口或者继承该接口的实现类(例如HttpServlet)。Servlet接口定义了5个方法,集体定义如下:

为了更详细地了解Servlet容器的工作流程,下面先介绍一下Servlet的生命周期,Servlet的生命周期主要有以下几个过程。

1. 加载和实例化

  容器负责加载和实例化一个Servlet。实例化和加载可以发生在引擎启动的时候,也可以推迟到容器需要该Servlet为客户请求服务的时候。

2.  初始化

  init()方法用于 初始化操作,该方法在Servlet的整个生命周期中只被调用一次;初始化的过程主要是读取永久的配置信息,以及其他仅仅需要执行一次的任务。

3. 处理请求

  service()方法由Servlet容器调用,以允许Servlet响应一个请求。Servlet容器传递javax。servlet。ServletRequest对象和javax.servlet.ServletResponse对象。ServletRequest对象包含客户端HTTP请求信息,ServletrResponse则封装Servlet响应。

4. 移除实例

  调用destroy()方法(在整个生命周期中只被调用一次);服务器决定删除已经加载的Servlet实例之前将 调用Servlet的destroy()方法。

  当Servlet容器接收到一个请求后,首先到容器池内查找被请求的Servlet实例是否已经存在,若不存在,则会加载和实例化被请求的Servlet,并对它进行初始化;若已存在,则直接调用Servlet的service()方法,然后根据HTTP请求种类的不同,在service()内部调用doGet()或doPost()等方法处理相应的请求。当Servlet容器下一次接收到对该Servlet的请求时,则只需要重新创建一个ServletRequest对象和一个ServletResponse对象,并将它们作为参数传递给service()方法,同时新建一个线程处理该请求。最后当不需要该Servlet时,通过调用destroy()方法移除该实例。

猜你喜欢

转载自www.cnblogs.com/caozx/p/9204663.html