面试:SpringMVC问题

文章目录

    • SpringMVC运行流程
    • MVC的概念与请求在MVC中的执行路径,@ResponsBody注解的用途
    • SpringMVC启动流程
    • SpringMVC的拦截器和过滤器有什么区别?执行顺序?
    • Spring和SpringMVC为什么需要父子容器?

SpringMVC运行流程

在这里插入图片描述

• 客户端(浏览器)发送请求,直接请求到 DispatcherServlet 。
• DispatcherServlet 根据请求信息调用 HandlerMapping ,解析请求对应的 Handler 。
• 解析到对应的 Handler (也就是 Controller 控制器)后,开始由HandlerAdapter 适配器处理。
• HandlerAdapter 会根据 Handler 来调用真正的处理器开处理请求,并处理相应的业务逻辑。
• 处理器处理完业务后,会返回一个 ModelAndView 对象, Model 是返回的数据对象
• ViewResolver 会根据逻辑 View 查找实际的 View 。
• DispaterServlet 把返回的 Model 传给 View (视图渲染)。
• 把 View 返回给请求者(浏览器)

MVC的概念与请求在MVC中的执行路径,@ResponsBody注解的用途

请求到达mvc后,通过一个分发器,找到对应的处理controller,处理完好返回的model数据,经过view处理器渲染进视图中返回,如JSP。如果有@ResponseBody注解,就不进行view渲染,直接返回model数据,一般以json格式。
见另一篇博客:mvc。

SpringMVC启动流程

SpringMVC的拦截器和过滤器有什么区别?执行顺序?

拦截器和过滤器在Web应用中都扮演着请求和响应处理的角色,但它们之间存在一些关键区别。

  1. 归属不同:拦截器是SpringMVC框架的一部分,而过滤器是Servlet规范的一部分。拦截器主要用于对控制器层的请求进行处理,它们提供了更细粒度的控制,可以在请求进入控制器之前和之后执行特定的逻辑,例如身份验证、日志记录和权限检查。过滤器独立于SpringMVC,用于处理通用的请求和响应内容,例如字符编码、压缩和安全性。
  2. 执行顺序也不同:拦截器的执行顺序由配置文件中的顺序决定,可以有多个拦截器,它们按照配置的顺序依次执行。而过滤器的执行顺序由web.xml文件中的配置顺序决定,同样可以有多个过滤器,按照配置的顺序执行。一般来说,首先执行过滤器,然后再执行拦截器。
  3. 用途不同:拦截器用于对SpringMVC的请求和响应进行特定的业务处理,通常与控制器层的请求处理有关。过滤器用于对所有Servlet请求和响应进行通用性的处理,通常关注请求和响应内容,而不涉及具体的业务逻辑。

总的来说,了解拦截器和过滤器之间的这些区别非常重要。在面试中,这种理解将有助于说明您在Web应用程序中如何处理请求和响应以及如何利用SpringMVC和Servlet规范的不同功能。

Spring和SpringMVC为什么需要父子容器?

  • 首先,它们帮助划分功能边界,使得大型应用程序更易于管理。通过将不同模块或层次的组件分别放置在父子容器中,我们能够清晰地定义每个容器的职责,从而提高了代码的可维护性和可扩展性。
  • 其次,父子容器在规范整体架构方面起到了关键作用。例如,我们可以将业务逻辑层(Service)和数据访问层(DAO)交给Spring管理,而将控制器层(Controller)交给SpringMVC管理。这种规范化有助于提高代码的可读性,并使团队协作更加顺畅。
  • 此外,父子容器还能限制组件之间的依赖关系,确保模块之间的隔离。子容器可以访问父容器中的组件,但反之则不成立。这有助于减少意外的依赖和提高代码的稳定性。
  • 另一个优势是方便切换子容器。如果我们需要更改子容器,例如从Spring MVC切换到Struts,只需更改子容器的配置而无需更改父容器。这提供了更好的可维护性和扩展性,使得应用程序更容易适应不同的技术栈或框架。
  • 最后,父子容器的使用还有助于节省资源。父容器中的Bean可以在整个应用程序范围内共享,而不必每次创建。这对于大型应用程序来说尤为重要,可以降低内存和性能开销。

综上所述,父子容器在Spring框架中的应用不仅有助于功能性划分,还有助于架构的规范化、模块化、松耦合和可维护性。虽然一些现代框架如Spring Boot可能减少了对父子容器的需求,但在大型和复杂的应用程序中,父子容器仍然是一种有用的设计模式,有助于管理和组织应用程序的各个部分。

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

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

相关文章

Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)

博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…

海外热门:香港服务器和美国服务器的成本较量

​  提到 2023 年海外热门服务器,在整个 IDC 站长圈中,要数香港服务器和美国服务器的关注度一直居高不下。其实也正常,毕竟这两种海外服务器相较成熟。不过,在实际使用中,两者也会被拿来对比,最显而易见的…

Python多线程优化:提升程序性能的实例

更多Python学习内容:ipengtao.com 大家好,我是涛哥,今天为大家分享 Python多线程优化:提升程序性能的实例,全文5600字,阅读大约16钟。 多线程是一种有效的并发编程方式,能够提高程序的性能。本文…

(六)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB代码)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…

c++——取地址(引用)和取内容(解引用)操作

今天又做蒙了一道题,把思考和实验记录下来。 struct sk{ int a; float b;}data; int *p; 若要使p指向data中的a域,正确的赋值语句是 p&a; pdata.a; p&data.a; *pdata.a前两个可以很容易看出错误之处,a是结构体内的变量,需…

P0级事故频发后,这家公司终于醒悟了!

近期,国内的互联网大厂接连爆发P0级事件,阿里云崩完滴滴崩,企业在追求效益的前提是业务的连续和稳定。如果发生故障不能快速恢复,引发业务中断,给企业带来的损失是巨大的,换言之,企业需要一套清…

OFDM通信连路仿真学习

文章目录 前言一、前置知识1、块状导频与梳状导频①、相似点②、区别③、其他 2、其他知识 二、仿真任务及方案1、仿真任务2、仿真方案 三、MATLAB仿真1、MATLAB 源码2、程序流程3、仿真结果①、打印信息③、8PSK 星座图②、脉冲成型图③、ETU300登加AWGN信道下误比特率曲线 四…

Windows系统搭建Appium 2 和 Appium Inspector 环境

前言 自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具,它带来了以下重要改进:  …

PowerDesigner数据库建模软件的安装

解压: 解压好以后,点击PowerDesigner.exe安装 这个安装的版本是15 选择安装路径,可以默认可以自定义: 直接点next: 全选了 点击next: 点击next: 点finish 汉化: 先把pojie和汉化文件…

Redis:主从复制

目录 概念配置步骤通过命令配置主从复制原理薪火相传反客为主哨兵(Sentinel)模式原理配置SpringBoot整合Sentinel模式 概念 主机更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主。 作用: …

JVM 字节码

JVM概述 问题引出 你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧&…

ssm的鲜花销售系统(有报告)。Javaee项目。

演示视频: ssm的鲜花销售系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybatis…

python用YOLOv8对图片进行分类

用yolov8的模型进行分类 先上效果图 图片资源 模型下载地址 https://github.com/ultralytics/ultralytics 代码 import matplotlib.pyplot as plt from ultralytics import YOLO from PIL import Image import cv2model YOLO(../ultralytics/yolov8n.pt)# print(model…

innovus如何检查missing via

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 verifyConnectivity innovus检查绕线的missing via可以使用verifyConnectivity命令,如果有net routing missing via问题,会报告pieces of net are not …

C语言——指针(三)

📝前言: 上篇文章C语言——指针(二)中对:指针的运算和指针变量类型对指针使用的影响开展了进一步的探讨,这篇文章我们继续学习一下指针与一维数组之间的关系: 1,对数组名的理解 2&am…

python + mongodb使用入门

最近用了下mongodb ,简单做个记录: 1.启动系统mongo服务 mongod -f mongod.conf其中 mongod.conf 是配置文件,示例如下: dbpath/youpath/data/db #数据库保存位置 logpath/youpath/data/mongod.log #日志 logappendtrue fo…

突发,合肥一废品回收站发生火灾,富维AI神器助力防灾

昨晚,合肥一废品回收站突发火灾,火光冲天,烟雾蔓延。幸亏及时发现,消防人员迅速到场,控制了火势。这起事件让我们再次认识到火灾报警的重要性。而在这方面,北京富维图像公司的FIS智能图像识别系统就发挥了巨…

#HarmonyOS:软件安装

软件地址 https://developer.harmonyos.com/cn/develop/deveco-studio#download 安装的建议 这个界面这样选,其他界面全部按照默认路径往下走!!! 等待安装… 安装环境错误处理 一般就是本地node配置一场导致,建议…

ElementPlusError: [ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

使用element table出现这个错误好几回了,今天把它记录一下,并把错误原因复盘一遍。具体如下: 错误截图 原因 其实这个错误挺迷的,我把各种情况都测试了一遍,最后发现是因为给 翻页参数 total 传值错误导致的。 总结…

实时沟通,实时增长:企业使用WhatsApp Business的不二选择

在数字化浪潮中,WhatsApp Business崭露头角,成为企业与客户之间沟通的新利器。今天运营坛将和大家深入探讨WhatsApp Business在2023年为企业带来的机遇,从增长率、客户群体、功能特性以及优势等方面剖析为何企业需要充分利用这一强大工具。 W…