`

Tomcat如何与Servlet对象进行交互

阅读更多

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品.下面我们描述一下Tomcat与Servlet是如何工作的,首先看下面的时序图.

 

       

1、1、Web客户向Servlet容器(Tomcat)发出Http请求

2、Servlet容器分析客户的请求信息

3、Servlet容器创建一个HttpRequest对象,将客户请求的信息封装到这个对象中

4、Servlet容器创建一个HttpResponse对象

5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数

     传给 HttpServlet对象

6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据

8、Servlet容器把HttpServlet的响应结果传给Web客户

 

看到以上这个过程,那么我们会问Servlet容器与HttpServlet又是基于什么样的约定进行交互的?

HttpServlet对象的生命周期如何?

首先我们来了解一下Servlet对象的API

Servlet的框架是由两个Java包组成的:javax.servlet与javax.servlet.http。在javax.servlet包中定义了所有

的Servlet类都必须实现或者扩展的通用接口和类。在javax.servlet.http包中定义了采用Http协议通信的

HttpServlet类。Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这个接口。

在Servlet接口中定义了5个方法,

其中3个方法代表了Servlet的生命周期:

1、init方法:负责初始化Servlet对象。

2、service方法:负责响应客户的请求。

3、destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。

      下面我们来看下面的类图。

在javax.servlet.Servlet接口中有一些do方法,它们对应的是http的请求方式。下面我们就结合类图来

描述一下HttpServlet对象的生命周期

一、创建Servlet对象的时机

1、Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,

      同时将ServletConfig对象作为参数来调用Servlet对象的init方法。

2、在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对

      象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet

     对象的service方法。

3、Servlet的类文件被更新后,重新创建Servlet

      Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定

      的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。

二、销毁Servlet对象的时机

1、Servlet容器停止或者重新启动:Servlet容器调用Servlet对象的destroy方法来释放资源。

以上所讲的就是Servlet对象的生命周期。那么Servlet容器如何知道创建哪一个Servlet对象?

Servlet对象如何配置?实际上这些信息是通过读取web.xml配置文件来实现的。

我们来看一下web.xml文件中的Servlet对象的配置节信息

-------------------------------------------

<servlet>

    <servlet-name>action<servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

        <param-name>config</param-name>

        <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <init-param>

        <param-name>detail</param-name>

        <param-value>2</param-value>

    </init-param>

    <init-param>

        <param-name>debug</param-name>

        <param-value>2</param-value>

    </init-param>

    <load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

</servlet-mapping>

--------------------------------------------

下面对上面的配置节信息进行解析

servlet-name:Servlet对象的名称

servlet-class:创建Servlet对象所要调用的类

param-name:参数名称

param-value:参数值

load-on-startup:Servlet容器启动时加载Servlet对象的顺序

servlet-mapping/servlet-name:要与servlet中的servlet-name配置节内容对应

url-pattern:客户访问的Servlet的相对URL路径

当Servlet容器启动的时候读取<servlet>配置节信息,根据<servlet-class>配置节信息创建Servlet对象,

同时根据<init-param>配置节信息创建HttpServletConfig对象,然后执行Servlet对象的init方法,并且根据

<load-on-startup>配置节信息来决定创建Servlet对象的顺序,如果此配置节信息为负数或者没有配置,那么

在Servlet容器启动时,将不加载此Servlet对象。

当客户访问Servlet容器时,Servlet容器根据客户访问的URL地址,通过<servlet-mapping>配置节中的<url-pattern>

配置节信息找到指定的Servlet对象,并调用此Servlet对象的service方法。

以上内容只是对Tomcat与Servlet对象之间交互的原理进行一个总的概括,这是我们在学习Java Web应用技术中

需要清晰认识的一些内容,如有不当之处请指出,我会虚心接受。这些内容参考自孙卫琴编写的

<Tomcat与Java Web 技术详解>


文章出处:http://www.diybl.com/course/3_program/java/javajs/20081123/152271.html

分享到:
评论

相关推荐

    利用tomcat和servlet进行简单开发所需的jar包

    本资源包主要围绕这三个核心概念:Tomcat、Servlet和c3p0连接池,来帮助开发者进行简单的Web应用开发。 首先,`c3p0`是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在数据库...

    Android与servlet服务器交互

    本教程将深入讲解如何使Android客户端与Servlet服务器进行有效交互。 首先,我们从Android客户端开始。在Android应用中,我们通常使用HttpURLConnection或Apache HttpClient库来发送HTTP请求到服务器。然而,由于...

    ZigBee+ESP32+MQTT+EMQX+TomCat+Servlet接口+MySQL+安卓app的物联网完整项目.rar

    8. **Android App**: 这个部分指的是专为安卓平台设计的应用程序,可能通过HTTP请求与TomCat上的Servlet接口交互,展示实时数据,接收用户指令,以及执行其他与用户界面相关的功能。 整个项目流程大致如下:ZigBee...

    tomcat-servlet-ajax最基础例子

    这个基础例子展示了如何在Tomcat服务器上使用Servlet和Ajax进行简单交互。虽然对于已经熟悉Ajax的开发者来说,这可能过于基础,但对于初学者来说,这是一个很好的起点,帮助他们理解这两个技术是如何协同工作的。...

    tomcat+tomcat插件+servlet文件上传jar包

    标题中的“tomcat+tomcat插件+servlet文件上传jar包”揭示了本文将要讨论的是如何在Tomcat服务器上实现文件上传功能,并且利用相关的Tomcat插件进行辅助开发。Tomcat是一款广泛使用的开源Java Servlet容器,它实现了...

    37.Tomcat&Servlet.zip

    【标题】:Tomcat与Servlet基础教程 在Java Web开发中,Tomcat和Servlet是两个至关重要的组件。Tomcat是一个开源的、轻量级的应用服务器,主要用于运行Servlet和JSP(JavaServer Pages)应用程序。而Servlet是Java...

    Tomcat 8源代码 Servlet源代码

    4. **Connector与ProtocolHandler**:Tomcat通过`Connector`组件与外部世界交互,它负责接收和发送HTTP请求。`ProtocolHandler`接口(如`AprLifecycleListener`、`NioEndpoint`)实现了具体的网络协议,如APR...

    android与tomcat之间的交互

    本文将详细介绍如何实现Android与Tomcat服务器之间的交互,以及在此过程中需要注意的关键知识点。 首先,我们要了解Android端如何与服务器进行通信。最常用的方式是通过HTTP或HTTPS协议,利用网络请求库(如OkHttp...

    day08-HTTP&Tomcat&Servlet.zip

    Servlet可以接收和响应用户请求,处理数据,甚至与数据库或其他系统进行交互。在Tomcat这样的Servlet容器中,Servlet生命周期包括加载、初始化、服务、销毁四个阶段。通过Servlet,开发者可以实现动态网页、接收表单...

    JavaWeb HTTP协议&Tomcat&Servlet

    2. service()方法:这是Servlet处理请求的主要入口点,根据请求类型(GET、POST等)选择合适的方法进行处理。 3. doGet()和doPost():分别处理HTTP的GET和POST请求,是service()方法的默认实现。 4.转发与重定向:...

    JDK+Tomcat+Servlet连接Mysql数据库.pdf

    Mysql被广泛应用于各种网站和商业应用中,尤其是在Web应用方面,与JDK、Tomcat和Servlet的结合使用非常普遍,为Java Web应用提供数据库存储能力。 在JDK、Tomcat和Servlet连接Mysql数据库的过程中,通常需要以下几...

    在Tomcat下JSP、Servlet和JavaBean环境的配置

    本篇文章将详细讲解如何在Tomcat环境下配置JSP、Servlet和JavaBean,以便进行Web应用的开发和调试。 首先,我们需要安装和配置Apache Tomcat。下载最新版本的Tomcat安装包,解压到一个合适的目录,例如`C:\Tomcat`...

    汽车租赁系统的Tomcat servlet 实现

    它允许开发者创建与HTTP协议交互的Java类,处理来自Web客户端的请求并返回响应。在汽车租赁系统中,Servlet 可能用于处理用户的预订请求、查询车辆信息、管理用户账户等多种业务逻辑。 Tomcat 作为Servlet容器,...

    基于Jsp+Tomcat+Servlet+Filter的超市管理系统.zip

    通过定义特定的Servlet,可以实现与数据库的交互,进行数据的增删改查操作。 **Filter**: Filter是Java Web中的一个概念,它可以在请求被Servlet处理之前或之后进行拦截,实现数据过滤、权限控制等功能。在本系统...

    Tomcat Servlet API

    【标签】"Tomcat Servlet API"提示我们,这个API不仅包含标准的Servlet API,还可能包含Tomcat特有的扩展或实现,比如Tomcat特定的Servlet容器配置和管理接口,这些对于在Tomcat环境下进行高性能、高可用性的应用...

    servlet api 与servlet src

    Servlet API是Java Servlet规范的一部分,它定义了一组接口和类,使得开发者能够构建与Web服务器交互的应用程序。这些接口和类提供了处理HTTP请求和响应的方法,以及管理Servlet生命周期的工具。Servlet API的主要...

    Tomcat+Servlet+mysql简单的登录注册和转跳到主页

    Servlet会与MySQL通过JDBC(Java Database Connectivity)接口进行交互,执行SQL查询,如插入新用户、验证登录凭证等。 **登录注册流程** 1. 用户访问登录页面,输入用户名和密码。 2. 点击登录按钮后,表单数据...

    JSP+Servlet+Tomcat个人博客系统

    Servlet通过调用JDBC(Java Database Connectivity)接口与数据库进行交互,完成数据的增删改查操作。 **Tomcat** Tomcat是Apache软件基金会开发的一个开源的Servlet容器,它实现了Java EE的Web部分,尤其是Servlet...

    Tomcat Servlet oracle JDBC 实现登录的例子

    在IT行业中,构建一个基于Web的应用程序通常涉及服务器端技术,如Servlet,数据库连接以及数据交互。本示例将深入探讨如何使用Tomcat服务器、Servlet、Oracle数据库和JDBC(Java Database Connectivity)来实现一个...

Global site tag (gtag.js) - Google Analytics