spring开发笔记(1)tomcat容器运行原理

Sigrity Power DC Resitance Network Model Generation模式生成电阻SPICE模型操作指导 Sigrity Power DC Resitance Network Model Generation模式是用于提取负载每个pin电阻SPICE模型的,结果以spice网表形式展现,仍然以Motherboard.spd为例进行说明。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。P/F Mode:通过/失败模式,选择Worst,最差的情况。 阅读详情

我们开发的web应用都是跑在web容器中的。Tomcat就是一个常用的Web容器。对于java web开发,安装好jdk及java集成开发工具后,第一要紧的事是安装tomcat。在linux下,从tomcat官网下载tomcat压缩文件后,直接解压就可以了。进入tomcat目录,能看到如下目录:


其中bin目录是里存放了tomcat的启动脚本,conf目录保存的是tomcat的配置文件。在命令行中进入bin目录,执行

$sh ./catalina.sh run

就可以启动tomcat了。在浏览器输入localhost:8080,如果看到以下内容,就说明tomcat启动成功了:

 

我们开发的web应用,可以认为就是一个”网站“。只有将web应用放到tomcat容器里运行,我们才可以访问到。那么,我们编写的web应用要放到tomcat的什么地方才能运行呢?要符合什么规范才能运行呢?tomcat怎么运行放置在其中的web应用呢?

 

Tomcat规定,所有的web应用,都放在它的webapps目录下,每个web应用对应该目录下的一个子目录。进入tomcat的webapps目录,可以看到如下:


除了springtest这个子目录是我创建的之外,其他的几个子目录都是tomcat自带的。从上图可以看出,tomcat自带了examples、manage等多个web应用,springtest这个Web应用是我部署上去的。

 Tomcat规定了每个web应用的格式,以springtest这个web应用为例,先看看其目录:


在springtest目录下,有WEB-INF子目录,在WEB-INF目录下,有配置文件web.xml,另外有classes目录,一般是用来存放编译好的java字节码文件;而lib目录通用用来存放web应该所依赖的jar包。

 

tomcat规定,每个web应用必须具有WEB-INF子目录,在WEB-INF目录下必须存放有web.xml配置文件。Tomcat启动后,对于webapps下的每个应用(目录),都会先去它的WEB-INF目录下读取配置文件web.xml,然后通过加载该应用下的相关类文件,进而完成该web应用的启动工作。

 

Web应用启动后,tomcat又是怎么处理http请求的呢?一个tomcat容器下可以有多个web应用,tomcat是怎么知道哪个http请求给哪个web应用处理呢?tomcat是根据http请求的uri来决定将请求交给哪个web应用来处理的。以上面为例,所有访问http://localhost:8080/springtest/xxxx的请求都会交给springtest这个应用处理,而所有访问http://localhost:8080/manager/xxxx的请求都会交给manager应用处理。而如果请求没有写请求路径,比如访问http://localhost:8080的请求则会交给ROOT这个应用处理,因为ROOT应用是tomcat的默认应用。

 

Tomcat决定了将请求交给哪个web应用处理后,web应用又是怎么处理这个请求的呢?tomcat是符合servlet规范的web容器,servlet规范规定,http请求是由servlet来处理的,因此,每个web应用都应该编写自己的servlet,tomcat根据http请求的uri决定将请求交给哪个servlet处理,servlet处理后生成相应的response返回给tomcat,再由tomcat将response返回给客户端。而每个web应用的WEB-INF目录下的web.xml配置文件,就是用来告诉tomcat该web应用有哪些servlet,它的类是什么,它们各处理什么类型的uri的http请求。以springtest为例,其web.xml配置文件如下所示:

<?xmlversion="1.0" encoding="UTF-8"?>
<web-app version="3.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <!--配置DispatcherServlet-->
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

其中<servlet-name>定义了servlet的名称,<servlet-class>则指明了servlet类的全限定名,<servlet-mapping>元素则定义了该servlet处理哪些uri格式的请求,“/”表示处理所有的请求。从上面的web.xml配置文件可以看出,springtest只定义了一个servlet,且该servlet处理所有的http请求。


因此,当我们要启动web应用时,可以将符合要求的web文件夹整个拷贝到tomcat的webapps目录下,再启动tomcat。但显然这样太麻烦了,因此,一般都是将web应用打成war包,然后将war包拷贝到tomcat的webapps目录下,tomcat会自动将war包解压并运行。
【制作100个Unity游戏之36】用unity从零开始实现类《开心消消乐》的三消类消除解压小游戏 Unity甜品消除游戏开发摘要 本文介绍了使用Unity开发甜品消除游戏的核心实现步骤: 冰块阵列生成 通过GlobalDef定义全局参数(9行7列网格) IceSpawner脚本动态生成网格化冰块阵列 添加Resolution脚本实现多分辨率适配 随机水果生成 创建FruitSpawner作为水果容器 FruitItem脚本管理水果属性(行列索引、类型) 支持动态创建水果精灵并设置位置 关键技术点 使用Instantiate动态生成预制体 通过localPosition精确控制网格布局 分辨率适配算法保持 阅读详情

相关推荐

迈创Cameralink采集卡与MIL软件集成开发实战指南

本文详细介绍了迈创Cameralink采集卡与MIL软件的集成开发实战指南,涵盖硬件安装、驱动配置、MIL软件深度设置及图像采集处理等关键步骤。特别适合工业视觉检测和医疗影像领域,通过优化配置和性能调优,实现高速稳定的图像处理。

weixin_29204205的博客 423

spring boot 启动访问 404

正常搭建springboot项目启动访问 http://localhost:8080/ 会显示一个错误页面 今天刚新建一个 springboot 项目,访问 404错误,由于手欠将端口号改为 6666,后台也不会报错 查了很久原因发现,谷歌浏览器禁用了6666端口,用 postman 测试6666端口正常 谷歌浏览器限制 6666 端口 如果你访问其他路径还是返回错误页面,可以从以下几方面排除 ①、application.properties 配置了server.servlet.context-path

不懂一休 1万+

平面变压器PCB绕组设计实战:从原理到布局的工程考量

本文深入探讨了平面变压器PCB绕组设计的工程实践,从基础原理到布局优化,涵盖了电流密度、层间绝缘、绕组拓扑结构等关键参数。通过实战案例分享,解析了高频应用中的集肤效应、邻近效应等挑战,并提供了热管理和EMC优化的实用技巧,助力工程师在服务器电源、车载充电器等空间敏感场景实现高效设计。

weixin_42666036的博客 453

spring框架学习过程的小知识

spring框架学习过程中的小知识及问题汇总

凤歌 927

Spark on Yarn 高可用模式部署流程

本文介绍了如何配置Spark和Yarn的高可用(HA)环境,以确保在大规模数据处理中避免单点故障。

xhaoDream的博客 1444

5分钟上手,Cursor + IntelliJ IDEA 双端开发:高效协同的终极方案

最好的工具,是让你忘记工具的存在。通过AI 的创造力(Cursor)IDE 的工程力(IDEA)无缝的上下文流转(插件协同)从此,不再手忙脚乱切窗口,不再迷失在文件树中。只需一个快捷键,专注编码本身。装上这两个插件后,日常开发体验虽然没有天翻地覆的变化, 但至少摸鱼的几个小时时间是有的!

weixin_44058951的博客 2198

TOMCAT原理

一、TOMCAT的基本架构 二、Coyote连接器 三、Catalina容器 四、启动流程介绍 五、请求处理流程介绍 六、Jasper引擎 七、服务器配置 1、Server、Service 2、Executor 3、Connector 4、Engine、Host 5、Context ...

liming0025的专栏 5490

K-L展开 (Karhunen-Loeve expansion)

K-L变换

susan_wang1的博客 2万+

Tomcat基本原理

Tomcat启动期间会通过解析 server.xml,利用反射创建相应的组件,所以xml中的标签和源码一一对应。

quanzhan_King的博客 2643

十二、基于FPGA实现slave SelectMAP配置逻辑

slave SelectMAP配置

weixin_41838250的博客 8754

从零开始学 PyTorch 7天路线图(完整可运行代码版)

本文提供了5天PyTorch入门教程的完整代码,涵盖从基础到实战的核心内容。Day1测试环境并介绍张量基础;Day2讲解常用张量操作;Day3演示自动求导机制;Day4实现完整线性回归模型;Day5构建MNIST手写数字识别全连接网络。所有代码可直接运行,包含GPU检测、梯度计算、模型训练和可视化等关键环节,帮助新手快速掌握PyTorch核心概念和典型应用场景。

IT老农民的博客 314

Tomcat工作原理详细介绍

大部分企业的 Web 应用都运行在它上面,Tomcat 对于程序员来说算是老朋友了,那么今天带大家走近这位老朋友,看看它是如何处理 Web 请求,以及它内部的体系结构,这对帮助我们理解 Tomcat 的使用大有益处。本文你将会学会如下内容:Web 容器与 TomcatTomcat 连接器Tomcat 容器要说清楚 Tomcat 做的事情先要从早期的 Web 应用说起。图 1:浏览器通过 HTTP 服务器获取静态资源如图 1 所示,最开始用户通过浏览器查看诸如新闻之类的静态资源,此时就需要通过 HTTP 服务

Java搜索工程技术栈 6216

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

Spring 项目 基于 Tomcat容器进行部署

尽管市场上许多新项目都已经转向 Spring Boot,但对于一些老旧的 Spring 项目,尤其是维护期较长、涉及多个业务的系统,依然需要开发者掌握如何将这些项目正确地部署到 Tomcat 容器中。因此,撰写这篇文章的目的就是为了帮助开发者和运维人员能够在面对老的 Spring 项目时,快速而准确地完成部署任务。

书生-w的博客 1774

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

通过tomcat容器启动spring容器的启动过程

参考网站:https://www.cnblogs.com/RunForLove/p/5688731.html 通过对spring源码的解读,跟踪spring容器的启动过程,掌握SpringMVC是如何工作的;掌握Spring源码的设计和增强阅读源码的技巧。为可持续性的使用spring框架高效集成开发,解决系统一些疑难杂症提供强有力的支撑。 一、需要掌握的理论业务点: 1、Web容器初始化过程...

追逐消失的记忆 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

tomcat + spring mvc 原理(一):tomcat原理综述和静态架构

tomcat + spring mvc 原理(一):tomcat原理综述tomcat + spring mvc的运作模式tomcat内部的基本容器构成tomcat容器对应的外部配置     tomat + spring mvc 是目前比较流行java微服务体系架构,包括现在的spring boot以及基于spring boot的进一步应用化封装的spring...

nod 3954

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat

在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。

weixin_61635597的博客 2906

分析SpringBoot 底层机制【Tomcat 启动分析+Spring 容器初始化+Tomcat 如何关联Spring 容器之手动实现

因为我之前的博客有手写Tomato Spring SpringMVC MyBits 机制所以这里就手写了Spring-boot这么去启动tomato的代码过程和他的原理。看看是否进行Spring 容器的初始化工作, 可以看到ac.refresh() 会将WyxConfig.class 中配置Bean 实例化装入到容器中.严重: Servlet [jsp] in web application [/Wyxboot] threw load() exception。

业精于勤,荒于嬉 2020

分析 SpringBoot 底层机制【Tomcat 启动分析 +Spring 容器初始化 +Tomcat 如何关联 Spring 容器 】

笔记型博客-->分析 SpringBoot 底层机制【Tomcat 启动分析 +Spring 容器初始化 +Tomcat 如何关联 Spring 容器 】

weixin_54107527的博客 2671

Tomcat 是什么?有什么功能和作用?为什么启动 Spring 或 Spring Boot 项目需要 Tomcat?

本文的内容是博主学习并记录关于 Tomcat 的基本知识,介绍了 Tomcat 为什么是一个 Web 应用服务器,为什么是 Servlet 容器,同时总结了 Tomcat 的一些功能原理,并详细介绍了 Tomcat 在 Spring 和SpringBoot 项目中的使用原理。本文不涉及安装和使用说明。

青灯文案的博客 1万+

Spring MVC Tomcat容器,Spring容器,SpringMVC容器之间的关系

Spring MVC Tomcat容器,Spring容器,SpringMVC容器之间的关系

weixin_45428910的博客 1452

jvm,tomcat,spring的bean容器,三者的关系

特点:一个操作系统进程(java 进程),运行一个或多个 Java 应用(但通常一个 JVM 只跑一个 Tomcat 实例)。它负责 加载你的 Web 应用(WAR/目录),并初始化其中的 Servlet、Filter、Listener。一个 Web 应用可以有 多个 Spring 容器(如 Root Context + Web Context)。Spring 容器 不是 Tomcat 的一部分,而是 你的应用代码引入的框架。一、JVM、Tomcat、Spring Bean 容器三者的关系。

记录学习路上的每一个 “啊哈!” 时刻 欢迎交流,共同进步! 848

Web服务器、Web容器、Servlet容器、Spring容器、SpringMVC容器

一、服务器和容器 1. Web服务器 2. Web容器 ① Web容器的组成 ② Web容器的作用 3. Servlet容器 ① Servlet容器的作用 ② Servlet容器的工作过程 ③ Servlet ④ Servlet的工作过程 ⑤ Servlet变化过程 4. Spring容器 5. SpringMVC容器 6. SpringBoot容器 二、容器相关知识归纳 1. 各种容器的管理范围 2. 为何设计父子容器 3. 父子容器的事务问题 三、各种项目中的容器 1. SpringMVC项目 ① 项目

骑个小蜗牛的博客 2万+

【SpringBoot 快速开发】Tomcat 服务器入门:目录结构、部署方式与 Spring Boot 内嵌容器原理

本文摘要:Tomcat是Apache基金会开源的轻量级Web服务器和Servlet容器,支持Servlet/JSP规范。主要内容包括:1) Tomcat下载安装与环境配置;2) 常见问题处理(乱码、端口占用);3) 部署Web应用的三种方式;4) 目录结构与核心配置文件说明;5) SpringBoot内嵌Tomcat的简化配置。重点掌握Tomcat作为Servlet容器的作用、基本配置及与JavaEE规范的关系,建议开发使用SpringBoot内嵌Tomcat,生产环境可选择独立部署。

懿轩的技术小窝 2007

从tomcat说起全面理解Java web开发原理

简介:Java开发分为Java ME,Java SE,Java EE。回顾过去这些的开发工作基本上都是围绕着Java EE的,在开发经历中分别经历了Java EE开发框架从jsp servlet一路经历了ssh, ssm, springboot mybatis ,spring cloud演化,但是Java web开发过程中web容器却是一路相随tomcat,本篇文章将从tomcat的角度介绍一下http请求的整个链路。

作者:大头兵(kit) 1867

spring boot启动加载tomcat原理深度剖析

spring boot应用打包成Fat jar时,启动内嵌tomcat的原理;spring boot应用打包成WAR时,外部tomcat启动spring boot SpringApplication的原理;自动化配置Servlet/ServletFilter/ServletListener的原理

ac_dao_di的专栏 5793
上一篇: 《深入理解Java虚拟机》学习笔记(8)--线程安全与锁优化
下一篇: spring开发笔记(2)spring原理及入门
halfclear
博客等级 码龄10年 32粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值