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初始化组件。
结构非常清晰,实现比较复杂,结构清晰,因为顶层设计好,实现复杂因为功能强大。

避坑指南:雅特力AT32F403A在Keil5中的V2库配置常见问题解析 本文详细解析了国产MCU雅特力AT32F403A在Keil5中配置V2库的常见问题,包括工程创建、库文件配置、编译错误和外设设置等关键环节。针对项目文件夹结构混乱、芯片型号选择错误、头文件路径设置不当等典型问题提供实用解决方案,帮助开发者高效避坑,提升开发效率。 阅读详情

相关推荐

基于紫光同创FPGA的adf网表文件使用和黑匣子设置

这个时候就可以选择将你的网表文件给到他使用,就是相当于把你的功能模块封装成了一个黑匣子一样,只有外部端口,没有内部代码;,在TOP层的子模块声明里面需要加上/*synthesis syn_black_box */进行黑匣子设置,此时子层 adf 文件作为黑盒是不会综合的,在 device map 时会将顶层综合结果与子层 adf 文件合并传递至布局布线阶段;这些都设置完毕后呢,就可以对工程进行编译和综合了,综合完毕后会生成一个.adf的网表文件,我们要使用的就是这个文件;我这里是把两个子模块的添加了哈;

H2061722的博客 964

SpringMVC框架详解(学习总结)

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

swy2560666141的博客 1万+

用Python+Charles搞定小程序付费短剧下载(附完整代码与避坑点)

本文详细介绍了如何利用Python和Charles抓包工具实现小程序付费短剧的自动化下载。通过分析小程序视频接口、破解请求参数,并编写Python脚本,读者可以轻松获取并保存短剧内容。文章还提供了完整的代码示例和常见问题的解决方案,特别适合对视频采集和抓包技术感兴趣的开发者。

weixin_28731231的博客 1187

SpringMVC 概述三层架构

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

weixin_65700815的博客 5297

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

S32K3实战:手把手教你用eMIOS模块实现电机PWM控制(附代码)

本文详细解析了NXP S32K3系列MCU的eMIOS模块在电机PWM控制中的应用,从硬件设计到软件实现,再到调试与优化,提供了完整的实战指南。通过eMIOS模块的硬件级PWM生成能力,工程师可以实现高精度的电机控制,适用于汽车电子和工业控制领域。

weixin_42570484的博客 146

Spring Boot项目结构

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

weixin_44814196的博客 2万+

【ARFoundation自学04】AR Tracked Image 图像追踪识别与对应类的调用

1.添加组件 2.创建图像识别库 3.创建识别后追踪的物体(UI、模型等)

leoysq的博客 2560

SpringMVC基本结构

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

qq_42732184的博客 687

Qt/C++ 音视频开发 - FFmpeg 安卓版

通过将 FFmpeg 集成到 Qt/C++ 项目中,我们可以实现强大且灵活的音视频处理功能。本文介绍了在安卓平台上使用 FFmpeg 的基本步骤,包括初始化、解码、处理和编码等。实际应用代码示例展示了如何在安卓设备上播放视频。

走向CTO的路上... 1190

SAP S/4HANA Cloud 管理员业务角色创建实战:基于 SAP_BR_ADMINISTRATOR 模板的一站式指南

摘要:SAP S/4HANA Cloud新系统初始登录时常见Fiori Launchpad无磁贴的问题,这是由于缺乏合适的业务角色分配。本文介绍了通过预交付的SAP_BR_ADMINISTRATOR模板创建管理员角色的完整流程,包括业务用户、业务角色和业务目录的核心概念解析。重点说明了直接使用模板的风险,并提供了从模板创建自定义管理员角色的详细步骤(4.1-4.3),以及权限限制设置的注意事项。文中还分享了一个实际项目案例,强调正确配置管理员角色对后续权限体系建设的关键作用。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 200

SpringMVC之框架整体结构

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

weixin_33935505的博客 350

网络攻防——kali操作系统基本使用

主要介绍如何搭建kali虚拟机,然后介绍了一个简单的攻击方法,切记,网络恶意攻击属于违法行为

weixin_46560512的博客 2万+

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

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

mutianyang1的博客 1113

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

springmvc三十一:spring mvc整体结构

m0_37564426的博客 260

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SpringMVC之器

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

八位比特的博客 204

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、付费专栏及课程。

余额充值