Tomcat容器属于web容器的一种,web容器还包括weblogic容器、JBoss容器等;而Tcomcat、webLogic等包含servlet容器。

web容器:可以部署多个WEB应用程序的环境。

Tomcat容器:是Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket(Java EE)技术的开源实现。

Servlet容器:全称server applet,意为服务程序。主要作用是给上级容器(Tomcat)提供doGet()和doPost()等方法。其生命周期实例化、初始化、调用、销毁受控于Tomcat容器。

Web技术

随着互联网技术的发展,基于HTTP和HTML的web应用急速增长。早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议请求服务 器上的静态页面,服务器上的web服务器软件接收到请求后,读取URI标示的资源,再加上消息报头发送给客户端浏览器,浏览器负责解析HTML,将结果呈 现出来。

然而随着时间发展,用户已经不满足于仅浏览静态页面。用户需要一些交互操作,获取一些动态结果。如果基于HTTP协议实现服务器端软件增强功能太过 复杂,所以需要一些扩展机制来实现用户想要的功能。早期使用的Web服务器扩展机制是CGI(Common Gateway Interface,公共网关接口)。使用这种方法,用户单击某个链接或输入网址来访问CGI程序,web服务器收到请求后,运行该CGI程序,对用户请 求进行处理,紧接着将处理结果并产生一个响应,该响应被返回给web服务器,web服务器对响应进行包装,以HTTP响应的方式返回给浏览器。

CGI程序在一定程度上解决了用户需求。不过还存在一些不足之处,如CGI程序编写困难,响应时间较长,以进程方式运行导致性能受限。于是1997年,sun公司推出了Servlet技术,作为java阵营的CGI解决方案。

servlet与servlet容器

Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,它由Servlet容器所管理,用于生成动态的内容。 Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。Servlet被编译为平台独立 的字节码,可以被动态地加载到支持Java技术的Web服务器中运行。 
Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME的请求,格式化基于MIME的响应。Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包容和管理Servlet。在JSP技术 推出后,管理和运行Servlet/JSP的容器也称为Web容器。

(注:常用的MIME类型:text/html,application/pdf,video/quicktime,application /java,image/jpeg,application/jar,application/octet-stream,application/x- zip)

有了servlet之后,用户通过单击某个链接或者直接在浏览器的地址栏中输入URL来访问Servlet,Web服务器接收到该请求后,并不是将 请求直接交给Servlet,而是交给Servlet容器。Servlet容器实例化Servlet,调用Servlet的一个特定方法对请求进行处理, 并产生一个响应。这个响应由Servlet容器返回给Web服务器,Web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器。

servlet容器能提供什么?

我们知道需要由servlet容器来管理和运行servlet,但是为什么要这样做呢?使用servlet容器的原因有:

通信支持:利用容器提供的方法,你能轻松的让servlet与web服务器对话,而不用自己建立serversocket、监听某个端口、创建流等 等。容器知道自己与web服务器之间的协议,所以你的servlet不用担心web服务器(如Apache)和你自己的web代码之间的API,只需要考 虑如何在servlet中实现业务逻辑(如处理一个订单)。 
生命周期管理:servlet容器控制着servlet的生与死,它负责加载类、实例化和初始化servlet,调用servlet方法,以及使servlet实例被垃圾回收,有了servlet容器,你不需要太多的考虑资源管理。 
多线程支持:容器会自动为它所接收的每个servlet请求创建一个新的java线程。针对用户的请求,如果servlet已经运行完相应的http服务方法,这个线程就会结束。这并不是说你不需要考虑线程安全性,其实你还会遇到同步问题,不过这样能使你少做很多工作。 
声明方式实现安全:利用servlet容器,你可以使用xml部署描述文件来配置和修改安全性,而不必将其硬编码写到servlet类代码中。 
JSP支持:servlet容器负责将jsp代码翻译为真正的java代码。

用与CGI程序相比,Servlet具有以下优点:

Servlet是单实例多线程的运行方式,每个请求在一个独立的线程中运行,而提供服务的Servlet实例只有一个。 
Servlet具有可升级性,能响应更多的请求,因为Servlet容器使用一个线程而不是操作系统进程,而线程仅占用有限的系统资源。 
Servlet使用标准的API,被更多的Web服务器所支持。 
Servlet使用Java语言编写,因此拥有Java程序语言的所有优点,包括容易开发和平台独立性。 
Servlet可以访问Java平台丰富的类库,使得各种应用的开发更为容易。 
Servlet容器给Servlet提供额外的功能,如错误处理和安全。 
Servlet容器的分类

根据Servlet容器工作模式的不同,可以将Servlet容器分为以下三类:

1)独立的Servlet容器

当我们使用基于Java技术的Web服务器时,Servlet容器作为构成Web服务器的一部分而存在。然而大多数的Web服务器并非基于Java,因此,就有了下面两种Servlet容器的工作模式。

2)进程内的Servlet容器

Servlet容器由Web服务器插件和Java容器两部分的实现组成。Web服务器插件在某个Web服务器内部地址空间中打开一个 JVM(Java虚拟机),使得Java容器可以在此JVM中加载并运行Servlet。如有客户端调用Servlet的请求到来,插件取得对此请求的控 制并将它传递(使用JNI技术)给Java容器,然后由Java容器将此请求交由Servlet进行处理。进程内的Servlet容器对于单进程、多线程 的服务器非常适合,提供了较高的运行速度,但伸缩性有所不足。

3)进程外的Servlet容器

Servlet容器运行于Web服务器之外的地址空间,它也是由Web服务器插件和Java容器两部分的实现组成的。Web服务器插件和Java容 器(在外部JVM中运行)使用IPC机制(通常是TCP/IP)进行通信。当一个调用Servlet的请求到达时,插件取得对此请求的控制并将其传递(使 用IPC机制)给Java容器。进程外Servlet容器对客户请求的响应速度不如进程内的Servlet容器,但进程外容器具有更好的伸缩性和稳定性。

Tomcat

学习Servlet技术,就需要有一个Servlet运行环境,也就是需要有一个Servlet容器,本文用的是Tomcat。

Tomcat是一个免费的开放源代码的Servlet容器,它是Apache软件基金会(Apache Software Foundation)的一个顶级项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和 JSP规范总是能在Tomcat中得到体现,Tomcat 6支持最新的Servlet 2.5和JSP 2.1规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱,并得到了部分软件开发商的认可,成为目前比较流行的Web服 务器。

Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的 Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache,我们可以将Apache和Tomcat集成在 一起使用,Apache作为HTTP Web服务器,Tomcat作为Web容器。

Tomcat服务器接受客户请求并做出响应的过程如下:

1)客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。 
2)Web服务器接收到请求后,传递给Servlet容器。 
3)Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。 
4)Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。 
5)Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。

理解Servlet和Servlet容器、Web容器等概念相关推荐

  1. Servlet生命周期与Web容器架构及处理请求详解

    一.Servlet对象 Servlet对象运行在Servlet容器中,Servlet的生命周期由容器管理(Servlet容器的基本思想是在服务器端使用Java来动态生成网页). (一)Servlet对 ...

  2. Spring容器 SpringMVC容器 web容器的关系

    说到spring和springmvc,其实有很多工作好多年的人也分不清他们有什么区别,如果你问他项目里用的什么MVC技术,他会说我们用的spring和mybatis,或者spring和hibernat ...

  3. java web servlet、servlet容器 HTTP服务器和mvc三层架构或者说servlet属于哪一层的,给我搞的晕晕的,今天终于弄明白了

    0 我们先看Web容器是什么? 首先,让我们简单回顾一下web技术的发展历史,可以帮助你理解web容器的由来. 早期的web应用主要用于浏览新闻等静态页面,HTTP服务器(比如Apache,Nginx ...

  4. java web容器原理_javaWeb工作原理

    http:无状态协议,客户端和服务器之间不需要建立持久的连接,通信完就断开. http的工作流程: 1.客户端和服务器建立连接 2.客户端发送请求 3.服务器响应内容 4.服务器关闭连接,客户端解析服 ...

  5. 【Java中的Web容器】

    1.Web容器   web容器给处于其中的应用程序组件(JSP.Servlet)提供一个环境,使JSP.Servlet直接依靠容器中的环境变量交互,不用关注其他系统问题,主要由WEB服务器实现. J2 ...

  6. j2ee servlet 和 threadlocal ,synchronized 与 web容器

    在传统的Web开发中,我们处理Http请求最常用的方式是通过实现Servlet对象来进行Http请求的响应.Servlet是J2EE的重要标准之一,规定了Java如何响应Http请求的规范.通过Htt ...

  7. Web容器和Servlet生命周期

    为何需要Web容器 Web服务器本身主要用于支持http协议,包括监听和相应http请求.web服务器一般处理静态的请求,如文件系统中的静态文件.web容器则是为web相关的组件提供运行环境,可以从' ...

  8. servlet容器,web容器,spring容器,springmvc容器的区别

    这个理解我可以通过一个http的页面请求来说明. web容器中有servlet容器,spring项目部署后存在spring容器.其中spring控制service层和dao层的bean对象以及cont ...

  9. Web服务器 Web容器 Servlet容器

    WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是 ...

最新文章

  1. 一键修改分辨率bat_求使用批处理BAT设置分辨率的方法介绍?
  2. python官方推荐的三本书-一个合格的python程序员,应该从这三本书入手
  3. 前端框架——Jquery——基础篇2__获取DOM节点的值
  4. 【Java】对JTable里的元素进行排序
  5. oracle连接报08006,oracle数据库无法连接 The Network Adapter could not establish
  6. Android开发笔记(一百八十三)利用HMS轻松扫描二维码
  7. 推荐一个网站:编程资料网 http://www.ourdev.net/
  8. 日更文章到底难不难?
  9. 生态愿景与险企数字化进度——保险科技生态建设
  10. Work from home
  11. 1497_费曼技巧之他人观
  12. RK3399 Android7.1实时读取当前cpu频率
  13. 帅到没朋友 (20分)
  14. ORACLE表有逻辑坏块时EXPDP导出报错排查
  15. Oracle数据库访问性能优化
  16. 美国学校的辅导员和校车
  17. 数据挖掘技术功能有哪些
  18. 公式法求圆周率的近似值——泰勒公式展开 (内含double与float的比较)
  19. Adobe的音频编辑软件Adobe Audition (Au)2023版本下载与安装教程
  20. matlab 创建简单的深度学习网络用于分类

热门文章

  1. 一个因变量四个自变量,只有数据如何用1stopt拟合得到非线性方程
  2. soap+wsimport的webservice接口客户端实现
  3. [i.MX] ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
  4. 概率论基础 - 7 - 特征函数
  5. CocoaPods——Cocoapods 入门
  6. java 本机局域网真实ip_Java获取本机ip地址,并扫描本机所在局域网的电脑设备
  7. javaswing实现扫雷游戏
  8. 通信算法之十一:QPSK/DQPSK/OQPSK/BPSK/DBPSK/16QAM调制解调仿真链路
  9. CCIE与HCIE哪个含金量高些?
  10. PWM整流器仿真模型 单位功率因数 matlab simulink