Servlet 工作原理

来源:互联网 发布:淘宝sns 编辑:程序博客网 时间:2024/06/13 18:41

Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。

Servlet编程,需要引用以下两个类和接口:javax.servlet 和 javax.servlet.http,在这些类和接口中, javax.servlet.Servlet接口尤为重要。所有的Servlet 必须实现这个接口或继承已实现这个接口的类

Servlet 接口有五个方法,如下

1.public void init(ServletConfig config) throws ServletException  初始化方法

2.public void service(ServletRequest request, ServletResponse response)throws ServletException, java.io.IOException    

3.public void destroy()  

4.public ServletConfig getServletConfig() 

5.public java.lang.String getServletInfo()  

init、  service和 destroy 方法是 Servlet 生命周期的方法。

当 Servlet 类实例化后,容器加载 init,以通知  servlet 它已进入服务行列。

init 方法必须被加载,Servelt 才能接收和请求。

如果要载入数据库驱动程序、初始化一些值等等,程序员可以重写这个方法。在其他情况下,这个方法一般为空。 
service 方法由 Servlet 容器调用,以允许 Servlet 响应一个请求。

Servlet 容器传递 javax.servlet.ServletRequest 对象和  javax.servlet.ServletResponse 对象。ServletRequest 对象包含客户端 HTTP 请求信息, ServletResponse 则封装servlet 响应。 
从service 中删除Servlet实例之前,Servlet容器调用destroy方法。在servlet容器关闭或servlet容器需要更多的内存时,就调用它。这个方法只有在 servlet的 service方法内的
所有线程都退出的时候,或在超时的时候才会被调用。

在 servlet 容器调用 destroy方法之后,它将不再调用servlet的service方法。

destroy 方法给了 servlet 机会,来清除所有候住的资源(比如:内存,文件处理和线程),以确保在内存中所有的持续状态和 servlet的当前状态是同步的。

一个功能健全的Servlet容器对于每个Servlet 的HTTP请求会完成以下事情:  
1.当Servlet 第一次被调用的时候,加载了Servlet类并调用它的init方法(仅调用一次)  

2.响应每次请求的时候 ,构建一个javax.servlet.ServletRequest 和 javax.servlet.ServletResponse实例。  
3.激活servlet的service方法,传递 ServletRequest 和 ServletResponse 对象。  当servlet类关闭的时候,调用Servlet的destroy方法,并卸载servlet类。  
发生在Servlet 容器内部的事就复杂多了。只是这个简单的servlet容器的功能不很健全,所以,这它只能运行非常简单的servelt ,并不能调用servlet的init和destroy方法。

然而,以下动作也被理解成Servlet容器的工作原理被执行: 
◆等待HTTP请求。 
◆构建ServletRequest和ServletResponse对象 ,如果请求的是一个staticResource,就会激活StaticResourceProcessor实例的 process方法,传递ServletRequest 和 ServletResponse 对象。 如果请求的是一个Servlet ,载入该类,并激活它的service方法,传递ServletRequest和ServletResponse 对象。注意:在这个servlet 容器,每当 servlet被请求的时候该类就被载入。

Servlet执行http请求流程程

web服务器接受到一个http请求后,web服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml 配置文件找到相应的处理servlet,同时将request、response对象传递给它,servlet通过request对象可知道客户端的请求者、请求信息以及其他的信息等,servlet在处理完请求后会把所有需要返回的信息放入response对象中并返回到客户端,servlet一旦处理完请求,servlet容器就会刷新response对象,并把控制权重新返回给web服务器。

原创粉丝点击