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和c3p0连接池,来帮助开发者进行简单的Web应用开发。 首先,`c3p0`是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在数据库...
本教程将深入讲解如何使Android客户端与Servlet服务器进行有效交互。 首先,我们从Android客户端开始。在Android应用中,我们通常使用HttpURLConnection或Apache HttpClient库来发送HTTP请求到服务器。然而,由于...
8. **Android App**: 这个部分指的是专为安卓平台设计的应用程序,可能通过HTTP请求与TomCat上的Servlet接口交互,展示实时数据,接收用户指令,以及执行其他与用户界面相关的功能。 整个项目流程大致如下:ZigBee...
这个基础例子展示了如何在Tomcat服务器上使用Servlet和Ajax进行简单交互。虽然对于已经熟悉Ajax的开发者来说,这可能过于基础,但对于初学者来说,这是一个很好的起点,帮助他们理解这两个技术是如何协同工作的。...
标题中的“tomcat+tomcat插件+servlet文件上传jar包”揭示了本文将要讨论的是如何在Tomcat服务器上实现文件上传功能,并且利用相关的Tomcat插件进行辅助开发。Tomcat是一款广泛使用的开源Java Servlet容器,它实现了...
【标题】:Tomcat与Servlet基础教程 在Java Web开发中,Tomcat和Servlet是两个至关重要的组件。Tomcat是一个开源的、轻量级的应用服务器,主要用于运行Servlet和JSP(JavaServer Pages)应用程序。而Servlet是Java...
4. **Connector与ProtocolHandler**:Tomcat通过`Connector`组件与外部世界交互,它负责接收和发送HTTP请求。`ProtocolHandler`接口(如`AprLifecycleListener`、`NioEndpoint`)实现了具体的网络协议,如APR...
本文将详细介绍如何实现Android与Tomcat服务器之间的交互,以及在此过程中需要注意的关键知识点。 首先,我们要了解Android端如何与服务器进行通信。最常用的方式是通过HTTP或HTTPS协议,利用网络请求库(如OkHttp...
Servlet可以接收和响应用户请求,处理数据,甚至与数据库或其他系统进行交互。在Tomcat这样的Servlet容器中,Servlet生命周期包括加载、初始化、服务、销毁四个阶段。通过Servlet,开发者可以实现动态网页、接收表单...
2. service()方法:这是Servlet处理请求的主要入口点,根据请求类型(GET、POST等)选择合适的方法进行处理。 3. doGet()和doPost():分别处理HTTP的GET和POST请求,是service()方法的默认实现。 4.转发与重定向:...
Mysql被广泛应用于各种网站和商业应用中,尤其是在Web应用方面,与JDK、Tomcat和Servlet的结合使用非常普遍,为Java Web应用提供数据库存储能力。 在JDK、Tomcat和Servlet连接Mysql数据库的过程中,通常需要以下几...
本篇文章将详细讲解如何在Tomcat环境下配置JSP、Servlet和JavaBean,以便进行Web应用的开发和调试。 首先,我们需要安装和配置Apache Tomcat。下载最新版本的Tomcat安装包,解压到一个合适的目录,例如`C:\Tomcat`...
它允许开发者创建与HTTP协议交互的Java类,处理来自Web客户端的请求并返回响应。在汽车租赁系统中,Servlet 可能用于处理用户的预订请求、查询车辆信息、管理用户账户等多种业务逻辑。 Tomcat 作为Servlet容器,...
通过定义特定的Servlet,可以实现与数据库的交互,进行数据的增删改查操作。 **Filter**: Filter是Java Web中的一个概念,它可以在请求被Servlet处理之前或之后进行拦截,实现数据过滤、权限控制等功能。在本系统...
【标签】"Tomcat Servlet API"提示我们,这个API不仅包含标准的Servlet API,还可能包含Tomcat特有的扩展或实现,比如Tomcat特定的Servlet容器配置和管理接口,这些对于在Tomcat环境下进行高性能、高可用性的应用...
Servlet API是Java Servlet规范的一部分,它定义了一组接口和类,使得开发者能够构建与Web服务器交互的应用程序。这些接口和类提供了处理HTTP请求和响应的方法,以及管理Servlet生命周期的工具。Servlet API的主要...
Servlet会与MySQL通过JDBC(Java Database Connectivity)接口进行交互,执行SQL查询,如插入新用户、验证登录凭证等。 **登录注册流程** 1. 用户访问登录页面,输入用户名和密码。 2. 点击登录按钮后,表单数据...
Servlet通过调用JDBC(Java Database Connectivity)接口与数据库进行交互,完成数据的增删改查操作。 **Tomcat** Tomcat是Apache软件基金会开发的一个开源的Servlet容器,它实现了Java EE的Web部分,尤其是Servlet...
在IT行业中,构建一个基于Web的应用程序通常涉及服务器端技术,如Servlet,数据库连接以及数据交互。本示例将深入探讨如何使用Tomcat服务器、Servlet、Oracle数据库和JDBC(Java Database Connectivity)来实现一个...