当前位置: 首页 > news >正文

3.1 Spring MVC概述

1. MVC概念

MVC是一种编程思想,它将应用分为模型(Model)、视图(View)、控制器(Controller)三个层次,这三部分以最低的耦合进行协同工作,从而提高应用的可扩展性及可维护性。

  • 模型(Model)

模型层主要包括实体类Bean(存储业务数据的类,如Student)和处理业务逻辑的Bean(如Service、Dao)。

  • 视图(View)

用户与应用程序交互的、展示数据的界面,例如工程中的html页面。

  • 控制器(Controller)

工程中的servlet,接收视图层发出的请求,将请求转给模型,响应用户请求渲染视图。

2. Spring MVC概念

Spring MVC全称Spring Web MVC,通常称为Spring MVC,是基于MVC思想的应用框架,它是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。

3. Spring MVC核心组件

Spring MVC框架主要有前端控制器、处理器映射器、处理器适配器、处理器、视图解析器等组成。

  • 前端控制器DispatcherServlet

用于接收用户请求、转发用户请求、响应结果, DispatcherServlet是整个流程控制的中心,由它调用其他组件处理用户请求,分发到具体的对应Controller,从而获取到需要的业务数据Model,Model再通过DispatcherServlet传递给View完成页面呈现。

  • 处理器映射器HandlerMapping

映射URL到处理器,根据请求的URL找到对应的Handler。

  • 处理器适配器HandlerAdapter

将各种Controller适配成DispatcherServlet可以执行的Handler。

  • 处理器Handler

开发者编写的业务逻辑,Controller-Service业务。

  • 视图解析器ViewResolver

进行视图的解析,负责将处理结果生成View视图。

4. Spring MVC工作原理

  • 客户端发送请求到前端控制器DispatcherServlet;

  • 由DispatcherServlet控制器寻找一个或多个HandlerMapping,找到处理请求的Controller;

  • DispatcherServlet将请求提交到Controller;

  • Controller调用业务逻辑处理后,返回ModelAndView;

  • DispatcherServlet请求视图解析器ViewResoler,找到ModelAndView指定的视图;

  • 视图负责将结果显示到客户端。

相关文章:

3.1 Spring MVC概述

1. MVC概念 MVC是一种编程思想,它将应用分为模型(Model)、视图(View)、控制器(Controller)三个层次,这三部分以最低的耦合进行协同工作,从而提高应用的可扩展性及可维护…...

Towards Open World Object Detection【论文解析】

Towards Open World Object Detection 摘要1 介绍2 相关研究3 开放世界目标检测4 ORE:开放世界目标检测器4.1 对比聚类4.2 RPN自动标注未知类别4.3 基于能量的未知标识4.4 减少遗忘 5 实验5.1开放世界评估协议5.2 实现细节5.3 开放世界目标检测结果5.4 增量目标检测结果 6 讨论…...

IP协议

目录 网络层 理解路由选择 IP协议 IP首部 IP分片原理 IP校验和原理 网段划分 IP地址数量限制 私有和公网IP地址 路由 什么是IP地址,IP地址有什么特征?IP地址和MAC地址有什么区别和联系? IP报文由IP头部和IP数据两个部分组成&#…...

使用sqlplus连接oracle,提示ORA-01034和ORA-27101

具体内容如下 PL/SQL Developer 处 登录时 终端处 登录时 ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Process ID: 0 Session ID: 0 Serial number: 0 解决方法是执行以下命令 sqlplus /nolog conn / as sysdba startup …...

TLS协议

目录 什么是TLS协议? TLS的基本流程? 两种密钥交换算法? 基于ECDHE密钥交换算法的TLS握手过程? 基于RSA密钥交换算法的TLS握手过程? 基于RSA的握手和基于ECDHE的握手有什么区别? 什么是前向保密&…...

Academic Inquiry|国外文献查找

一个失去了男子气概的人总有很多忧虑,这样就可以分散注意力,而不必为那件特别的羞耻而苦恼不堪。 ——《狂野之夜》〔美〕乔伊斯卡罗尔欧茨著 樊维娜译 许多研究者在进行研究的时候,都会查找对应主体的国内外引用文献,而大多得出的…...

opencv图片灰度二值化

INCLUDEPATH D:\work\opencv_3.4.2_Qt\include LIBS D:\work\opencv_3.4.2_Qt\x86\bin\libopencv_*.dll #include <iostream> #include<opencv2/opencv.hpp> //引入头文件using namespace cv; //命名空间 using namespace std;//opencv这个机器视…...

短肥网络的 RTT 敏感性

周二下班路上发了一则朋友圈&#xff1a; 长肥管道的特征和问题谈得够多了&#xff0c;但这里谈的是短肥管道&#xff0c;因为下面趋势&#xff0c;短肥管道才是未来大势&#xff1a; 云计算致使数据中心网络快速发展&#xff0c;而数据中心网络时延短&#xff0c;带宽大。CD…...

Nonebot实战之编写插件1

前言 应粉丝群内粉丝要求&#xff0c;我也决定写一个Nonebot插件编写教程&#xff0c;从0开始教学。有些不对的地方也欢迎大家指正&#xff0c;修改。 开始 准备 合适的代码编辑器一定的python基础懂得提问的方式 代码编辑器 代码编辑器有很多种选择&#xff0c;比如 vsc…...

Linux-C++开发项目:基于主从Reactor模式的高性能并发服务器

目录 1.项目介绍2.1项目部署2.2安装版本较高的编译器 2.项目开发过程2.1网络库模块开发2.1.1简单日志宏的实现2.1.2Buffer模块实现2.1.3Socket模块实现2.1.4Channel模块实现2.1.5Poller模块实现2.1.6TimerWheel模块实现2.1.7EventLoop模块实现2.1.8整合测试12.1.9LoopThread模块…...

【Linux的开胃小菜】Linux系统安装后初始化配置操作

我们刚接手一台刚安装好服务器系统之后&#xff0c;可以对系统进行一些基础优化&#xff1a; 常规设定&#xff1a; centos: 1.关闭 iptables 2.关闭 selinux 3.设定 ChronyUbuntu: 4. /etc/security/limits.conf 5. /etc/sysctl.conf1.首先使用国内阿里云的yum源&#xff08…...

Java批量下载书籍图片并保存为PDF的方法

背景 因为经常出差火车上没网、不方便电子书阅读器批注&#xff0c;需要从某网站上批量下载多本书籍的图片并自动打包成PDF文件。 分析 1、尝试获得图片地址&#xff0c;发现F12被禁 解决方法&#xff1a;使用Chrome浏览器&#xff0c;点击右上角三个点呼出菜单&#xff0c;…...

flutter 创建lib

在根目录下创建 packages 文件夹创建lib (flutter create --templatepackage xxx)需要在pubspec.yaml中的根目录下添加 publish_to: ‘none’ # 如果你想发布到pub.dev&#xff0c;请删除这一行配置 lib_rock_utils:path: packages/lib_rock_utils...

深度剖析堆栈指针

为什么打印root的值与&root->value的值是一样的呢 测试结果&#xff1a; *号一个变量到底取出来的是什么&#xff1f; 以前我写过一句话&#xff0c;就是说&#xff0c;如果看到一个*变量&#xff0c;那就是直逼这个变量所保存的内存地址&#xff0c;然后取出里面保存的…...

C++笔记之静态成员函数的使用场景

C笔记之静态成员函数的使用场景 C静态成员函数的核心特点是不与特定类实例相关&#xff0c;可通过类名直接调用&#xff0c;用于执行与类相关的操作而无需创建类对象。其主要用途是在类级别上共享功能&#xff0c;管理全局状态或提供工具函数。 code review! 文章目录 C笔记之…...

Nginx的优化和防盗链

一、Nginx的优化 1、隐藏版本号 curl -I http://192.168.79.28 #查看信息&#xff08;版本号等&#xff09;方法一&#xff1a;修改配置文件 vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type ap…...

第二十次CCF计算机软件能力认证

数学专场 第一题&#xff1a;称检测点查询 解题思路&#xff1a;计算欧几里得距离 #include<iostream> #include<vector> #include<algorithm>using namespace std;typedef pair<int , int> PII; int n , x , y; vector<PII>v;int main() {ci…...

一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等

Java发送邮件&#xff1a;使用JavaMail API发送电子邮件 作者&#xff1a;Stevedash 发表于&#xff1a;2023年8月13日 15点48分 来源&#xff1a;Java 发送邮件 | 菜鸟教程 (runoob.com) 电子邮件在现代通信中扮演着至关重要的角色&#xff0c;而在Java编程中&#xff0c;…...

kubernetes的日志

1、日志在哪里 kubelet组件&#xff0c;systemd方式部署&#xff0c;journalctl -u kubelet 查看 其他组件&#xff0c;pod方式部署&#xff0c;kubectl logs 查看 容器运行时将日志写入 /var/log/pods 系统日志&#xff0c;/var/log/message 2、查看服务日志 #首先检查服…...

设计HTML5文本

网页文本内容丰富、形式多样&#xff0c;通过不同的版式显示在页面中&#xff0c;为用户提供最直接、最丰富的信息。HTML5新增了很多文本标签&#xff0c;它们都有特殊的语义&#xff0c;正确使用这些标签&#xff0c;可以让网页文本更严谨、更符合语义。 1、通用文本 1.1、标…...

从摇骰子到抽奖机:用Arduino的random和randomSeed函数打造5个小项目

从摇骰子到抽奖机&#xff1a;用Arduino的random和randomSeed函数打造5个小项目 当你第一次接触Arduino时&#xff0c;可能会被那些闪烁的LED灯和蜂鸣器的声音所吸引。但很快你就会发现&#xff0c;真正的乐趣在于让这些电子元件"活"起来&#xff0c;产生不可预测的行…...

OP-TEE安全存储深度解析(一):密钥体系与文件加密流程

1. OP-TEE安全存储的核心价值 第一次接触OP-TEE的安全存储功能时&#xff0c;我完全被它的精妙设计震撼到了。想象一下&#xff0c;你的手机里存着指纹、人脸识别模板这些极度敏感的数据&#xff0c;如果这些信息被普通应用程序随意读取&#xff0c;后果简直不堪设想。而OP-TEE…...

别再死记硬背空洞卷积了!用PyTorch手写ASPP模块,带你搞懂多尺度信息融合的来龙去脉

从零解剖ASPP模块&#xff1a;用PyTorch实现揭示多尺度语义分割的精髓 第一次看到DeepLab论文里的ASPP模块时&#xff0c;我盯着那些不同dilation rate的空洞卷积分支发愣——为什么是6、12、18这三个神奇数字&#xff1f;为什么不能直接用更大的膨胀率捕捉更广的上下文&#x…...

深度学习模型解释:SHAP与LIME

深度学习模型解释&#xff1a;SHAP与LIME 引言 深度学习模型在各个领域取得了显著的成功&#xff0c;但它们往往被视为"黑盒"&#xff0c;难以理解其决策过程。模型解释性已成为深度学习应用中的关键挑战&#xff0c;尤其是在医疗、金融等对决策可解释性要求较高的领…...

终极指南:如何用Bioicons免费矢量图标库快速制作专业科研图表

终极指南&#xff1a;如何用Bioicons免费矢量图标库快速制作专业科研图表 【免费下载链接】bioicons A library of free open source icons for science illustrations in biology and chemistry 项目地址: https://gitcode.com/gh_mirrors/bi/bioicons Bioicons是一个免…...

避坑!这些毕设太好抄了,3000+毕设案例推荐第1078期

781、基于Java的物业报警智慧管理系统的设计与实现(论文&#xff0b;代码&#xff0b;PPT)物业报警智慧管理系统主要功能包括&#xff1a;系统会员、建筑物管理、单元管理、房屋管理、业管理、设备管理、设备维护记录、设备巡检记录、报警管理、报警通知、工单管理、工单日志、…...

如何快速掌握AMD Ryzen调试工具:3步实现精准硬件控制与系统优化

如何快速掌握AMD Ryzen调试工具&#xff1a;3步实现精准硬件控制与系统优化 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: h…...

通往通用智能的终极路线图(2024-2035关键里程碑白皮书):含7项核心能力演进指标与国家级AGI投入对比数据

第一章&#xff1a;AGI技术路线图&#xff1a;从当前AI到通用智能 2026奇点智能技术大会(https://ml-summit.org) 当前人工智能系统在特定任务上已展现出超越人类的性能&#xff0c;但其本质仍是窄域、静态、数据密集型的模式匹配工具。迈向通用人工智能&#xff08;AGI&#…...

终极指南:如何用GPSTest精准测试手机卫星导航性能

终极指南&#xff1a;如何用GPSTest精准测试手机卫星导航性能 【免费下载链接】gpstest The #1 open-source Android GNSS/GPS test program 项目地址: https://gitcode.com/gh_mirrors/gp/gpstest 你的手机GPS到底有多准&#xff1f;&#x1f30d; 通过GPSTest这款顶级…...

ESP8266-01S联网避坑大全:关于STA模式、TCP连接和透传的那些“反直觉”设定

ESP8266-01S联网避坑大全&#xff1a;关于STA模式、TCP连接和透传的那些“反直觉”设定 当你第一次拿到ESP8266-01S这个小小的Wi-Fi模块时&#xff0c;可能会被它强大的功能所吸引。但很快&#xff0c;你就会发现这个看似简单的模块背后隐藏着许多让人困惑的"反直觉"…...