当前位置: 首页 > news >正文

Servlet容器(Web容器)简介

参考笔记:Servlet容器(Web容器)简介-笔记-CSDN博客(本文的内容基本转载自该文章,写的很好,非常推荐大家看一下)

        JavaWeb 项目中,我们编写的 Servlet 类没有 main() 函数,不能独立运行,那我们如何启动一个 Servlet ? 如何结束一个 Servlet ? 如何寻找一个 Servlet ? 这一切都受控于另一个 Java  应用,这个应用我们就称之为 Servlet 容器,也称为 Web 容器。Servlet 容器帮助我们管理着 Servlet  ,使我们只需要将重心专注于业务逻辑

        在介绍 Servlet 容器之前,我们需要介绍一下相关历史

文章目录

1. 传统的Web服务器只能支持静态资源的访问

2. 动态部署网站的需求来了

3. Servlet容器是什么?

4. Servlet容器(Web容器)有哪些?

5. 待更新😈...

1. 传统的Web服务器只能支持静态资源的访问


        Web 服务器是一种对外提供 Web 服务的软件,它可以接收浏览器的 HTTP  请求,并将处理结果返回给浏览器。部署网站一般需要 Web 服务器的支持,例如:
        ① 运行 PHP 网站一般选择 Apache 或者 Nginx
        ② 运行 ASP/ASP.NET 网站一般选择 IIS
        ③ 运行 Python 网站一般选择内置的 WSGI 服务器模块——wsgiref

        我们平时所说的 Web 服务器,比如 Apache、Nginx、IIS 等,它们的功能往往都比较单一,只能提供 http/https 服务,让用户访问静态资源(HTML 文档、图片、CSS 文件、JavaScript 文件等),它们不能执行任何编程语言,也不能访问数据库,更不能让用户注册和登录。也就是说,如果只有 Web 服务器,那您只能部署静态网站,不能部署动态网站

 

2. 动态部署网站的需求来了


        而随着互联网的发展,交互越发得重要,单纯的静态资源满足不了需求,业务变得越来越复杂,需要我们编写代码来处理诸多业务,需要根据 HTTP 请求调用不同的业务逻辑来响应,那就需要部署动态网站

        要想部署动态网站,必须要有编程语言运行环境(或称为运行时)和数据库管理系统的支持。即部署动态网站至少需要 3 个组件,分别是 Web 服务器、编程语言运行环境、数据库。例如,部署 PHP 网站一般选择 Apache + PHP 运行时 + MySQL 的组合

 

3. Servlet容器是什么?


        Servlet 是基于 Java 语言的,因此运行 Servlet 必然少不了 JRE (即 Java Runtime Environment) 的支持,它负责解析和执行字节码文件(.class文件)。然而 JRE 只包含了 Java 虚拟机(JVM)、Java 核心类库和一些辅助性性文件,它并不支持 Servlet 规范。要想运行 Servlet 代码,还需要一种额外的部件,该部件必须支持 Servlet 规范,实现了 Servlet 接口和一些基础类,这种部件就是 Servlet 容器

        Servlet 容器就是 Servlet 代码的运行环境(运行时),它除了实现 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持,还需要管理由用户编写的 Servlet 类,比如实例化类(创建对象)、调用方法、销毁类等

        如上图所示,Web  服务器是整个动态网站的 "大门",用户的 HTTP 请求首先到达 Web 服务器,Web 服务器判断该请求是静态资源还是动态资源:如果是静态资源就直接返回,此时相当于用户下载了一个服务器上的文件;如果是动态资源将无法处理,必须将该请求转发给 Servlet 容器

        Servlet 容器接收到请求以后,会根据配置文件(web.xml)找到对应的 Servlet 类,将它加载并实例化,然后调用其中的方法来处理用户请求;处理结束后,Servlet 容器将处理结果再转交给 Web 服务器,由 Web 服务器将处理结果进行封装,以 HTTP 响应的形式发送给最终的用户

4. Servlet容器(Web容器)有哪些?


        常用的 Servlet 容器 (Web 容器)有 Tomcat、Jetty、JBoss、WebLogic、Websphere 等,这些容器都是 Servlet 代码的运行环境(运行时,实现了 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持,管理由用户编写的 Servlet 类。其中 Tomcat 由 Java 官方提供,是初学者最常使用的

        为了简化网站的部署流程,Servlet 容器往往也会自带 Web 服务器模块,提供基本的 HTTP 服务,所以这里的 Servlet 容器 = Web服务器 + Servlet 容器,所以可以不用再安装 Apache、IIS、Nginx 等传统意义上的服务器,只需要安装一款 Servlet 容器,就能部署动态网站了

注:正因为 Web 容器自带 Web 服务器模块的原因,有的教材将 Tomcat 称为 Web 容器,有的教材又将 Tomcat 称为 Web 服务器 / Tomcat 服务器,导致很多人把 Web 服务器和 Web 容器两者的概念搞混了

        使用 Servlet 容器中自带的 Web 服务器模块后,上面的流程图就变成了这样:

        需要说明的是,Servlet 容器自带的 Web 服务器模块虽然没有传统的 Web 服务器强大,但是也足以应付大部分开发场景

5. 待更新😈...

http://www.lryc.cn/news/572586.html

相关文章:

  • Windows + R组合键常用命令
  • Qi无线充电:车载充电的便捷与安全之选
  • 大数据系统架构实践(一):Zookeeper集群部署
  • 分布式系统中的 Kafka:流量削峰与异步解耦(二)
  • Unity3d中使用Mirror进行自定义消息通信
  • 磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(下)
  • 设计模式精讲 Day 8:组合模式(Composite Pattern)
  • Git——分布式版本控制工具
  • 深度学习N5周:Pytorch文本分类入门
  • android 渲染流水线中的两个重要阶段:swapBuffers 和 DrawFrames
  • 【Oracle专栏】ORA-04036 报错 PGA设置
  • Android开发常用adb合集
  • 医疗AI大数据处理流程的全面解析:从数据源到应用实践
  • SSE 流与普通 HTTP 响应的区别
  • 防抖不同的实现
  • 领码 SPARK 融合平台赋能工程建设行业物资管理革新——数智赋能,重塑中国模式新范式
  • 阿里云OSS对象云储存入门操作
  • 【Leetcode】字符串之二进制求和、字符串相乘
  • 智能危险品搬运机器人市场报告:行业趋势与未来展望
  • 深度学习笔记27-LSTM实现糖尿病探索与预测(Pytorch)
  • 华为云Flexus+DeepSeek征文 | 利用Dify平台构建多智能体协作系统:从单体到集群的完整方案
  • SpringMVC知识点总结
  • C++网络编程入门学习(五)-- CMake 学习笔记
  • iOS应用启动时间优化:通过多工具协作提升iOS App性能表现
  • 在 Windows 上使用 Docker Desktop 快速搭建本地 Kubernetes 环境(附详细部署教程)
  • 【支持向量机】SVM线性可分支持向量机学习算法——硬间隔最大化支持向量机及例题详解
  • 退出python解释器的四种方式
  • Android中Native向System Service进行Binder通信的示例
  • 解决 Docker 里 DrissionPage 无法连接浏览器的问题,内含直接可用的Docker镜像(DrissionPage 浏览器链接失败 怎么办?)
  • 机构运动分析系统开发(Python实现)