`

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

分享到:
评论

相关推荐

    课程信息管理JavaWeb三层架构+增删改查+Tomcat,servlet

    课程信息管理JavaWeb三层架构+增删改查+Tomcat,servlet,jsp是一个基于Java ...数据访问层(DAO):负责与数据库进行交互,实现对课程信息的存储和查询。 Tomcat:作为Web服务器,负责部署和运行该课程信息管理系统。

    tomcat-servlet-ajax最基础例子

    只是实现最基础的功能的例子,对已经掌握ajax的没有任何用处.使用tomcat

    Flex与Java Servlet交互实例

    本文简单介绍了Flex如何通过servlet连接数据库(Access)。使用的是给后台传递数据的方法。 本文开发使用的软件: Flex3-eclipse plugin Tomcat 6.0 Microsoft access 2003 Eclipse 3.3 各个软件的安装和...

    tomcat6.0(资源分享)

    tomcat6.0是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为 Web服务器的一些特有功能,如Tomcat管理...

    tomcat6、7、8、9, maven3.5

    自定义Ant任务可以直接从build.xml脚本与管理器应用程序交互 的Apache Tomcat 4.0.x的。Apache Tomcat 4.0.6是旧的生产质量版本。4.0 servlet容器(卡塔利娜)已经从地上爬起来的灵活性和性能开发。4.0版实现了...

    Tomcat权威指南(第二版)(中英高清PDF版+带书签)

    《Tomcat权威指南》这本书是一...通过本书,您会了解到在所有主要操作系统(Windows、Linux、OSX、S01aris和FreeBSD)上使用Tomcat的详细信息,包括关于Tomcat配置文件以及部署和运行web应用程序的交互建议的详细信息。

    Android客户端与服务端交互

    本文和大家一起了解了一下android客户端与服务端是怎样交互的,具体内容如下 1.后台使用简单的servlet,支持GET或POST。这个servlet最终返回给前台一个字符串flag,值是true或false,表示登录是否成功。 servlet...

    Servlet3.0与纯javascript通过Ajax交互的实例详解

    虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。 Eclipse for javaee注意把做好的工程挂在Tomcat上,才运行Tomcat。 本工程除了JSP必须的Servlet包...

    Tomcat权威指南(第二版)Tomcat The Definitive Guide Second Edition.pdf

    通过《Tomcat权威指南(第2版)》,您会了解到在所有主要操作系统(Windows、Linux、OSX、S01aris和FreeBSD)上使用Tomcat的详细信息,包括关于Tomcat配置文件以及部署和运行web应用程序的交互建议的详细信息。

    Android实现与Apache Tomcat服务器数据交互(MySql数据库)

    服务器:apache-tomcat-8.5.9 语言版本:Java 1.8.0_101 编译环境:Eclipse  android Studio 调用jar包:httpclient-4.2.5,httpcore-4.2.4 //HttpClient父类  mysql-connector-java-5.1.40-bin //用于连接mysql...

    servlet-api

    最原始的 Servlet-api 的 JAR 包,用于和 tomcat 配合完成 JavaWeb 的后端交互操作。因为外网下载较慢,所以在国内 CSDN 也上传一个备份文件方便大家使用。本资源永久无需积分下载!

    基于 servlet 实现的博客系统

    项目概述: 该博客系统是一个基于Servlet技术开发的Web应用,旨在提供一个简单而功能完备的博客平台。...整个系统使用Java ...1. 适合新手用来了解服务器,客户端的交互 2. 增强对 Mysql 的使用 3. 进一步了解 servlet

    servlet1.pdf

    Servlet(Server Applet)是 Java Servlet 的简称,称为小服务程序或服务连接器,用 Java 编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数 据,生成动态 Web 内容。 2. 快速入门...

    jsp + servlet + javaben实现springmvc

    V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据 C:Controller,控制层,指工程中的Servlet,作用是接受请求和响应请求 MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中...

    基于Servlet的学校社团管理系统-有文档(开题报告-任务书-lw)

    技术:tomcat+servlet+jsp+bootstrap 本系统分为二种用户: 1.管理员:修改密码,用户管理,角色管理,菜单管理,新闻管理,留言管理,财务管理,社团管理,社团风采,社团活动,活动申请, 学生管理,社团申请 2....

    android客户端向服务器提交请求的中文乱码问题

    android客户端向服务器提交请求的中文乱码问题

    jsp+servlet+mysql开发java web旅游网站,有后台管理系统

    jdk8+tomcat8+mysql+eclipse+maven 项目技术(必填) java servlet+mysql+jquery ajax http://localhost:8080/lvyou/admin/login.html admin admin http://localhost:8080/lvyou/qianduan/login.html zuidaima 111111...

    Android客户端和服务器交互例子

    Android客户端与服务器(Tomcat + Servlet),实现简单登陆功能,(无数据库),仅适合入门学习。

    新JavaWeb中级课程(19.5G)

    001-Servlet-学习内容介绍~1.mp4 002-IDEA-IDEA的下载与安装~1.mp4 003-IDEA-IDEA创建Java项目~1.mp4 004-IDEA-IDEA的基本设置~1.mp4 005-HTTP-浏览器和服务器的交互流程~1.mp4 006-HTTP-浏览器中书写格式和HTTP协议...

    Servlet + Ajax小练习

    web前后端通过Ajax进行数据交互的小练习,前端由jQuery实现,后台使用Servlet实现。 jQuery版本:jQuery 2.0.0(百度CDN) Tomcat版本:Tomcat 8.5 OpenJDK版本:JDK-11

Global site tag (gtag.js) - Google Analytics