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,jsp是一个基于Java ...数据访问层(DAO):负责与数据库进行交互,实现对课程信息的存储和查询。 Tomcat:作为Web服务器,负责部署和运行该课程信息管理系统。
只是实现最基础的功能的例子,对已经掌握ajax的没有任何用处.使用tomcat
本文简单介绍了Flex如何通过servlet连接数据库(Access)。使用的是给后台传递数据的方法。 本文开发使用的软件: Flex3-eclipse plugin Tomcat 6.0 Microsoft access 2003 Eclipse 3.3 各个软件的安装和...
tomcat6.0是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为 Web服务器的一些特有功能,如Tomcat管理...
自定义Ant任务可以直接从build.xml脚本与管理器应用程序交互 的Apache Tomcat 4.0.x的。Apache Tomcat 4.0.6是旧的生产质量版本。4.0 servlet容器(卡塔利娜)已经从地上爬起来的灵活性和性能开发。4.0版实现了...
《Tomcat权威指南》这本书是一...通过本书,您会了解到在所有主要操作系统(Windows、Linux、OSX、S01aris和FreeBSD)上使用Tomcat的详细信息,包括关于Tomcat配置文件以及部署和运行web应用程序的交互建议的详细信息。
本文和大家一起了解了一下android客户端与服务端是怎样交互的,具体内容如下 1.后台使用简单的servlet,支持GET或POST。这个servlet最终返回给前台一个字符串flag,值是true或false,表示登录是否成功。 servlet...
虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。 Eclipse for javaee注意把做好的工程挂在Tomcat上,才运行Tomcat。 本工程除了JSP必须的Servlet包...
通过《Tomcat权威指南(第2版)》,您会了解到在所有主要操作系统(Windows、Linux、OSX、S01aris和FreeBSD)上使用Tomcat的详细信息,包括关于Tomcat配置文件以及部署和运行web应用程序的交互建议的详细信息。
服务器: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 的 JAR 包,用于和 tomcat 配合完成 JavaWeb 的后端交互操作。因为外网下载较慢,所以在国内 CSDN 也上传一个备份文件方便大家使用。本资源永久无需积分下载!
项目概述: 该博客系统是一个基于Servlet技术开发的Web应用,旨在提供一个简单而功能完备的博客平台。...整个系统使用Java ...1. 适合新手用来了解服务器,客户端的交互 2. 增强对 Mysql 的使用 3. 进一步了解 servlet
Servlet(Server Applet)是 Java Servlet 的简称,称为小服务程序或服务连接器,用 Java 编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数 据,生成动态 Web 内容。 2. 快速入门...
V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据 C:Controller,控制层,指工程中的Servlet,作用是接受请求和响应请求 MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中...
技术:tomcat+servlet+jsp+bootstrap 本系统分为二种用户: 1.管理员:修改密码,用户管理,角色管理,菜单管理,新闻管理,留言管理,财务管理,社团管理,社团风采,社团活动,活动申请, 学生管理,社团申请 2....
android客户端向服务器提交请求的中文乱码问题
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客户端与服务器(Tomcat + Servlet),实现简单登陆功能,(无数据库),仅适合入门学习。
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协议...
web前后端通过Ajax进行数据交互的小练习,前端由jQuery实现,后台使用Servlet实现。 jQuery版本:jQuery 2.0.0(百度CDN) Tomcat版本:Tomcat 8.5 OpenJDK版本:JDK-11