版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringMVC高频面试题及详细答案(实战向)1.简单说下你对SpringMVC的理解,它的作用是什么?SpringMVC是Spring框架自带的一个轻量级Web层MVC框架,专门用来做JavaWeb请求接收、处理、响应的框架,也是目前企业SSM、SMM项目的主流Web框架。它核心作用就是彻底解放原生Servlet,不用我们手写大量Servlet、处理乱码、参数解析、跳转、视图渲染等重复代码,统一接管所有浏览器请求,分层处理Web层逻辑,让代码结构更清晰、开发更高效。简单来说:SpringMVC只负责Web层,管请求、管响应、管视图跳转,业务逻辑交给Service,数据持久化交给Mapper。2.SpringMVC的核心工作流程是什么?(最常问)整个流程是一套固定的拦截分发流程,日常开发完全按照这个流程执行,步骤如下:1.客户端发起请求:浏览器/客户端发送HTTP请求,访问项目接口或页面;2.前端控制器拦截请求:DispatcherServlet拦截所有请求,它是整个SpringMVC的入口,相当于总调度中心;3.查询处理器映射器:DispatcherServlet调用HandlerMapping,根据请求URL匹配对应的Controller方法(处理器);4.获取处理器适配器:找到对应处理器后,DispatcherServlet调用HandlerAdapter,由适配器去执行目标Controller方法;5.执行控制器逻辑:执行Controller中的业务接口代码,处理参数、调用Service层逻辑,最终返回ModelAndView(数据+视图);6.视图解析器解析视图:ViewResolver对ModelAndView中的视图名称进行解析,拼接前缀后缀,找到真实的视图页面;7.视图渲染+响应结果:视图渲染数据,把Model中的数据填充到页面,最终将处理后的结果响应给客户端。核心总结:请求进来→DispatcherServlet统一调度→匹配接口→执行方法→解析视图→响应数据。3.SpringMVC五大核心组件是什么?各自作用?五大核心组件是SpringMVC的核心骨架,缺一不可:1.DispatcherServlet(前端控制器)整个SpringMVC的核心入口,统一拦截所有请求、统一调度所有组件,所有请求都经过它分发处理,相当于整个框架的总指挥。2.HandlerMapping(处理器映射器)负责根据请求URL地址,匹配对应的Controller处理器方法,简单说就是找接口。3.HandlerAdapter(处理器适配器)负责执行找到的Controller方法,适配不同类型的处理器,统一调用规则,简单说就是执行接口。4.Handler(处理器/Controller)开发者自己写的Controller接口方法,真正处理业务请求、接收参数、返回数据的核心业务处理器。5.ViewResolver(视图解析器)负责解析视图名称,拼接页面路径前缀后缀,定位真实视图资源,同时完成视图数据渲染。4.DispatcherServlet的初始化时机和作用?初始化时机:默认在项目启动时初始化,也可以配置为第一次请求时初始化,企业开发基本都是项目启动初始化,避免第一次请求卡顿。核心作用:1.作为统一入口拦截所有HTTP请求,避免多个Servlet冗余;2.初始化并加载SpringMVC所有核心组件(映射器、适配器、视图解析器等);3.调度各个组件协同工作,完成请求的完整处理流程。5.@RequestMapping注解的作用和常用属性?这个注解是用来绑定请求URL和Controller方法的,既可以标在类上,也可以标在方法上。类上标注:统一给当前类所有接口设置请求路径前缀;方法上标注:设置具体接口的请求地址。常用属性:1.value/path:指定请求URL地址;2.method:限定请求方式(GET、POST、PUT、DELETE);3.params:限定请求必须携带指定参数;4.headers:限定请求头信息;5.produces:指定响应数据格式和编码。衍生注解:@GetMapping、@PostMapping等,是@RequestMapping的简化版,日常开发更常用。6.SpringMVC如何接收前端参数?常用方式有哪些?日常开发五种主流参数接收方式,覆盖所有业务场景:1.直接接收简单参数前端参数名和方法参数名一致,直接在方法形参定义,适合少量简单参数。2.@RequestParam接收参数适用于参数名和前端不一致、必传参数、设置默认值的场景,主要接收普通表单、URL参数。3.实体类接收参数前端参数名和实体类属性名一致,直接用实体类接收,适合参数多的场景,开发最常用。4.@PathVariable接收路径参数用于REST风格接口,接收URL路径中的变量,比如/user/{id}。5.@RequestBody接收JSON参数专门接收前端传递的JSON格式数据,自动封装为实体类或Map,前后端分离项目必备。7.@RequestParam和@PathVariable区别?1.@RequestParam接收URL查询参数,格式为xxx?name=xxx&age=xxx,属于请求参数。特点:参数在URL问号后面,可传可不传(可设置默认值)。2.@PathVariable接收URL路径变量,格式为xxx/user/1001,属于路径一部分。特点:路径变量必须传递,否则接口匹配失败,404。8.@RequestBody和@ResponseBody作用?@RequestBody作用在方法形参上,读取请求体中的JSON数据,自动通过消息转换器解析为Java对象。适用场景:POST、PUT请求接收JSON参数,无法接收普通表单参数。@ResponseBody作用在方法上或类上,将方法返回的对象、集合自动转为JSON字符串,直接响应给前端,不会走视图解析。前后端分离项目中,所有接口基本都需要加这个注解。补充:@RestController注解=@Controller+@ResponseBody,类上标注后,所有方法自动返回JSON。9.SpringMVC消息转换器的作用?核心作用是完成Java对象和JSON字符串的相互转换。当前端传JSON、后端用@RequestBody接收时,消息转换器把JSON转成Java对象;当后端返回对象、@ResponseBody响应时,消息转换器把Java对象转成JSON返回给前端。SpringMVC默认使用Jackson作为消息转换器,日常开发中我们经常自定义消息转换器,解决日期格式化、空值处理、编码乱码等问题。10.SpringMVC怎么解决中文乱码问题?企业标准解决方案:配置全局编码过滤器CharacterEncodingFilter。在web.xml或者配置类中注册该过滤器,统一设置请求和响应编码为UTF-8,强制所有请求响应都使用统一编码,彻底解决GET、POST乱码问题。另外配合消息转换器设置UTF-8编码,避免JSON响应乱码,这是项目通用的标准配置。11.SpringMVC的转发和重定向区别?1.转发(forward)服务器内部跳转,只发起一次请求,浏览器地址栏URL不变。特点:共享request对象,可以获取请求参数,效率更高,只能跳转到项目内部资源。2.重定向(redirect)浏览器二次跳转,服务器返回302状态码,浏览器重新发起新请求,地址栏URL改变。特点:不共享request,参数会丢失,可以跳转到外部网站,常用于登录成功、表单提交后防止重复提交。12.SpringMVC拦截器(Interceptor)的作用和执行流程?拦截器是SpringMVC提供的请求拦截工具,可以在Controller执行前后对请求进行预处理和后处理,常用于登录校验、权限拦截、日志记录、限流等。三大核心方法及执行顺序:1.preHandle:Controller执行前执行,返回true放行,false拦截请求;2.postHandle:Controller执行完成、视图渲染前执行;3.afterCompletion:整个请求处理完毕、视图渲染完成后执行,用于资源释放。拦截器和过滤器区别:过滤器是Servlet层级,拦截所有资源;拦截器是SpringMVC层级,只拦截Controller接口请求。13.SpringMVC异常处理机制有哪些方式?四种常用异常处理方式,企业优先用全局异常处理:1.局部异常处理@ExceptionHandler:仅当前Controller生效,处理单个控制器异常;2.全局异常处理@ControllerAdvice+@ExceptionHandler:项目全局生效,统一捕获所有接口异常,封装统一返回结果,开发最常用;3.实现HandlerExceptionResolver接口:自定义全局异常解析器;4.配置web.xml异常页面:针对页面异常跳转,现在基本不用。14.@ControllerAdvice的作用?这是SpringMVC提供的全局增强注解,可以对所有Controller进行统一增强处理,核心用途三个:1.全局统一异常处理,统一返回前端错误格式;2.全局请求参数预处理、数据统一封装;3.全局响应数据统一处理、统一格式封装。配合@ExceptionHandler实现项目异常统一拦截,是前后端分离项目的标配。15.SpringMVC和Servlet的关系?1.SpringMVC基于Servlet开发,底层依然依赖Servlet规范,DispatcherServlet本质就是一个Servlet;2.原生Servlet需要自己处理参数接收、乱码、跳转、异常、视图等繁琐操作,代码冗余;3.SpringMVC封装了Servlet,帮我们完成所有通用底层操作,开发者只需要专注业务接口开发,极大提升开发效率。16.SpringMVC支持的请求返回方式有哪些?1.返回字符串:可以是视图名称(跳转页面),也可以结合@ResponseBody返回普通文本;2.返回ModelAndView:同时携带视图名称和页面数据,用于传统页面渲染;3.返回实体类/Map/集合:配合@ResponseBody自动转JSON,前后端分离主流方式;4.返回ResponseEntity:自定义响应状态码、响应头、响应体,用于精细控制接口响应结果。17.拦截器为什么不能拦截静态资源?怎么解决?默认情况下,拦截器会拦截所有请求,包括静态资源(js、cs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于供应商资格确认的回复函3篇
- 餐饮企业宴会餐饮服务标准化管理指导书
- 《松鼠》教学教案
- 电子商务网站优化绩效考评表
- 2026货物质量问题处理回复函(3篇范文)
- 能源行业设备运维人员操作技能绩效考评表
- 品牌总监绩效评定表
- 2026年事业单位招聘图书馆管理岗位试题集
- 确认技术标准与验收方式函7篇
- 2026年街道办事业单位招聘综合知识专项强化试卷
- GB/T 22187-2026建立人体测量数据库的一般要求
- 缺氧护理中的护理实践与案例分析
- 违纪违规处理课件
- 农产品加工质量管理体系建设
- J08J110 居住建筑节能构造(DBJT02-53-2008)
- 2025贵州茅台酒厂集团招聘管理人员13人笔试历年备考题库附带答案详解试卷2套
- TSGT5002-2025电梯维护保养规则
- z08海员基本安全培训题库及答案解析
- 《汉江临泛》课件
- 摩托置换合同协议书模板
- 浦东新区2024-2025学年六年级上学期期中考试数学试卷及答案(上海新教材)
评论
0/150
提交评论