Spring MVC 高频面试题及详细真实答案(实战版)_第1页
Spring MVC 高频面试题及详细真实答案(实战版)_第2页
Spring MVC 高频面试题及详细真实答案(实战版)_第3页
Spring MVC 高频面试题及详细真实答案(实战版)_第4页
Spring MVC 高频面试题及详细真实答案(实战版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpringMVC高频面试题及详细真实答案(实战版)一、基础核心概念1.什么是SpringMVC?它的核心作用是什么?SpringMVC是Spring框架自带的一套轻量级WebMVC框架,基于Servlet技术实现,专门用来做Java后端的请求接收、处理、响应,是目前主流的SSM架构核心组件。核心作用:彻底解耦Web层代码,把请求接收、业务调度、视图响应分开,替代原生Servlet繁琐的代码,让Web开发更简洁、规范,适配RESTful风格接口开发。2.SpringMVC的核心组件有哪些?各自职责?日常开发最核心的5个组件,面试常问,全部是实战常用:DispatcherServlet(前端控制器):整个SpringMVC的入口,所有请求统一经过它,负责分发请求、调度所有组件,全程统一管控,没有业务逻辑。HandlerMapping(处理器映射器):根据请求的URL地址,匹配对应的Controller处理器,告诉DispatcherServlet该找谁处理请求。HandlerAdapter(处理器适配器):负责执行匹配到的Controller方法,统一调用规则,适配不同类型的处理器(最常用的是注解式适配器)。ViewResolver(视图解析器):对视图路径进行解析,拼接前缀后缀,找到真正的视图页面(前后端分离项目基本不用)。Handler/Controller(处理器):开发者自己写的业务接口,真正处理请求、封装返回数据。3.SpringMVC和Servlet的关系?SpringMVC底层就是基于Servlet实现的,DispatcherServlet本质上是一个原生Servlet。区别:原生Servlet开发需要自己写接收参数、跳转页面、处理乱码、分发请求的代码,冗余且混乱;SpringMVC封装了所有通用操作,开发者只需要写业务接口即可,不用关注底层Servlet细节。二、执行流程(面试重中之重)4.详细说一下SpringMVC的完整执行流程?我用最接地气的实战流程,按请求执行顺序说明,不用官方晦涩话术:客户端发起请求(浏览器/前端axios),请求被DispatcherServlet拦截接收;DispatcherServlet调用HandlerMapping,根据请求URL匹配对应的Controller方法;匹配成功后,返回处理器执行链(包含Controller方法、拦截器等);DispatcherServlet调用HandlerAdapter,由适配器负责执行目标Controller方法;执行方法前,完成参数绑定、类型转换、数据校验;执行Controller中的业务逻辑,返回结果(字符串视图名/JSON数据);如果是视图跳转:ViewResolver解析视图路径,渲染页面;如果是前后端分离:直接通过消息转换器返回JSON;执行拦截器后置方法,最终响应数据给客户端。5.SpringMVC拦截器和过滤器的区别?(高频对比题)实战中最核心的4点区别,面试直接背:底层不同:过滤器(Filter)是Servlet原生组件,基于函数回调;拦截器(Interceptor)是SpringMVC组件,基于AOP思想。执行位置不同:过滤器在DispatcherServlet之前执行;拦截器在DispatcherServlet之后、Controller前后执行。拦截范围不同:过滤器拦截所有请求,包括静态资源;拦截器只拦截Controller接口请求。使用场景不同:过滤器做全局乱码过滤、跨域、静态资源放行;拦截器做登录校验、权限拦截、请求日志记录。三、核心注解与参数处理6.@RequestMapping、@GetMapping、@PostMapping区别?@RequestMapping:通用请求注解,不限制请求方式(GET/POST/PUT/DELETE都能接收),开发中不推荐随便用,容易引发请求方式混乱。@GetMapping:只接收GET请求,用于查询数据,参数拼接在地址栏,不安全、有长度限制。@PostMapping:只接收POST请求,用于新增/提交数据,参数放在请求体,相对安全、无长度限制。RESTful开发规范:查GET、增POST、改PUT、删DELETE。7.@RequestParam和@PathVariable的区别?两个都是接收请求参数,场景完全不同:@RequestParam:接收普通请求参数,URL格式为/user?name=张三&age=18,用于普通参数传递,支持默认值、非必填设置。@PathVariable:接收路径变量,URL格式为/user/1001,用于RESTful风格路径传参,必须和路径占位符一致,多用于根据ID查询、删除。8.@RequestBody作用?什么时候用?核心作用:接收前端传递的JSON格式请求体数据,自动将JSON解析为Java对象。使用场景:前后端分离项目,所有新增、修改接口,前端传JSON数据时必须加;GET请求没有请求体,所以@RequestBody一般只配合POST/PUT使用。注意点:@RequestBody只能接收完整JSON对象,不能接收普通表单参数、地址栏参数。9.SpringMVC参数绑定的流程?前端传参到后台赋值的完整过程:请求到达DispatcherServlet;HandlerAdapter调用参数解析器;根据参数注解/参数类型,解析请求体、请求头、地址栏参数;完成类型转换、数据格式化、JSR303校验;最终把参数赋值给Controller方法的形参。四、乱码、跨域、异常处理10.SpringMVC如何解决全局乱码问题?实战标准解决方案:在web.xml中配置Spring自带的CharacterEncodingFilter,设置全局编码为UTF-8,强制请求和响应编码统一。注意:只配置这个过滤器就能解决绝大部分乱码问题,不用每个接口单独设置编码。SpringBoot项目已经自动配置好了,无需手动写。11.SpringMVC怎么解决跨域问题?三种常用方式跨域是浏览器同源策略限制,后端SpringMVC三种主流解决方案:注解跨域(局部):在Controller类/方法上加@CrossOrigin,只对当前接口生效,适合少量接口跨域场景。全局配置跨域:实现WebMvcConfigurer接口,重写addCorsMappings方法,统一配置所有接口跨域,企业项目最常用。过滤器跨域:自定义CORS过滤器,拦截所有请求设置响应头,适配老项目。12.SpringMVC全局异常处理怎么做?实战统一异常处理方案,企业项目标配:使用@RestControllerAdvice+@ExceptionHandler实现全局异常拦截:@RestControllerAdvice:标识全局异常处理类,拦截所有Controller异常;@ExceptionHandler:指定拦截的异常类型(空指针、参数异常、自定义业务异常等);统一封装返回结果,不用每个接口写try-catch,代码更整洁。五、视图、静态资源与配置13.SpringMVC静态资源放行怎么配置?SpringMVC默认会拦截所有请求,包括静态资源(html、js、css、图片),需要手动放行。实现WebMvcConfigurer接口,重写addResourceHandlers方法,配置静态资源路径和访问地址,放行后前端可以直接访问静态文件。SpringBoot项目默认放行static、public、resources文件夹下的静态资源,无需手动配置。14.什么是SpringMVC消息转换器?作用是什么?消息转换器(HttpMessageConverter)主要负责Java对象和HTTP报文的相互转换。最常用的是MappingJackson2HttpMessageConverter,作用是把后台返回的Java对象、集合,自动转为JSON格式响应给前端,也是前后端分离项目的核心依赖。日常开发中统一返回时间格式、全局序列化规则,都是通过自定义消息转换器实现的。六、高频易错面试题15.Controller是单例还是多例?有什么坑?Controller默认单例,由Spring容器统一创建管理。核心坑点:绝对不能在Controller中定义成员变量!多用户并发请求时,会出现线程安全问题,数据错乱、覆盖。解决方案:变量全部定义在方法内部,不用成员变量;需要共享数据用Spring容器托管的Bean或者ThreadLocal。16.SpringMVC中forward和redirect的区别?forward服务器内部转发:一次请求,地址栏URL不变,只能跳转内部资源,不会重新发起请求,效率高。redirect客户端重定向:两次请求,地址栏URL改变,可以跳转外部链接、跨项目跳转,会丢失原有请求参数。17.@RestController和@Controller区别?@Controller:传统视图控制器,默认返回视图页面,需要返回JSON时必须单独加@ResponseBody。@RestController:是@Controller+@ResponseBody的合体注解,所有方法默认返回JSON数据,专门用于前后端分离接口开发,现在项目基本都用这个。18.SpringMVC拦截器的三个方法执行顺

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论