SpringMVC常见面试题(2023最新)
目录
- 前言
- 1.简单介绍下你对springMVC的理解?
- 2.说一说SpringMVC的重要组件及其作用
- 3.SpringMVC的工作原理或流程
- 4.SpringMVC的优点
- 5.SpringMVC常用注解
- 6.SpringMVC和struts2的区别
- 7.怎么实现SpringMVC拦截器
- 8.SpringMvc的控制器是不是单例模式?如果是,有什么问题?怎么解决?
- 9.在 SpringMVC 中拦截器的使用步骤是什么样的?
- 10.说一下SSM和SSH都代表哪些框架?
前言
我整理的都是常见的,很多不常见的,几乎问不到的,我就没整理
1.简单介绍下你对springMVC的理解?
是基于java的MVC设计模式的轻量级MVC框架,通过对Model、view、Controller分离,把web应用分成逻辑清晰的几部分,简化了开发,方便了开发人员的配合。
2.说一说SpringMVC的重要组件及其作用
前端控制器(DispatcherServlet): 接收请求、响应结果,解耦了其他组件。
处理器映射器(HandlerMapping): 根据url去查找对应的处理器(Handler)。
处理器适配器(HandlerAdapter): 执行处理器(Handler)。
处理器(Handler): 处理业务逻辑的类,程序员编写。
视图解析器(ViewResolver): 进行视图的解析,根据视图逻辑名将ModelAndView解析成真正的视图(view)。
视图(View): 是一个接口,它的实现类支持不同类型的视图,jsp,pdf等。
3.SpringMVC的工作原理或流程
①用户发送请求,前端控制器接到请求。
②前端控制器把请求分发给处理器映射器。
③处理器映射器根据url去找对应的处理器。
④获取处理器,返回给处理器映射器。
⑤处理器映射器返回给前端控制器。
⑥前端控制发给处理器适配器,请求执行处理器。
⑦处理器适配器通知处理器执行业务逻辑。
⑧然后处理器返回ModelAndView。
⑨处理器适配器把ModelAndView返回给前端控制器。
⑩前端控制器发给视图解析器,视图解析器根据视图名称去查询视图。
⑪返回真正的视图。
⑫渲染视图。
⑬返回视图,给前端控制器。
⑭然后响应用户的请求。
4.SpringMVC的优点
①支持各种视图。JSP、PDF等
②可以与spring集成。
③各个组件分工明确。解耦。
5.SpringMVC常用注解
@RequestMapper:用于处理请求的URL,可以用于方法或类。
@RequestBody:接受请求的json数据,转换成java对象。
@ResponseBody:将controller返回对象,转成json响应回去。
6.SpringMVC和struts2的区别
①SpringMVC入口是servlet(前端控制器),struts2入口是过滤器。
②SpringMVC基于方法开发,struts2基于类开发。
7.怎么实现SpringMVC拦截器
①实现HandlerInterceptor接口。
②继承适配器类。
8.SpringMvc的控制器是不是单例模式?如果是,有什么问题?怎么解决?
是单例模式,在多线程访问的时候有线程安全问题。
解决方案是在控制器里面不能写可变状态量,如果需要使用这些可变状态,可以使用ThreadLocal机制解决,为每个线程单独生成一份变量副本,独立操作,互不影响。
9.在 SpringMVC 中拦截器的使用步骤是什么样的?
定义拦截器类: SpringMVC 为 我 们 提 供 了 拦 截 器 规 范 的 接 口 , 创 建 一 个 类 实 现 HandlerInterceptor,重写接口中的抽象方法。
preHandle 方法: 在调用处理器之前调用该方法,如果该方法返回 true 则请 求继续向下进行,否则请求不会继续向下进行,处理器也不会调用。
postHandle 方法: 在调用完处理器后调用该方法 。
afterCompletion 方法: 在前端控制器渲染页面完成之后调用此方法。
10.说一下SSM和SSH都代表哪些框架?
SSM:SpringMVC,Spring,Mybatis。
SSH:struts,Spring,Hibernate。
相关文章:

SpringMVC常见面试题(2023最新)
目录前言1.简单介绍下你对springMVC的理解?2.说一说SpringMVC的重要组件及其作用3.SpringMVC的工作原理或流程4.SpringMVC的优点5.SpringMVC常用注解6.SpringMVC和struts2的区别7.怎么实现SpringMVC拦截器8.SpringMvc的控制器是不是单例模式?如果是,有什…...

【正点原子FPGA连载】第十六章DP彩条显示实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十六章DP彩条显…...

数据结构与算法—链表list
目录 链表 链表类型 链表插入 链表删除 写程序注意点 与数组区别 链表应用 LRU 实现思想 链表 链表,一种提高数据读取性能的技术,在硬件设计、软件开发中有广泛应用。常见CPU缓存,数据库缓存,浏览器缓存等。缓存满时&#…...

自定义View练习题目整理
一、动态音频播放柱形图 1、效果图: 2、步骤 (1)、新建自定义View类,继承View (2)、重写onDraw()方法,使用画笔和画布循环画一定数量的柱形 Overrideprotected void onDraw(Canvas canvas) {s…...

LAMP平台部署及应用
LAMP平台部署及应用 📒博客主页: 微笑的段嘉许博客主页 💻微信公众号:微笑的段嘉许 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由微笑的段嘉许原创! Ὄ…...
ubuntu20.04安装python3虚拟环境
1.安装pip3 sudo apt install python3-pip2.安装虚拟环境 sudo apt install virtualenv sudo apt install virtualenvwrapper3.修改配置文件设置环境变量 打开.bashrc并编辑 gedit ~/.bashrc在.bashrc文件后面加入下面两行 export WORKON_HOME$HOME/.virtualenvs source …...

VUE3源码分析————rollup打包
文章目录什么是rolluprollup打包和webpack打包的区别rollup打包准备一、安装yarn开始rollup打包一、初始化二、package.json文件配置三、新建并配置打包文件夹四、下载rollup及打包执行文件五、文件大致分布
【JavaScript】前端实现电子签名:
文章目录一、效果:二、实现:三、扩展一、效果: 二、实现: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…...

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Feb 2023)
Windows 11, version 22H2,2023 年 2 月 更新 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 全新推出 Windows 11 全新 Windows 体验&#x…...

【java】Spring Cloud --Spring Cloud Alibaba 教程
文章目录Spring Cloud Alibaba是什么Spring Cloud AlibabaSpring Cloud Alibaba 组件Spring Cloud Alibaba 的应用场景Spring Cloud 两代实现组件对比Spring Cloud Alibaba 版本依赖Spring Cloud Alibaba 组件版本关系Spring Cloud Alibaba NacosNacos 的特性服务发现服务健康监…...

通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作增加编程要求
2.编程要求: 1)结构体封装 typedef struct{ char* cmd_arr; //命令行字符串 gpio_t* gpiox;//GPIO组号 unsigned int pin; //引脚编号 status_t status; //LED灯状态 void(*gpio_write_pin)(gpio_t* gpiox,unsigned int pin,status_t status); }cmd_t; 2…...

银行家算法
银行家算法 银行家算法是一种用来避免操作系统死锁出现的有效算法,所以在引入银行家算法的解释之前,有必要简单介绍一下死锁的概念。 一、死锁 死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成…...

181、【动态规划】leetcode ——72. 编辑距离(C++版本)
题目描述 原题链接:72. 编辑距离 解题思路 动态规划五步曲: (1)dp[i][j]含义: 以word1[i - 1]和word2[j - 1]结尾子串,经过最少次增删改后,可让word1变为word2的步数。dp中的i对应word1中的i…...

mysql 中关于慢查询日志
慢查询日志 慢查询日志主要用来记录执行时间超过设置的某个时长的SQL语句,能够帮助数据库维护人员找出执行时间比较长、执行效率比较低的SQL语句,并对这些SQL语句进行针对性优化。 开启慢查询 可以在 my.cnf 文件或者 my.ini 文件中配置开启慢查询日志…...

程序员必备的软技能-金字塔原理拆解(上)
原书 290千字,本文预计 14千字,拆解比 20:1,预计阅读时长 15分钟序言日常工作中,常常因为思维、表达方式不对产生不想要的结果:写了一个小时的周报,领导却不满意?跟团队讲了半天自己…...

关于我利用python开发的PC端标注软件及目标检测软件
如何利用python快速开发PC端目标检测及数据标注软件概述开发软件背景开发第一步:功能需求分析开发第二步: 前端分区设计开发第三步:功能开发开发第四步:程序功能的打包与检查开发第五步:程序的反馈与改善一个例子的展示…...

Git导出增量包的操作步骤
前言在项目开发部署中,通常是将一个Git项目全量打包发布,但有的场景只需要导出有变更的那部分文件,增量发布,此时就需要使用Git导出增量包了。一、查看提交记录拿到提交ID码①例如使用的gitlab使用方法参考下图(一目了然) 【推荐】…...

JavaWeb--JavaScript
JavaScript1 JavaScript简介2 JavaScript引入方式2.1 内部脚本2.2 外部脚本3 JavaScript基础语法3.1 书写语法3.2 输出语句3.3 变量3.4 数据类型3.5 运算符3.5.1 \\ 和 区别3.5.2 类型转换3.6 流程控制语句3.6.1 if 语句3.6.2 switch 语句3.6.3 for 循环语句3.6.4 while 循环语…...

mars3d加载建筑物白膜及简单建筑物样式
首先需要拥有shp格式的数据。可以通过水经微图下载,注意此软件是付费的将shp格式的数据处理为切片数据,可以使用cesiumlab处理完成得到json数据就可以在mars3d中加载了 function init() { // 判断webgl支持 if (!mars3d.Util.webglreport()) { …...

数据结构之顺序表
本章重点: 1.线性表 2.顺序表 3.链表 4.顺序表和链表的区别和联系 目录 1.线性表 2.顺序表 2.1概念及结构 2.2接口实现 2.2.1 SeqList.h 2.2.2 SeqList.c 2.3数组相关面试题 2.3.1移除元素 2.3.2删除有序数组中的重复项 编辑 2.3.3合并两个有序数组…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...