Web容器简介

news2024/11/25 0:56:40

容器与组件

Java EE(Java Platform Enterprise Edition)是一种企业级的Java版本。

Java EE是SUN公司提出来的企业版Java开发中间件,它主要用于企业级互联网系统的搭建。

Java EE的本质是一种容器加组件技术,这句话里包含了两个概念——容器和组件。

容器是用来管理组件行为的一个集合工具,组件的行为包括与外部环境的交互、组件的生命周期、组件之间的合作依赖关系和运行等。

组件是开发者编写或者引入的第三方程序代码,只要开发者按照容器所定义的规范开发组件,组件就可以在容器中运行了。Java EE中的主要组件包括JSP、Servlet和EJB(Enterprise Java Bean)等,主要的开发语言是Java。

容器和组件的关系如下图所示。

Java EE容器

Java EE容器可以分为Web容器、EJB容器和其他Java应用容器。

Web容器:它包含一个Servlet容器,Servlet容器可以运行Java EE的核心组件Servlet,而实际上JSP最终会被Web容器翻译为Servlet,再通过Servlet容器运行。此外,Web容器还可以运行HTML等文件。实现Web容器规范的服务器有多种,如Tomcat、Jetty、Wildfly(前身为JBoss)和GlassFish等。

Web容器 = HTTP服务器 + Servlet容器

• EJB容器:它是Java EE提出的一个企业级Java Bean的规范,能在它内部运行的组件是EJB,但是请注意,在默认情况下,Tomcat只提供Web容器,不提供EJB容器,所以在Tomcat中无法运行EJB,除非引入插件。Wildfly和GlassFish等服务器则提供了EJB容器,可以在它们当中运行EJB。但是EJB存在诸多的问题,当前已经被大部分企业抛弃,基于实用原则,本书不再讨论它。

• 其他Java应用容器:解决某类问题的一些厂商提供的容器,比如Java NIO,它是一种支持字节组件的容器。

Web容器处理流程

1.client点击一个URL,其URL指向一个servlet

在这里插入图片描述

2.容器识别出这个请求索要的是一个servlet,所以创建两个对象:httpservletrequest、httpservletresponse

在这里插入图片描述

3.容器根据请求中的URL找到对应的servlet,为这个请求创建或分配一个线程,并把两个对象request和response传递到servlet线程中

在这里插入图片描述

4.容器调用servlet的service()方法。根据请求的不同类型,service()方法会调用doGet()或者doPost()方法

在这里插入图片描述

5.doGet()方法生成动态页面,然后把这个页面填入到response对象中

在这里插入图片描述

6.线程结束,容器把response对象转换成http响应,传回client,并销毁response和request对象

在这里插入图片描述

参考:

https://www.cnblogs.com/yjh1995/p/15902662.html

Java EE互联网轻量级框架整合开发:SSM+Redis+Spring微服务(上下册)-杨开振 刘家成-微信读书 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/913027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.2亿成都市城市安全风险综合监测预警平台建设项目

导读:原文《1.2亿!成都市城市安全风险综合监测预警平台建设项目WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 部分页面: …

牛股预测器V1.0实战(工银瑞信金融科技挑战赛排名第二)

全代码和数据关注公众号《三个篱笆三个班》免费提供!一键可跑,每日选股。 对AI炒股感兴趣的小伙伴可加WX群: 赛题概述: 基于人工智能的量化选股投资策略建模挑战 任务描述: 通过数学和计算机技术分析市场数据&…

随身wifi刷超频版Debian系统教程-随身wifi折腾入门

本人折腾Debian的一些记录,有需要的可以参考一下。本文所用到的命令,请先确保已获得root权限执行。 1.更新和升级系统中已安装的软件包 apt-get update && apt-get upgrade &&; apt-get update --fix-missing •apt-get update&#xff…

解锁人工智能项目开发的关键:Python 基础库详解与进阶学习

“ Python 是一种通用的编程语言,广泛用于人工智能项目开发。它有很多可用的库,可以帮助开发人员构建各种人工智能应用程序,如自然语言处理和机器学习。在本文中,我们将介绍一些最流行的 Python 库,以及它们在人工智能…

【机密计算实践】支持 Intel SGX 的 LibOS 项目介绍(二)

续上一篇 【机密计算实践】支持 Intel SGX 的 LibOS 项目介绍(一) 四、Mystikos Mystikos 是一个运行库和一组工具,用于在硬件可信执行环境(TEE)中运行 Linux 应用程序。当前版本支持英特尔 SGX,而未来版本可能支持其他 TEE。 4.1 目标 通过使用硬件 TEE,在…

校园后勤如何实现数字化管理?的修报修系统有哪些产品优势?

数字化时代背景下,校园后勤管理同样需要向智能化方向迈进。随着科技的飞速发展,我们应该充分利用数字化技术和智能化设备来提升校园后勤管理的效率和质量。通过引入可视化、数字化的流程管控系统,我们可以实现在线报修、快速响应处理、全流程…

4G语音胸牌,如何实现在门店接待过程管理的智能化管理?

一个完整的客户销售过程,一般包括线索获取-电话沟通-邀约到店-门店接待-回访-成交。这个过程中我们会发现,销售和客户大量的互动过程都在线下门店,而这个环节是客户最直观感受企业服务和产品的过程,很大程度上直接决定后续的成交与…

精准、高效的RFID资产管理新时代

当谈及高效、精细的企业资产管理时,RFID固定资产管理系统绝对是一项令人振奋的技术。这项引人注目的射频识别技术为企业管理带来了前所未有的革命性变革,以其精准性和高效性赋予了资产管理全新的维度。 想象一下,您无需耗费宝贵的时间和精力…

MinIO线上扩容实战

硬件投入肯定是随着业务的增长而增长,这就要求中间件平台必须提供水平伸缩机制,MinIO对象存储服务也不例外,本文就详细介绍MinIO的扩容。 Minio支持通过增加新的Server Pool来扩容老的集群。每个Server Pool都是一个相对独立的故障域&#x…

安防视频能力平台EasyNVR视频汇聚平台关闭匿名登陆的问题的解决步骤

EasyNVR是基于RTSP/Onvif协议的安防视频能力平台,它可实现设备接入、实时直播、录像、检索与回放、存储、视频分发等视频能力服务,可覆盖全终端平台(pc、手机、平板等终端),在智慧工厂、智慧工地、智慧社区、智慧校园等…

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测+k折交叉验证法)

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测k折交叉验证法) 0.引言 k折交叉验证(K-Fold Cross-Validation)是一种在机器学习中常用的模型评估技术,用于估计模型的性…

华星时空展锐芯片5g随身WiFi改串教程

前段时间入手了一个华正易尚,发现插手机卡可以用,插微闯移植卡直接没网,于是研究出展锐改串的教程分享给大家 ⭐注意:理论上所有的展锐芯片棒子都可以用,至于电池机请自行测试 话不多说,教程开始: 1.下载展锐AT改串驱…

服务器数据恢复-EVA存储磁盘故障导致存储崩溃的数据恢复案例

EVA系列存储是一款以虚拟化存储为实现目的的中高端存储设备。EVA存储中的数据在EVA存储设备工作过程中会不断进行迁移,如果运行的任务比较复杂,EVA存储磁盘负载加重,很容易出现故障的。EVA存储通过大量磁盘的冗余空间和故障后rss冗余磁盘动态…

JAVA开发环境接口swagger-ui使用总结

一、前言 swagger-ui是java开发中生产api说明文档的插件&#xff0c;这是后端工程师和前端工程师联调接口的桥梁。生成的文档就减少了很多没必要的沟通提高开发和测试效率。 二、 swagger-ui的使用 1、引入maven依赖 <dependency><groupId>io.springfox</grou…

如何做好流量经营?数字化系统如何加速流量增长

​在用户转化策略上&#xff0c;从“公域流量”到“私域流量”的来源转变&#xff0c;充分说明企业已经意识到公域流量存在成本高、粘度差、稳定性差等问题&#xff0c;开始寻求拥有更低成本、更容易培养忠实度、更容易精准触达的私域流量。但由于企业缺少整体、系统化的私域经…

(AcWing) 900. 整数划分 (计数DP)

一个正整数 n 可以表示成若干个正整数之和&#xff0c;形如&#xff1a;nn1n2…nk&#xff0c;其中 n1≥n2≥…≥nk,k≥1。 我们将这样的一种表示称为正整数 n 的一种划分。 现在给定一个正整数 n&#xff0c;请你求出 n 共有多少种不同的划分方法。 输入格式 共一行&#…

问题:fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

问题&#xff1a;fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached 解决办法&#xff1a; 1. 新建一个文本文档并命名为XXX.json 2. 打开这个文本文档&#xff0c;复制下面内容保存 {"browsers": {"chrome": ["Mozill…

2023 年如何将您的应用提交到 App Store

您夜以继日地工作来创建您的梦想应用程序。最后&#xff0c;是时候向全世界宣布您的应用程序了。但不知道如何将您的应用提交到 App Store&#xff1f; 为您的商店获取现成的移动应用程序 将应用程序提交到 App Store 可能是一项复杂的任务。但在本指南的帮助下&#xff0c;事…

Monitor.Analog高温老化箱系统操作指南

高温老化室参数设置通常包括以下几个方面&#xff1a; 1.客户信息设置&#xff1a;每个柜子可能老化的产品不 同&#xff0c;客户信息也不一样&#xff0c;通过设置客户信息来标识。 2. 产品设置&#xff1a;根据老化物品的需求&#xff0c;设置老化房的产品类型。通常情况下&…

ElasticSearch常用方法

ElasticSearch:是一个储存、检索、数据分析引擎。 在互联网项目中我们经常会按一定的条件去索引我们指定的数据&#xff0c;但是在大量的数据中我们如果直接查询数据库效率是非常低的&#xff0c;ElasticSearch就可以很好的帮我们完成检索。 es封装了api提供给我我们直接操作…