springMVC整体结构

Spring 第二讲:spring项目结构 一、项目结构 1、WebContent 1.1 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmln 阅读详情

整体结构

先看下spring中DispatcherServlet的继承结构:
这里写图片描述
HttpServlet是Servlet规范,HttpServletBean,FrameworkServlet,DispatchServlet是SpringMVC中的。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
XXXAware在Spring中表示对XXX可以感知,通俗点解释就是:如果在某个类里面想要使用spring的一些东西,就可以通过实现XXXAware接口告诉spring,spring看到后就会给你送过来,而接收的方式是通过实现接口唯一的方法set-XXX。

比如某个类想要使用ApplictionContext,那么只需要实现ApplicationContextAware接口,Spring会自动调用该方法将ApplicationContext传过来。

具体的执行就是Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContextAware()方法,调用该方法时,会将容器本身作为参数传给该方法。

XXXCapable接口表示具有XXX的能力,比如EnvironmentCapable,就是具有Enviroment的能力,就是告诉spring它可以提供Enviroment,当Spring需要Enviroment的时候就会调用其getEnviroment方法跟它要。

看一个例子:
这里写图片描述
这里写图片描述

断点处Controller获取了Enviroment的信息,具体的Enviroment中的属性可以分别研究,Enviroment非常强大!

HttpServletBean

HttpServletBean是GenericServlet的子类,所以初始化使用的是init()方法
这里写图片描述
有2点功能,1)使用BeanWrapper(可以搜索BeanWrapper的使用,也可以可以参考BeanWrapper剖析)将Servlet的配置参数设置到DispatchServlet的相关属性中。2)调用了模板方法initServletBean()
这里写图片描述
这个方法是子类初始化的入口方法,HttpServletBean的子类通过实现这个方法来进行初始化。

FrameworkServlet

FrameworkServlet是HttpServletBean的子类,所以其初始化方法是initServletBean()。
这里写图片描述
主要就做了两件事:

1.初始化WebApplicationContext
这里写图片描述
2.初始化FrameworkServlet
这里写图片描述
这是一个模板方法
initWebApplicationContext()主要做了3件事
1)获取spring的根容器rootContext
2)设置webApplicationContext并根据情况调用onRefresh方法
3)将webApplicationContext设置到ServletContext中

具体分析下
1)获取spring的根容器rootContext
这里写图片描述
这里写图片描述
这里写图片描述

原理是: 默认情况下Spring会将自己的容器设置成ServletContext的属性,默认根容器的key就是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
所以只需要调用ServletContext#getAttribute(“key”)就可以了

2)设置webApplicationContext并根据情况调用onRefresh方法
分3种情况设置webApplicationContext,并调用onRefiresh,三种情况都会调用onRefresh,并且仅调用一次。且onRefresh是DispatchServlet的入口方法。
3)将webApplicationContext设置到ServletContext中
这个也是Servlet的配置项,如果配置了publishContext,此时会将webApplicationContext设置到ServletContext中。

DispatchServlet

onRefresh是DispatchServlet的入口方法
这里写图片描述

很清晰,onRefresh方法调用了initStrategies方法,initStrategies方法调用了9个初始化方法来初始化DispatchServlet的组件。
具体的组件初始化的逻辑这里就先略过了。

总结

SpringMVC中Servlet一共有三个层次,分别是HttpServletBean、FrameworkServlet和DispatchServlet,HttpServletBean作用是将Servlet中配置的参数设置到相关的属性,FrameworkServlet初始化WebApplication,DispatchServlet初始化组件。
结构非常清晰,实现比较复杂,结构清晰,因为顶层设计好,实现复杂因为功能强大。

Oracle迁移至华为GaussDB SQL语法和存储过程转换 在将Oracle数据库迁移至GaussDB时,SQL语法和存储过程的转换是确保应用程序正常运行和数据完整性的关键环节。由于两者在数据类型、函数、过程语言等方面存在差异,必须系统化地进行转换和测试。正则表达式脚本:批量替换常见的语法差异。SQL解析工具:解析SQL脚本,生成GaussDB兼容的语法。代码审查工具:自动检查转换后的代码,确保语法和逻辑正确。将Oracle迁移至GaussDB涉及到SQL语法和存储过程的全面转换。通过系统化的转换步骤、使用合适的工具并结合手动调整,可以确保迁移过程的顺利进行。 阅读详情

相关推荐

从淬火实验到仿真验证:用ANSYS APDL复现钢球冷却温度变化(含动画生成教程)

本文详细介绍了如何利用ANSYS APDL进行淬火过程的瞬态热分析仿真,以复现钢球冷却温度变化。内容涵盖从实验数据校准材料参数、构建高保真模型、设置非线性瞬态求解,到提取节点温度曲线和生成温度云图动画的全流程。通过APDL命令流实现自动化,为工程研发和学术研究提供高效、可靠的仿真验证方法。

pz8901234的博客 791

SpringMVC框架详解(学习总结)

MVC 设计模式一般指 MVC 框架,M(Model)指数据模型层,业务模型层,V(View)指视图层,C(Controller)指控制层。使用 MVC 的目的是将 M 和 V 的实现代码分离,使同一个程序可以有不同的表现形式。MVC 属于架构模式的一种,所谓架构就是如何设计一个程序的结构。MVC 将程序结构划分为三层,每一层都对外提供了可供上层调用的接口,既能维系三层之间的联系,也能保持相对的独立性。这种将业务逻辑、数据和界面分离的代码组织形式,降低了模块间的耦合度,有利于日后的维护与扩展。

swy2560666141的博客 1万+

IC版图设计布局经验90条!

13 如果一个cell调用其它cell,被调用的cell的vssx,vddx,vssb,vddb如果没有和外层cell连起来,要打上PIN,否则通不过diva检查.尽量在布局低层cell时就连起来。48 在匹配电路的mos管左右画上dummy,用poly,poly的尺寸与管子尺寸一样,dummy与相邻的第一个poly gate的间距等于poly gate之间的间距。8 更改cell时查看路径,一定要在正确的library下更改,以防copy过来的cell是在其他的library下,被改错。

weixin_44606964的博客 909

SpringMVC 概述三层架构

根据ModelAndView中的视图名查找相应的View实现类,然后将查找的结果返回给DispatcherServlet,DispatcherServlet最终会将ModelAndView中的模型数据交给返回的View处理最终的视图渲染工作。后端接受的对象是含有List属性的,那么前端的name值格式要和后端list属性名称一致,而且用索引的格式 list[0].属性(list集合里对象的属性名称)1)日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。

weixin_65700815的博客 5297

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

weixin_45735391的博客 17万+

爬取Unsplash高清壁纸:Python爬虫实战教程(最新技术)

在当今数字化时代,高清壁纸已经成为人们个性化设备的重要元素。Unsplash作为全球最知名的免费高质量图片网站,汇集了数百万张由全球摄影师贡献的高清图片。然而,Unsplash官网的下载方式需要手动操作,对于需要批量下载壁纸的用户来说效率较低。本文将带你深入探索如何使用Python爬虫技术高效爬取Unsplash高清壁纸,从基础到进阶,全面掌握图片爬取的核心技术。Unsplash成立于2013年,是一个完全免费的图片分享平台。高质量内容:所有图片均由专业摄影师上传,分辨率普遍达到4K以上免费商用。

2201_76125261的博客 935

Spring Boot项目结构

目录Spring Boot项目结构一、代码层结构二、资源目录结构三、测试测序目录结构四、项目结构示例 Spring Boot项目结构 一、代码层结构 根目录:src/main/java 入口启动类及程序的开发目录。在这个目录下进行业务开发、创建实体层、控制器层、数据连接层等。 启动类CloudCustomerServiceApplication.java推荐放在src/main/java/com.user下 数据库实体层pojo model层即数据库实体层,也被称为entity层,pojo

weixin_44814196的博客 2万+

【人工智能】拒绝焦虑,理性突围:AI 时代 Java 工程师的职业重构与进化指南

摘要:在AI技术快速发展的背景下,Java工程师面临职业转型挑战。本文通过MECE原则解构工作内容,划分高替代风险区(如CRUD开发)、高增效潜能区(如逻辑优化)和高核心壁垒区(如架构设计),指出AI对不同任务的影响程度。从劳动经济学视角分析行业将呈现K型分化,初级执行者被替代,而精通AI协作的全栈工程师需求增长。文章强调警惕过度依赖AI导致认知能力退化,并提出转型路径:掌握AI驱动开发(AIDD)、深耕领域驱动设计(DDD)、拓展全流程能力及AI原生应用开发。最终结论指出,未来的核心竞争力在于结合AI工具

奶爸的编程之路,也就一周冷个三天 132

SpringMVC基本结构

服务端三层架构分为:表现层、业务层、数据层(持久层)。表现层调用业务层,业务层调用数据层。 MVC模式分为三层:控制层(负责处理请求)、模型层(控制层与视图层的纽带)、视图层(负责渲染),这三层集体解决表现层的问题。 客户端请求访问服务器,访问的是Controller控制器,这个控制器组件接收请求中的数据,然后去调用业务层处理,处理完成后会将得到的数据封装到model中,并传给视图层,视图层利用数据生成html,返回给浏览器,最终浏览器通过视图层得到了html。 ...

qq_42732184的博客 687

【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量

JDK使用时的执行流程: • 开发者视角(需要开发java程序):需要安装JDK a. 首先使用JDK调用Tools&Tool APIs(开发者工具)编写好Java程序--xxx.java b. 再次调用Tools&Tool APIs中的javac.exe(编译程序)来编译.java文件(将java文件编译成字节码.class文件) c. 调用java.exe来启动JRE d. 在JRE上运行JAVA字节码(加载特定的.class文件,调用这个class文件中的main方法

Yaoyao2024的博客 2163

⑩电子产品拆解分析-家用无线遥控开关433Mhz

①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;

a6662580的博客 4690

SpringMVC之框架整体结构

SpringMVC框架的总体简介: 1.总体分为三部分:M-model模型,V-view视图,C-controller控制; 举例: Model-Dao或者Service层次 View-JSP、Freemarker、Velocity等 Controller-ActionServlet、DispatcherServlet、StrutsAndPrep...

weixin_33935505的博客 350

详解YOLOv5网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署

本文给大家带来的教程是利用YOLOv5训练自己的数据集,以及有关YOLOv5的网络结构讲解/数据集获取/环境搭建/训练/推理/验证/导出/部署相关的教程,同时通过示例的方式让大家来了解具体的操作流程,过程中还分享给大家一些好用的资源,我还对其中的参数进行了详细的讲解,通过本文大家可以成功训练自己的数据集,在开始之前给大家推荐一下我的YOLOv5专栏,本专栏包含上百种YOLOv5的改进机制以及如何撰写论文的教程,手把手教大家如何改进YOLOv5非常适合科研小白。

Snu77的博客 4898

SpringMvc源码(一)-- 整体结构

1.整体结构    SpringMvc中三个主要的类,分别为HttpServletBean,FrameworkServlet,DispatcherServlet。    HttpServletBean直接继承HttpServlet,   FrameworkServlet继承了HttpServletBean,DispatcherServlet继承了FrameworkServlet。    过程是这样...

mutianyang1的博客 1113

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝牙模块HM-10手册

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

springmvc三十一:spring mvc整体结构

m0_37564426的博客 260

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SpringMVC之器

本章分析SpringMVC自身的创建过程,首先分析SpringMVC的整体结构,然后具体分析每一层的创建过程 整体结构介绍 在Servlet的继承结构中一共有5个类,GenericServlet和HttpServlet在java中 剩下的三个类HttpServletBean、FrameworkServlet和DispatcherServlet是SpringMVC中的 这三个类直接实现三个接口:En...

八位比特的博客 204

老版QQ原生表情gif动态

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

SpringMvc分析总结篇

自己写了SpringMvc源码分析也好长时间了,有点遗忘了 发现文章也慢慢变多,现在也是时候该整理下思路,分类下自己写过的一些文章,然后再顺便回顾回顾 应用部分 最小化配置 源码分析篇 Springmvc源码分析之整体结构分析 Springmvc源码分析之组件初始化部分 SpringMvc源码分析之9大组件 SpringMvc源码分析之RedirectView SpringMvc源码分析之View...

菜鸡旭旭 299

SpringMVC源码分析--整体结构和容器组件的初始化(一)

整体结构如图:      一、解析aware和capable 1. XXXAware 在Spring里表示对XXX可以感知,通俗点解释就是,如果某个类里面想要使用spring的一些东西,就可以通过实现XXXAware接口告诉spring,spring看到后就给你送过来,而接受的方式就是通过实现接口唯一的方法setXXX。 例如:有一个类想要使用ApplicationContext接口,然后...

Visonws的博客 1680

带你逐步深入了解SSM框架——SpringMVC框架详解

1      SpringMVC架构 1.1    Spring web mvc介绍   Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来:         1.2    Web MVC   mvc设计模式在b/s系统下应用:     1、  用户发起request请求至控制

宇翔XGT的博客 6764

springMVC整合mybatis

springMVC整合mybatis 概要 本篇主要记录使用注解来整合springMVC和mybatis 项目整体结构 需要导入的依赖 SpringMVC配置 整合Mybatis 1. 项目整体结构 2.需要导入的依赖 &lt;properties&gt; &lt;project...

枫秀天涯的博客 628

java框架springmvc_Java框架-Spring MVC理解003-spring MVC自身的创建

spring MVC自身的创建1.整体结构介绍springMVC中核心servlet的继承结构:从结构图中可以看到,servlet的继承结构中一共有5个类。这里来说一下spring中的三个类。这三个类直接实现三个接口:EnvironmentCapable、EnvironmentAware和Application-ContextAware。XXXAware在spring里表示对XXX可以感知,通俗点...

weixin_36068796的博客 89

springMvc

1.SpringMVC简介 1.1.SpringMVC整体结构 1.2.什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据。 JavaBean分为两类: 储业务数据的,如Student、User等。 业务处理Bean:指Service或Dao对象,专门用于处理业务逻辑和数据访问。 V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据。 C:Controller,控

qq_41141022的博客 350

java源码 - SpringMVC(1)之 初始组件

SpringMVC的本质是一个Servlet 建议看SpringMVC源码时,对 文章目录1. 环境搭建(maven) 1. 环境搭建(maven)

littlewhitevg的博客 275

【SpringMVC】十分钟跑起来一个SpringMVC项目

springMVC

qq_53433382的博客 874

springMVC详细配置+Mysql+jdbcTemplate实现分页功能

本例子使用到的相关技术有:springMVC+MySQL+jQuery+jdbcTemplate+jstl+json+bootstrap等 (P:网上很少找到完整的springMVC+mysql实现分页查询,所以就自己详细的做了一个完整的例子) (环境:jdk1.6 +tomcat7.0+mysql+eclipse....) (包/文件:json.lib+jquery.js+spri

zhoujn15的博客 1024

SpringMVC文件上传接口设计与实现

1 前两篇文章的铺垫 1.1SpringMVC文件上传源码分析前言 1.2apache fileupload源码分析 2 整体的包结构 首先看下整体的包的结构,如下图 总共分成3大块,分别如下 2.1 org.springframework.web.multipart 存放Spring定义的文件上传接口以及异常,如 Multipar...

weixin_33736832的博客 398
上一篇: Servlet接口
下一篇: SpringMVC处理请求
sicofield
博客等级 码龄18年 169粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值