Web服务器-Tomcat详细原理与实现

news2024/11/19 17:33:54

 Tomcat 安装与使用

:MAC 安装配置使用Tomcat - 掘金

安装后本计算机就相当于一台服务器了!!!

方式一:使用本地安装的Tomcat

1、将项目文件移动到Tomcat的webapps目录下。

2、启动Tomcat

3、在浏览器输入想要加载的项目资源URL即可

方式二:使用IDEA中集成的Tomcat

在IDEA内配置Tomcat直接搜

写好业务类,在web.xml文件中配置servlet和映射

    <servlet>
        <servlet-name>bbsServlet</servlet-name>
        <servlet-class>com.itheima.servlet01.BbsServlet</servlet-class>
    </servlet>

<!--    映射-->
<!--    首先是由URL请求得到servletname接着找到servlet-class 就找到了后端业务类-->
    <servlet-mapping>
        <servlet-name>bbsServlet</servlet-name>
        <url-pattern>/bbs/findAll</url-pattern>
    </servlet-mapping>

一、Tomcat基础

Tomcat 是一个免费开源轻量级的 Web 应用服务器。适合在并发量不是很高的中小企业项目中使用。

服务器:安装了服务器软件的计算机。

1、文件目录结构

2、功能组件结构

Tomcat 俩封装的核心功能:连接器 Connector、容器 Container。连接器和容器构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。

3、功能组件关系

一个container可对应多个connector。但是仅仅当一个container和一个connector组合在一起才可以处理一个service。

4、Coyote与Catalina

Coyote负责具体的协议的解析;Catalina负责实现最终的请求逻辑。

二、Tomcat架构

 一、连接器Connector

0、 Tomcat 连接器框架Coyote

Tomcat支持的IO模型:

 Tomcat支持的协议:

 协议分层:

1、连接器核心功能

一、监听网络端口,接收和响应网络请求。

二、网络字节流处理。将收到的网络字节流转换成 Tomcat Request 再转成标准的 ServletRequest 给容器,同时将容器传来的 ServletResponse 转成 Tomcat Response 再转成网络字节流。

2、连接器模块设计

为满足连接器的两核心功能,需要一个通讯端点来监听端口;需要一个处理器来处理网络字节流;最后还需要一个适配器将处理后的结果转成容器需要的结构。

3、连接器结构图

 容器支持servletRequest和servletResponse对象,Processor支持Request和Response,中间依靠Adapter进行转化。

二、容器Container

Tomcat 容器框架——Catalina

0、Catalina核心地位

 

1、Catalina架构

四个容器Engine、Host、Context 和 Wrapper之间属于父子关系。

 2、Container架构

3、源码分析

三、Tomcat启动流程

0、基本流程

初始化:父组件调用init方法初始化自身,并初始化子组件

启动:父组件调用start方法启动自身,并启动子组件

 

 四核心任务:

加载Tomcat的配置文件,初始化容器组件,监听对应的端口号,准备接受客户端请求。

1、Lifecycle

 在上述启动中 Server、service、Container、executor、connector都调用了生命周期中的init start方法。

四、请求处理流程

逐字段解析URL首先根据域名确定虚拟主机Host,接着根据context应用程序确定,最后根据字段wrapper确定最终的执行方法。

Web应用配置

1、ServletContext初始化参数

ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。

 使用<context-parm>添加ServletContext初始化参数(键值对)

<context-param>
        <param-name>project01_parm</param-name>
        <param-value>itcast</param-value>
</context-param>

使用getServletContext().getInitParameter()获取初始化参数(传参为param-name)

String value = request.getServletContext().getInitParameter("project01_param");

2、

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

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

相关文章

软考:中级软件设计师:邮件加密系统,网络安全保障,网络威胁与攻击,防火墙技术

软考&#xff1a;中级软件设计师:邮件加密系统 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)

一 Web开发模式 1. 前后端混合开发模式 前后端混合开发模式是一种开发方式&#xff0c;将前端和后端的开发工作结合在一起&#xff0c;以加快项目的开发速度和 提高协作效率。这种模式通常用于快速原型开发、小型项目或敏捷开发中。在前后端混合开发模式中&#xff0c;前端和…

得物推荐引擎 - DGraph

1 前言 随着得物业务规模的不断增加&#xff0c;推荐业务也越来越复杂&#xff0c;对推荐系统也提出了更高的要求。我们于2022年下半年启动了DGraph的研发&#xff0c;DGraph是一个C项目&#xff0c;目标是打造一个高效易用的推荐引擎。推荐场景的特点是表多、数据更新频繁、单…

CSS 滚动容器与固定 Tabbar 自适应的几种方式

问题 容器高度使用 px 定高时&#xff0c;随着页面高度发生变化&#xff0c;组件展示的数量不能最大化的铺满&#xff0c;导致出现底部留白。容器高度使用 vw 定高时&#xff0c;随着页面宽度发生变化&#xff0c;组件展示的数量不能最大化的铺满&#xff0c;导致出现底部留白…

基于PID优化和矢量控制装置的四旋翼无人机(MatlabSimulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C语言每日一练------(Day3)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今天练习题的关键字&#xff1a; 尼科彻斯定理 等差数列 &#x1f493;博主csdn个人主页&#xff1a…

麒麟信安受邀参展第八届成都智博会,自主创新系列成果备受关注!

图片来源&#xff1a;人民网 日前&#xff0c;由四川省贸促会和四川省科学技术协会主办&#xff0c;中国国际商会与四川省互联网信息办公室、四川省密码管理局等18个省市相关部门支持的第八届中国&#xff08;成都&#xff09;智慧产业国际博览会&#xff08;以下简称“第八届成…

深度|沃尔玛眼中只有盒马,但盒马Fudi眼中却没有山姆

外资会员制超市是懂中国消费者的&#xff0c;尤其是懂4亿中国中产。 前有Costco&#xff08;开市客&#xff09;中国大陆首店上海开业当天&#xff0c;曾投放5吨10000瓶飞天茅台&#xff0c;还有Burberry、爱马仕等奢侈品直接被消费者瞬间秒空&#xff0c;最后由于慕名而来的人…

如何实现个人微信的自动回复?

自动回复这块&#xff0c;我知道的实现方法和形式有以下几种&#xff1a; 1.自动通过好友&#xff1a;针对有新的好友申请的时候&#xff0c;会自动通过好友&#xff0c;以免错过客户。 2.通过好友自动回复&#xff1a;针对被动通过好友后&#xff0c;自动给通过的微信好友发送…

ospf不规则区域划分和数据库表

华子目录 ospf不规则区域1.远离骨干的非骨干区域2.不连续骨干 不规则区域解决方案1.tunnel-点到点GRE2.ospf虚链路3.多进程双向重发布&#xff08;推荐&#xff09; ospf的数据库表 ospf不规则区域 1.远离骨干的非骨干区域 图示 2.不连续骨干 图示 不规则区域解决方案 …

Geodetector 应用excel显示宏损坏的解决办法

打开地理探测器 如果显示宏损坏&#xff0c;每次excel会自动删除文件中的宏文件&#xff0c;导致地理探测器不能运行&#xff0c;这样的解决办法主要是&#xff1a;修改电脑本身格式与excel宏文件运行格式一致&#xff1a; 区域格式改为中文&#xff0c;这样就可以运行了。

如何选择科研可视化的图表?(超全!总结10多个可视化代码资源)

Highlights 一张漂亮的配图能让论文增色不少&#xff0c;但现在的图表类型越来越丰富&#xff0c;学者们很难选择合适的绘图类型进行可视化。 随着大数据和云计算的发展&#xff0c;我们很容易就能获取大量的数据&#xff0c;但是将这些数据美观地展示出来不是一件容易的事情。…

Javaweb基础学习(4)

Javaweb基础学习&#xff08;4&#xff09; 一、JSP学习1.1 JSP的简介概述1.2 JSP快速入门1.3 JSP原理1.4 JSP脚本1.5 JSP缺点1.6 EL表达式1.7 JSL标签1.7.1 JSL快速入门 1.8 MVC 模式和三层架构1.9 三层架构 三、会话跟踪技术3.1 会话跟踪技术介绍3.2 Cookie的基本使用3.3、Co…

分布式集群框架——有关zookeeper的面试考点

3.掌握Zookeeper的概念 当涉及到大规模分布式系统的协调和管理时&#xff0c;Zookeeper是一个非常重要的工具。 1. 分布式协调服务&#xff1a;Zookeeper是一个分布式协调服务&#xff0c;它提供了一个高可用和高性能的环境&#xff0c;用于协调和同步分布式系统中的各个节点…

输入设备应用编程

目录 输入类设备编程介绍什么是输入设备input 子系统读取数据的流程应用程序如何解析数据 读取struct input_event 数据在开发板上验证按键应用编程触摸屏应用编程解析触摸屏设备上报的数据获取触摸屏的信息单点触摸应用程序多点触摸应用程序 鼠标应用编程 本章学习输入设备的应…

私域流量的本质是什么?

私域流量的本质可以总结为以下几点&#xff1a; ①用户拥有权: 私域流量的关键是企业拥有对用户数据和互动的掌控权 ②长期价值: 建立持久的、互惠的关系&#xff0c;以便长期吸引、留住客户&#xff0c;并不断提高他们的价值。这与公域流量通常更侧重于短期转化的特性不同。…

华为加速回归Mate 60发布, 7nm全自研工艺芯片

华为于今天12:08推出“HUAWEI Mate 60 Pro先锋计划”&#xff0c;让部分消费者提前体验。在华为商城看到&#xff0c;华为Mate 60 pro手机已上架&#xff0c;售价6999元&#xff0c;提供雅川青、白沙银、南糯紫、雅丹黑四种配色供选择。 据介绍&#xff0c;华为在卫星通信领域…

玉米叶病害识别(图像连续识别和视频识别,python代码,pytorch框架)

代码运行要求&#xff1a;Torch>1.13.1即可 效果视频玉米叶病害识别&#xff08;图像连续识别和视频识别,python代码&#xff0c;pytorch框架&#xff09;_哔哩哔哩_bilibili 1.数据集介绍&#xff1a; Blight(枯萎病),1145张照片 Common_Rust&#xff08;褐锈病&#xff0…

C语言二——sqrt函数

sqrt 是C语言中的一个数学函数&#xff0c;用于计算平方根。它的函数原型如下&#xff1a; double sqrt(double x); sqrt 函数接受一个浮点数参数 x&#xff0c;并返回 x 的平方根&#xff0c;结果也为浮点数类型。 这段代码计算了一个数字的平方根并输出结果。具体而言&#…

Android.mk开发模板

今天简单写了一个 Android.mk 的示例模板&#xff0c;供初学者参考。 本模板主要给大家示例 Android NDK 开发中的如下几个问题&#xff1a; 如何自动添加需要编译的源文件列表如何添加第三方静态库、动态库的依赖如何构造一个完整的NDK工程框架 假设我们的项目依赖 libmath.…