深入解析Spring MVC: 原理、流程【面试版】

news2024/9/25 21:29:37

什么是SpringMV?

1.是一个基于MVC的web框架;

2.是spring的一个模块,是spring的子容器,子容器可以拿父容器的东西,但是反过来不可;

2.SpringMVC的前端控制器是DispatcherServlet,用于分发请求。使开发变得简单;

4.SpringMVC流程(重点),三大组件:

HandlerMapping:处理器映射器

用户请求路径到Controller方法的映射

HandlerAdapter:处理器适配器

根据handler(controlelr类)的开发方式(注解开发/其他开发) 方式的不同去寻找不同的处理器适配器

ViewResolver:视图解析器

可以解析JSP/freemarkerr/pdf等

Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

SpringMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :

(1)加入Jackson.jar

(2)在配置文件中配置json的映射

(3)在接受Ajax方法里面可以直接返回Object,List等

Spring MVC处理流程及应用优势

1、客户端发出一个http请求给web服务器,web服务器对http请求进 行 解析,如果匹配前端控制器(或分发器/DispatcherServlet)的请求映射路径, web容器将请求转交给DispatcherServlet.

2、DipatcherServlet接收到这个请求之后将根据请求的信息以及处理器映射 器(HandlerMapping)的配置找到处理请求的处理器(Handler)。

3、由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。

4、Handler对数据处理完成以后将返回一个ModelAndView()对象给 DispatcherServlet。

5、DispatcherSevlet通过视图解析器(ViewResolver)将ModelAndView()转 化为真正的视图View。

6、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展 现出完整的view并返回给客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1551548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无需插件就能实现异构数据库的互联互通?(powershell妙用)

前两天在DBA群里有大佬分享了利用Oracle Database Gateway(透明网关)实现sqlserver和oracle 的数据交互,这里让我想到前些年写的一些powershell脚本用来做sqlserver和oracle的数据交互,powershell是windows自带的一个脚本工具&…

安防监控视频汇聚平台EasyCVR启用图形验证码之后如何调用login接口?

视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备,平台可以将区域内所有部署的监控设备进行统一接入与集中汇聚管理,实现对监控区域的实时高清视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等,在监控中心…

MongoDB Atlas维护指南:常见类型、注意事项与窗口设置

为了给Atlas用户更好的产品体验,MongoDB产品团队会进行定期维护。 本文将会介绍: 常见维护项目种类及频率,注意事项维护期间的影响及建议维护窗口设置说明维护告警设置和邮件通知范例 维护窗口常见项目 定期SSL证书轮换软件升级&#xff…

不要盲目开抖店,这才是开店的正确流程,2024全新版教程

我是王路飞。 抖音小店和视频号小店,我更建议没有经验的新手去做抖音小店。 虽然现在抖音小店不属于是一个蓝海项目了,但它依旧是我们普通人借助抖音流量变现非常重要的一个渠道,甚至没有之一。 至于视频号小店,可以说是当下最…

康耐视visionpro-CogPMAlignTool工具详细说明

CogPMAlignTool功能: 匹配产品形状,实现产品定位。 CogPMAlignTool操作说明: 1.打开工具栏,双击或点击鼠标拖拽添加CogPMAlignTool工具 ②.添加输入图像:右键“链接到”或以连线拖拽的方式选择相应输入图像 ③.点击“抓取训练图像”按钮获取训练图像 ④.在图像下拉列表中…

集体出走的Stability AI 发布全新代码大模型,3B以下性能最优,超越Code Llama和DeepSeek-Coder

Stability AI又有新动作!程序员又有危机了? 3月26日,Stability AI推出了先进的代码语言模型Stable Code Instruct 3B,该模型是在Stable Code 3B的基础上进行指令调优的Code LM。 Stability AI 表示,Stable Code Instru…

frp 内网穿透

一、公网服务器运行frps -c my.ini my.ini文件代码 [common] bind_port 7000 #公网服务器开启的监听端口 二、在已经拿到shell的内网服务器1,即内网的web服务器运行 frpc -c frpc.ini frpc.ini文件代码 [common] server_addr 192.168.23.134 #公网服务…

vue 借助vue-amap插件对高德地图的简单使用

需求:实现点击获取经纬度、定位、对特殊位置标点及自定义信息窗体功能。 高德地图的官网API:概述-地图 JS API 1.4 | 高德地图API vue-amap的中文文档:组件 | vue-amap 实现: 1、安装vue-amap插件 npm install vue-amap --save…

linux之Haproxy

介绍 haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器 下载Haproxy yum install haproxy -y 开启服务 systemctl start haproxy 配…

Android笔记(三十):PorterDuffXfermode实现旋转进度View

背景 核心原理是使用PorterDuffXfermode Path来绘制进度,并实现圆角 效果图 Android笔记(三十)效果演示 进度条绘制步骤 将ImageView矩形七个点的坐标存储起来(configNodes) 他们对应着7个不同的刻度,每个刻度的值 i * &#…

确保未来安全:应对云安全的复杂性

云是业务运营的重要组成部分,它改变了组织扩展、创新和适应的方式。然而,其影响力日益增长的广度和深度不仅仅局限于商业领域。云环境是我们日常生活中不可或缺的一部分,负责存储和传输全球平民最敏感的数据。随着大量企业和个人利用云&#…

【Faster Bing】Bing 搜索结果取消跳转至 bing.com/ck

更快的 Bing (Faster Bing) 1. 介绍 项目地址: GitHub: https://github.com/jiang-taibai/faster-bingGitee: https://gitee.com/jiang-taibai/faster-bingGreasyFork: https://greasyfork.org/en/scripts/490999-faster-bing 在使用 Bing 搜索时,Bin…

HarmonyOS 应用开发之UIAbility组件与UI的数据同步

基于当前的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信:在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前,订阅者需要先进行订阅&a…

Discord多个帐户怎么防止被封号?

Discord 是一款免费的语音和文本聊天应用程序。它是一个游戏聊天应用程序和社区,最初是游戏的语音和IM服务,然后转向直播,然后是游戏商店的社区平台。它成为游戏玩家在游戏中交流和协作的首选工具。下面将为你介绍如何同时使用多个discord账号…

武汉星起航深耕亚马逊,助力新手卖家成功起航

在跨境电商的浪潮中,亚马逊平台凭借其强大的品牌影响力和广阔的市场前景,吸引了无数创业者的目光。然而,对于缺乏经验的新手卖家而言,如何在竞争激烈的亚马逊市场中脱颖而出,成为了一道难题。武汉星起航电子商务有限公…

WordPress Git主题 响应式CMS主题模板

分享的是新版本,旧版本少了很多功能,尤其在新版支持自动更新后,该主题可以用来搭建个人博客,素材下载网站,图片站等 主题特点 兼容 IE9、谷歌 Chrome 、火狐 Firefox 等主流浏览器 扁平化的设计加响应式布局&#x…

实验3 中文分词

必做题: 数据准备:academy_titles.txt为“考硕考博”板块的帖子标题,job_titles.txt为“招聘信息”板块的帖子标题,使用jieba工具对academy_titles.txt进行分词,接着去除停用词,然后统计词频,最…

日赚2000万的短剧,还能火多久?

沈瑶初十年前就义无反顾地爱上高禹川,当他们两人再次相遇,她主动靠近高禹川,不料,她却意外怀孕,高禹川为了负责选择领证,但不公布两人的关系...... 这是一部情绪稳定女航医与傲娇疯批男机长的虐恋剧。在这个…

k8s 如何获取加入节点命名

当k8s集群初始化成功的时候&#xff0c;就会出现 加入节点 的命令如下&#xff1a; 但是如果忘记了就需要找回这条命令了。 kubeadm join 的命令格式如下&#xff1a;kubeadm join --token <token> --discovery-token-ca-cert-hash sha256:<hash>--token 令牌--…

[STM32] Keil 创建 HAL 库的工程模板

Keil 创建 HAL 库的工程模板 跟着100ASK_STM32F103_MINI用户手册V1.1.pdf的第7章步骤进行Keil工程的创建。 文章目录 1 创建相关文件夹2 创建“main.c/h”和“stm32f1xx_clk.c/h”3 复制CMSIS和HAL库4 创建新的Keil工程5 添加组文件夹和工程文件6 配置Keil设置 1 创建相关文件…