版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringMVC高频面试题(真实面试版)一、基础认知类(入门必问)1、什么是SpringMVC?它的核心作用是什么?SpringMVC是Spring框架提供的一款轻量级、基于MVC设计模式的Web层框架,专门用于开发JavaWeb项目,是目前主流的后端Web开发框架。核心作用:负责整个Web请求的流程调度,接收前端请求、参数解析、调用业务接口、封装返回结果、视图跳转,完全解耦Web层各类操作,简化Web开发,统一项目请求处理规范。2、MVC设计模式分别代表什么?在SpringMVC中对应的组件是?M(Model模型):对应业务数据、实体类、Service、DAO层,负责处理业务逻辑和数据封装;V(View视图):对应页面、模板、JSON返回数据,负责数据展示,比如Thymeleaf、HTML、JSON响应;C(Controller控制器):对应我们开发的@Controller、@RestController接口,负责接收请求、分发处理、响应结果。3、SpringMVC和Struts2的核心区别?(经典面试对比)1)核心机制不同:SpringMVC基于方法拦截,单个请求对应一个方法,线程安全;Struts2基于类拦截,每次请求创建新对象,性能稍差;2)参数接收不同:SpringMVC直接绑定方法参数,简洁高效;Struts2通过成员变量接收参数,容易出现线程问题;3)框架整合:SpringMVC是Spring原生组件,无缝整合Spring全家桶,无需额外配置;Struts2需单独整合,适配性差;4)使用现状:目前企业项目基本全部使用SpringMVC,Struts2基本淘汰。二、核心执行流程(高频必考)4、请详细说一下SpringMVC的完整请求执行流程1)用户发起请求,前端请求到达服务器,被核心前端控制器DispatcherServlet拦截;2)DispatcherServlet调用HandlerMapping处理器映射器,根据请求URL匹配对应的Controller处理器方法;3)匹配成功后,返回处理器执行链(包含拦截器、目标方法);4)DispatcherServlet调用HandlerAdapter处理器适配器,适配并执行目标Controller方法;5)执行过程中完成参数解析、数据绑定、类型转换、校验;6)Controller方法执行完毕,返回ModelAndView(或JSON数据);7)DispatcherServlet调用ViewResolver视图解析器,解析视图路径(前后缀拼接);8)视图渲染、数据填充,最终将响应结果返回给前端。5、DispatcherServlet是什么?为什么它是SpringMVC的核心?DispatcherServlet是SpringMVC的核心前端控制器,所有的Web请求都会经过它统一分发、调度、处理。它是整个流程的入口和中枢,负责整合所有核心组件(HandlerMapping、HandlerAdapter、视图解析器、异常处理器等),统一管控请求全流程,没有它SpringMVC无法完成请求调度。三、核心组件与注解6、SpringMVC五大核心组件是什么?各自作用?1)DispatcherServlet:前端控制器,统一接收、分发所有请求;2)HandlerMapping:处理器映射器,根据URL查找对应的Controller方法;3)HandlerAdapter:处理器适配器,适配不同类型的处理器,执行目标方法;4)ViewResolver:视图解析器,解析视图名称,拼接前后缀,定位页面资源;5)Handler/Controller:具体处理器,开发者编写的接口方法,处理业务请求。7、@Controller和@RestController的区别?1)@Controller:传统视图控制器,主要用于页面跳转,返回视图路径;如果需要返回JSON,需要配合@ResponseBody注解;2)@RestController:是@Controller+@ResponseBody的组合注解,专门用于前后端分离项目;3)使用@RestController后,所有接口返回值都会自动序列化为JSON格式,不会进行视图跳转,是目前项目主流用法。8、@RequestMapping、@GetMapping、@PostMapping区别和使用场景1)@RequestMapping:通用请求注解,不限制请求方式(GET/POST/PUT/DELETE都支持),安全性较低;2)@GetMapping:仅支持GET请求,用于查询数据、获取列表、详情接口;3)@PostMapping:仅支持POST请求,用于新增、提交表单、上传数据等操作;企业开发中优先使用指定请求方式的注解,规范接口语义,避免接口乱请求问题。四、参数接收与数据绑定(面试重点)9、SpringMVC常用的参数接收方式有哪些?1)直接接收普通参数:适配简单字段,如String、Integer,与前端参数名一致即可自动绑定;2)实体类接收参数:前端参数与实体类属性名对应,自动封装为实体对象,适合多参数场景;3)@RequestParam:接收普通表单参数、URL拼接参数,可设置是否必传、默认值;4)@PathVariable:接收URL路径变量,多用于RESTful风格接口;5)@RequestBody:接收前端JSON格式请求体参数,自动解析为实体对象,前后端分离必备;6)HttpServletRequest、HttpServletResponse:原生Servlet对象接收参数。10、@RequestParam和@PathVariable的核心区别?1)参数位置不同:@RequestParam获取的是URL问号后的参数(?name=xxx);@PathVariable获取的是URL路径中的参数(/user/1001);2)使用场景不同:@RequestParam用于普通查询参数;@PathVariable用于RESTful路径传参;3)必填规则不同:@RequestParam默认必传,可手动设置required=false;@PathVariable默认必须传值。11、@RequestBody的作用?为什么只能接收POST请求?@RequestBody用于读取前端请求体(RequestBody)中的JSON数据,通过Spring内置的消息转换器(MappingJackson2HttpMessageConverter)将JSON自动转为Java对象。GET请求没有请求体,参数都拼接在URL后面,所以@RequestBody只能用于POST、PUT等携带请求体的请求方式。12、SpringMVC参数绑定过程中会做哪些操作?接收前端参数后,框架会自动完成:参数接收、类型转换、数据格式化、数据校验、封装绑定到方法参数或实体类,全程自动完成,无需手动处理类型转换等繁琐操作。五、拦截器与过滤器(高频对比题)13、SpringMVC拦截器(HandlerInterceptor)的作用和执行时机?拦截器是SpringMVC提供的请求拦截组件,用于对Controller请求进行前置、后置、最终拦截处理,常用于登录校验、权限拦截、日志记录、请求预处理。三大核心方法:1)preHandle:控制器方法执行前执行,返回true放行,false拦截终止请求;2)postHandle:控制器方法执行完毕、视图渲染前执行;3)afterCompletion:整个请求流程结束、视图渲染完成后执行,用于资源释放。14、拦截器和过滤器(Filter)的区别?(必背)1)归属不同:Filter是Servlet原生组件,属于Web容器;Interceptor是SpringMVC自定义组件,由Spring管理;2)拦截范围不同:Filter拦截所有Web请求,包括静态资源(图片、JS、CSS);Interceptor只拦截Controller接口请求;3)执行顺序不同:请求先经过Filter,再经过Interceptor,最后到达Controller;4)使用场景不同:Filter多用于全局编码过滤、跨域过滤;Interceptor多用于接口权限、登录校验、接口日志拦截。六、异常处理机制15、SpringMVC常用的异常处理方式有哪些?1)全局异常处理器@RestControllerAdvice+@ExceptionHandler:企业主流用法,统一捕获全局所有接口异常,统一封装返回结果,避免重复代码;2)自定义异常页面:针对404、500等状态码配置跳转页面;3)局部异常处理:在单个Controller内使用@ExceptionHandler,仅对当前控制器生效;4)实现HandlerExceptionResolver接口,自定义全局异常解析器。16、@RestControllerAdvice的工作原理?该注解是全局异常处理注解,会拦截项目中所有Controller抛出的异常,结合@ExceptionHandler指定异常类型(空指针、参数异常、自定义业务异常等),统一捕获、统一处理、统一返回标准JSON异常结果,简化异常处理逻辑,保证项目返回格式统一。七、RESTful风格与接口规范17、什么是RESTful接口风格?常用请求方式对应业务?RESTful是一种简洁、规范的接口设计风格,通过请求方式区分业务操作,URL只定义资源,不定义行为。常用规范:GET:查询资源(查列表、查详情)POST:新增资源PUT:修改/更新资源DELETE:删除资源八、源码与底层原理(进阶面试)18、SpringMVC容器和Servlet容器的启动顺序?1)启动服务器,先初始化Servlet容器;2)加载Spring根容器(父容器),初始化Service、Dao层Bean;3)加载SpringMVC子容器(子容器),初始化Controller、Web相关Bean;4)子容器可以访问父容器的Bean,父容器不能访问子容器Bean,实现层级隔离。19、SpringMVC消息转换器的作用?默认使用什么转换器?消息转换器负责请求参数和响应数据的序列化、反序列化,主要处理JSON数据转换。SpringMVC默认使用MappingJackson2HttpMessageConv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年电除颤培训模拟试题(含答案)
- 职业技能训练师QC管理竞赛考核试卷含答案
- 2026年软件工程师专业职业资格考试模拟题及答案详解
- 2026年护理中级模拟试题模拟试卷及答案详解
- 2026年湖南导游模拟试题(含答案)
- 脱酚工保密意识水平考核试卷含答案
- 2026年河南中招理化模拟试题(含答案)
- 2026年外交翻译模拟题及答案详解
- 2026年班主任基本功大赛模拟试题(含答案)
- 2026年国开建筑材料a机模拟试卷(含答案)
- 肿瘤患者的心理护理:营养与心理支持
- 政府专职消防文员理论题库有答案
- 研究会内部管理制度
- 七年级上册 第四单元 写作《思路要清晰》课件 (共23张)
- 舞台剧小剧场运营手册
- 燃气施工中常见问题及解决措施
- 档案数字化加工保密管理规定制度
- 2026年中国航空传媒有限责任公司市场化人才招聘备考题库及答案详解(易错题)
- 《环境科学与工程导论》课件-第8章土壤污染及其控治
- 2024年成都大邑县总工会招聘真题
- 肾上腺肿瘤课件
评论
0/150
提交评论