版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringMVC经典面试题及详细答案(实战版)1、什么是SpringMVC?它的核心作用是什么?SpringMVC是Spring框架自带的MVC分层Web框架,专门用于Java后端Web请求处理,是目前主流的SSM框架组合中的核心Web层框架。它的核心作用主要有三点:1)请求分发:接收浏览器、客户端发来的HTTP请求,统一拦截、分发到对应的控制器方法中处理;2)数据绑定与处理:自动完成请求参数、表单数据、JSON数据和Java对象的映射绑定,省去手动获取参数、类型转换的繁琐代码;3)视图响应:处理完业务逻辑后,负责跳转页面、返回JSON数据、文件流等各类响应结果,统一Web层的开发规范。相比于原生Servlet,SpringMVC简化了Web开发,不用手动写Servlet、不用频繁处理request、response对象,开发效率更高、代码更规整。2、SpringMVC的核心组件有哪些?各自的作用是什么?SpringMVC整套流程依赖5个核心组件,缺一不可,也是面试高频考点:1、DispatcherServlet(前端控制器)整个SpringMVC的核心中枢,所有客户端请求都会先经过它。它不处理具体业务,只负责统一接收请求、调度其他组件工作、分发请求、响应结果,相当于整个流程的总指挥。2、HandlerMapping(处理器映射器)负责根据客户端的请求URL,匹配对应的Controller处理器方法。简单说就是:根据地址找对应的业务方法,找到后返回处理器执行链。3、HandlerAdapter(处理器适配器)负责执行真正的Controller方法。因为SpringMVC支持多种类型的处理器,适配器的作用就是统一调用规则,适配不同的处理器,让DispatcherServlet可以统一调度执行,同时完成参数绑定、数据校验等前置操作。4、ViewResolver(视图解析器)负责视图解析,当控制器返回视图名称(字符串)时,视图解析器会拼接前缀、后缀,找到对应的页面资源(如jsp、html),最终渲染页面。如果是返回JSON数据,一般不会走视图解析流程。5、Handler(处理器/Controller)开发者自己编写的Controller控制器,用来处理具体的业务逻辑,接收参数、调用Service、封装返回结果。3、详细说一下SpringMVC的完整执行流程(面试必背)这是SpringMVC最核心的面试题,完整执行流程分为10步,贴合源码执行逻辑:1)客户端(浏览器/前端)发起HTTP请求,请求到达服务器;2)请求被配置好的DispatcherServlet拦截,作为入口统一接收所有请求;3)DispatcherServlet调用HandlerMapping,根据请求URL查找匹配的Controller方法;4)HandlerMapping匹配成功,返回包含Controller方法的处理器执行链;5)DispatcherServlet调用HandlerAdapter,由适配器准备执行目标方法;6)HandlerAdapter完成请求参数解析、类型转换、数据校验、参数绑定,把请求数据封装成方法参数;7)执行目标Controller的业务方法,处理业务逻辑,得到返回结果(ModelAndView或JSON数据);8)Controller方法执行完毕,返回ModelAndView对象给HandlerAdapter,再回传给DispatcherServlet;9)DispatcherServlet调用ViewResolver视图解析器,解析视图路径,渲染视图;10)最终将处理后的视图页面或JSON数据,封装成HTTP响应返回给客户端。4、DispatcherServlet的初始化时机和作用?为什么它是单例的?初始化时机:默认在服务器启动、Web容器初始化时加载创建,也可以配置为第一次请求时初始化。启动时初始化可以提前加载配置、初始化容器,避免第一次请求卡顿。核心作用:统一接收所有Web请求,调度所有核心组件,管控整个请求处理流程,是SpringMVC的入口和中枢。为什么是单例:DispatcherServlet是全局调度组件,整个Web项目只需要一个实例即可统一处理所有请求,多实例会造成资源浪费、调度混乱。它是线程安全的,采用多线程处理不同客户端请求,所以单例完全可以满足高并发场景。5、SpringMVC常用注解有哪些?分别的作用?整理开发和面试最常用的核心注解:1、@Controller:标识当前类为控制器,交给Spring管理,用于处理Web请求。2、@RequestMapping:通用请求映射注解,配置请求URL和请求方式,可作用在类和方法上。3、@GetMapping/@PostMapping:限定请求方式,分别只接收GET、POST请求,比RequestMapping更精准。4、@RequestParam:获取普通请求参数(表单参数、URL拼接参数),可设置参数是否必传、默认值。5、@PathVariable:获取路径变量,用于RESTful风格接口,比如/user/{id}中的id。6、@RequestBody:接收前端传递的JSON格式数据,自动封装为Java实体类对象,多用于POST请求。7、@ResponseBody:将方法返回值直接转为JSON数据返回前端,不跳转视图。8、@RestController:组合注解,等价于@Controller+@ResponseBody,接口开发专用,所有方法默认返回JSON。9、@RequestHeader:获取请求头中的数据。10、@CookieValue:获取请求中的Cookie数据。6、@RequestParam和@PathVariable的区别?1)作用场景不同@RequestParam:获取URL问号后面的参数,例如/user/list?name=张三&age=20;@PathVariable:获取URL路径中的占位符参数,用于REST风格,例如/user/1001。2)URL格式不同RequestParam是键值对拼接参数,PathVariable是路径嵌入参数。3)使用场景不同普通查询、筛选参数用@RequestParam;资源唯一标识(ID、编号)路径传参用@PathVariable。7、@RequestBody和@RequestParam的区别?1)接收数据类型不同@RequestParam:接收表单数据、URL参数、键值对数据,不支持JSON;@RequestBody:专门接收JSON格式的请求体数据。2)请求方式限制RequestParam支持GET、POST所有请求方式;RequestBody只能用于POST、PUT等有请求体的请求,GET请求没有请求体,无法使用。3)参数封装方式RequestParam一般接收单个参数,也可封装普通实体;RequestBody可直接将完整JSON对象映射为Java实体类,适合复杂参数传输。8、SpringMVC怎么解决跨域问题?有几种方式?跨域是前端域名、端口和后端不一致导致的浏览器拦截,SpringMVC有三种常用解决方案:1、注解方式(局部跨域)在Controller类或方法上添加@CrossOrigin注解,快速实现当前接口或当前类所有接口跨域,简单高效,适合小项目。2、全局配置方式(全局跨域)实现WebMvcConfigurer接口,重写addCorsMappings方法,统一配置所有接口的跨域规则,支持批量配置路径、允许的域名、请求方式、请求头,企业项目常用。3、过滤器方式自定义CorsFilter过滤器,拦截所有请求,设置跨域响应头,适配老项目或特殊过滤场景。9、SpringMVC拦截器和过滤器的区别?这是面试高频对比题,核心区别如下:1、所属层级不同过滤器(Filter):是Servlet原生组件,属于Web容器层级,和Spring框架无关;拦截器(Interceptor):是SpringMVC自带组件,属于Spring框架层级,依托Spring容器。2、执行时机不同执行顺序:过滤器先执行,拦截器后执行;响应返回时,拦截器先收尾,过滤器最后收尾。3、拦截范围不同过滤器拦截所有请求,包括静态资源、jsp、html;拦截器只拦截SpringMVC管理的Controller请求,不拦截静态资源。4、功能权限不同拦截器可以获取Spring容器中的Bean、可以操作Controller方法、做权限校验、日志记录、登录拦截;过滤器无法直接使用Spring容器资源,主要做编码过滤、跨域过滤、请求预处理。10、SpringMVC拦截器的三个核心方法及执行顺序?自定义拦截器需要实现HandlerInterceptor接口,包含三个核心方法:1、preHandle:Controller方法执行之前执行,返回true放行,false拦截请求,常用于登录校验、权限判断。2、postHandle:Controller方法执行完毕、视图渲染之前执行,可修改Model数据、视图信息。3、afterCompletion:整个请求流程结束、视图渲染完成后执行,常用于资源释放、请求日志记录。完整执行顺序:preHandle→执行Controller方法→postHandle→视图渲染→afterCompletion11、SpringMVC参数绑定的原理是什么?核心原理是SpringMVC参数解析器机制。当请求到达HandlerAdapter后,框架会加载所有内置的参数解析器(RequestParam解析器、RequestBody解析器、PathVariable解析器等)。根据Controller方法的参数注解、参数类型,匹配对应的解析器,自动完成:1)获取请求中的原始数据;2)完成数据类型转换(字符串转数字、日期转换等);3)数据格式校验;4)封装绑定到方法参数中。开发者无需手动取值、转型,大幅简化代码。如果默认解析器不满足需求,也可以自定义参数解析器。12、SpringMVC怎么实现全局异常处理?企业开发主流方式是使用@RestControllerAdvice+@ExceptionHandler实现全局统一异常处理。1)@RestControllerAdvice:标识全局异常处理类,拦截所有Controller抛出的异常;2)@ExceptionHandler:配置对应异常类型,捕获指定异常(空指针、参数异常、自定义业务异常等)。优势:统一异常返回格式,避免前端接收杂乱报错信息,统一返回成功/失败结构体,代码解耦,不用在每个Controller中try-catch。除此之外,还可以使用SpringMVC自带的简单异常处理器、自定义异常页面,但是项目中基本首选注解全局异常处理。13、SpringMVC的视图解析器工作原理?视图解析器的核心作用是将逻辑视图名转为物理视图地址。当Controller方法返回字符串视图名(如"index"),DispatcherServlet会调用ViewResolver:1)读取配置的视图前缀(如/WEB-INF/jsp/)和后缀(如.jsp);2)拼接得到完整页面路径/WEB-INF/jsp/index.jsp;3)加载对应页面资源,完成视图渲染和跳转。注意:如果接口使用@ResponseBody返回JSON数据,不会走视图解析流程,直接返回数据,不进行页面跳转。14、RESTful风格接口的特点,SpringMVC如何实现?RESTful特点:通过请求方式区分操作,URL简洁统一,用资源路径代替参数拼接。GET:查询资源、POST:新增资源、PUT:修改资源、DELETE:删除资源。SpringMVC实现方式:1)使用@GetMapping、@PostMapping、@PutMapping、@DeleteMapping区分接口操作;2)使用@PathVariable接收路径变量,传递资源ID等参数;3)统一接口返回格式,使用@RestController返回JSON数据。15、SpringMVC和Struts2的区别(老面试高频)1)核心机制不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省哈尔滨市香坊区2027届中考五模物理试题含解析
- 关于延期提交资料的催办回复函(3篇)范文
- 浙江省2026年上半年海船船员适任考试轮机部练习题及答案
- 2026年银行业专业人员初级职业资格考试(专业实务个人贷款)考前冲刺试题及答案
- 北京市北京理工大附中2027届中考物理考前最后一卷含解析
- 安全策略优化与实施手册
- 2026年心理咨询师考试《心理咨询伦理》专项模拟题及答案
- 管理学《餐饮服务与管理测试题》考试题及答案
- 2026年眼视光技术中级模拟卷及答案-验光配镜与视力矫正病例研究
- 2026年眼视光技术中级模拟试卷及答案-验光配镜与视力矫正临床应用挑战
- 2025全国高校辅导员素质能力大赛考试测试题(含答案)
- 2026年建筑安全员C证考试真题及答案
- 2026年纪检监察案件查办政策考试题及答案
- 2026年度“十八项医疗核心制度”培训考试真题解析含答案
- 2026年江苏省粮食集团有限责任公司人员招聘笔试备考题库及详细答案解析
- 中国多发性骨髓瘤诊治指南(2026年修订)
- 《物流场所消防安全管理》XFT 3026-2026
- 民工入场基础安全教育试题及答案
- 等离子切割机安全操作规范培训课件
- 课件-试点地区的增值税纳税申报表填报实务(一)
- 小自考汉语言文学创意写作策略与试题及答案
评论
0/150
提交评论