首页 > 其他分享 >servlet容器,web容器,spring容器,springmvc容器的区别(转载)

servlet容器,web容器,spring容器,springmvc容器的区别(转载)

时间:2023-04-13 11:58:55浏览次数:48  
标签:容器 Servlet 初始化 springmvc Spring spring servlet

 

这个理解我可以通过一个http的页面请求来说明。

说明 

Tomcat&Jetty在启动时给每个Web应用创建一个全局的上下文环境,这个上下文就是ServletContext,其为后面的Spring容器提供宿主环境。

Tomcat&Jetty在启动过程中触发容器初始化事件,Spring的ContextLoaderListener会监听到这个事件,它的contextInitialized方法会被调用,在这个方法中,Spring会初始化全局的Spring根容器,这个就是Spring的IoC容器,IoC容器初始化完毕后,Spring将其存储到ServletContext中,便于以后来获取。

Tomcat&Jetty在启动过程中还会扫描Servlet,一个Web应用中的Servlet可以有多个,以SpringMVC中的DispatcherServlet为例,这个Servlet实际上是一个标准的前端控制器,用以转发、匹配、处理每个Servlet请求。

Servlet一般会延迟加载,当第一个请求达到时,Tomcat&Jetty发现DispatcherServlet还没有被实例化,就调用DispatcherServlet的init方法,DispatcherServlet在初始化的时候会建立自己的容器,叫做SpringMVC 容器,用来持有Spring MVC相关的Bean。同时,Spring MVC还会通过ServletContext拿到Spring根容器,并将Spring根容器设为SpringMVC容器的父容器,请注意,Spring MVC容器可以访问父容器中的Bean,但是父容器不能访问子容器的Bean, 也就是说Spring根容器不能访问SpringMVC容器里的Bean。说的通俗点就是,在Controller里可以访问Service对象,但是在Service里不可以访问Controller对象。

简言之: Servlet容器-Tomcat创建全局应用上下文ServletContext,启动的时候触发容器初始化操作创建Spring Ioc容器;当第一请求到达,会调用DispatchServlet init方法创建Spring Mvc 容器并将前者作为父容器。

 

web容器中有servlet容器,spring项目部署后存在spring容器。其中spring控制service层和dao层的bean对象以及controller层bean对象。servlet容器控制servlet对象。项目启动是,首先 servlet初始化,初始化过程中通过web.xml中spring的配置加载spring配置,初始化spring容器。待容器加载完成。servlet初始化完成,则完成启动。springmvc是viewAndModie的请求传递和结果解析。本身并没有容器管理,都是交给spring管理。
HTTP请求到达web容器后,会到达Servlet容器,容器通过分发器分发到具体的spring的Controller层。执行业务操作后返回结果。
————————————————
版权声明:本文为CSDN博主「万米高空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhanglf02/article/details/89791797

标签:容器,Servlet,初始化,springmvc,Spring,spring,servlet
From: https://www.cnblogs.com/r1-12king/p/17314136.html

相关文章

  • Spring02_Spring0配置
    一、Spring0配置开发​ 从Spring3.0版本开始,Spring框架尽量不再使用Spring配置文件来配置管理任何Bean,而是采用自动搜索某些路径下的Java类,并将这些Java类注册成Bean示例。并使用注解Annotation的方式来标注要管理的Bean.​ Spring要求程序开发人员显示的指定......
  • Spring Quickstart Guide同步构建测试
    进行了前置的配置后,打开IDEA,进行环境构建,第一次运行结果 把JDK更换为17版本后同步成功   输出结果  浏览器运行结果 ......
  • 基于Java+Springboot+vue网上商品订单转手系统设计和实现
    基于Java+Springboot+vue网上商品订单转手系统设计和实现一、前言介绍:1.1项目摘要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装网上商品订单转手系统软件来发挥其高效地信息处理......
  • spring源码-之解决循环依赖
    Spring如何解决循环依赖为了解决循环依赖,Spring使用了三级缓存。一级缓存用于存储bean定义。二级缓存用于存放已经创建但还没有完全初始化的前期bean实例。三级缓存用于存放完全初始化的bean实例。当检测到循环依赖时,Spring会创建一个部分初始化的bean实例并将其存储在二......
  • springboot学习随笔
    1.大纲-springboot框架1.什么是Springboot以及Springboot的特点。2.快速搭建springboot项目3.springboot常用的配置文件类型.4.读取springboot配置文件的内容5.多环境配置6.springboot整合数据源。7.springboot整合mybatis.8.springboot整合定时器。2.Springbo......
  • spring事务里面开启线程插入,报错了是否会回滚?
    1.前言一道非常有意思的面试题目。大概是这样子的,如果在一个事务中,开启线程进行插入更新等操作,如果报错了,事务是否会进行回滚2.代码示例1@RequestMapping("/test/publish/submit")publicStringtestPublish1(){ log.info("start..."); transactionTemplate.execute(new......
  • 88-云原生操作系统-Jenkins和LNMP架构业务容器化案例
    前提:基础镜像的构建请参考分层镜像构建并部署业务到Kubernetes集群生产案例基于StatefulSet实现MySql业务容器化案例Pod调度运⾏时,如果应⽤不需要任何稳定的标示、有序的部署、删除和扩展,则应该使⽤⼀组⽆状态副本的控制器StatefulSet来部署应⽤,例如Deployment或ReplicaSet更适......
  • SpringBoot向web容器注入Servlet,Filter及SpringSecurity注册DelegatingFilterProxy
    从SpringSecurity架构图可知SpringSecurity的过滤器与Web容器的过滤器是通过DelegatingFilterProxy接入的。由DelegatingFilterProxy代理了FilterChainProxy,FilterChainProxy包含了SpringSecurity的过滤器链。 那么DelegatingFilterProxy是怎么创建及如何加入到Web容器中? 看......
  • Springmvc常用注解参数与返回值
    1.常用注解1.1.@RequestMapping@RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。标注在方法上用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法@ControllerpublicclassHelloController{......
  • Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射
    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物......