Spring MVC 高频面试题及真实面试答案_第1页
Spring MVC 高频面试题及真实面试答案_第2页
Spring MVC 高频面试题及真实面试答案_第3页
Spring MVC 高频面试题及真实面试答案_第4页
Spring MVC 高频面试题及真实面试答案_第5页
全文预览已结束

下载本文档

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

文档简介

SpringMVC高频面试题及真实面试答案一、基础概念类1.说说你对SpringMVC的理解?它的核心作用是什么?答:SpringMVC是Spring框架自带的一个轻量级Web层框架,基于MVC设计模式实现,主要用来做JavaWeb的请求接收、参数处理、业务调度、视图响应。核心作用就是接管浏览器的HTTP请求,帮我们封装繁琐的Servlet原生操作,让开发者只需要专注写Controller业务逻辑,不用手动处理流、参数解析、跳转、响应等底层操作,极大提升Web开发效率。2.SpringMVC的执行流程说一下?答:整体核心流程很固定,一共6步:1.客户端发起HTTP请求,请求先到达前端控制器DispatcherServlet;2.DispatcherServlet调用HandlerMapping,根据请求URL匹配对应的Controller处理器;3.获取到处理器后,调用HandlerAdapter适配执行Controller方法;4.执行Controller中的业务逻辑,返回ModelAndView(或数据);5.视图解析器ViewResolver解析视图路径,渲染页面;6.最终封装响应结果,返回给浏览器。日常开发如果是前后端分离项目,一般直接返回JSON,不会走视图渲染步骤。3.DispatcherServlet的作用是什么?为什么它是核心?答:DispatcherServlet是SpringMVC的统一入口、总调度中心。所有请求都经过它统一分发,它不处理具体业务,只负责调度:找处理器、适配执行、处理视图、统一响应。相当于整个MVC的中转站,所有组件的协作都靠它串联,所以是核心。二、核心组件类(高频必问)4.SpringMVC五大核心组件是什么?各自作用?答:五大核心组件是DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver、Handler(Controller)。1.DispatcherServlet:前端总控制器,请求统一入口,负责整体调度;2.HandlerMapping:请求映射器,根据URL找到对应的Controller方法;3.HandlerAdapter:处理器适配器,适配不同类型的Controller,统一调用规则,执行目标方法;4.ViewResolver:视图解析器,拼接视图路径、解析页面,用于传统页面跳转项目;5.Handler:就是我们写的Controller,具体处理业务逻辑。5.HandlerMapping和HandlerAdapter区别是什么?会不会混淆?答:不会混淆,两者职责完全分开:HandlerMapping只做“找”:根据请求地址,匹配到对应的Controller方法,只是定位资源,不执行;HandlerAdapter只做“执行”:拿到Mapping找到的方法,负责参数封装、调用方法、处理返回值。简单说:Mapping找路,Adapter跑路执行。三、请求参数接收与注解类(面试最高频)6.@RequestMapping、@GetMapping、@PostMapping区别?答:@RequestMapping是通用注解,不限制请求方式,GET、POST都能接收,项目中如果不规范使用容易出现接口安全问题、幂等性问题。@GetMapping、@PostMapping是Spring封装的细分注解,限定请求方式,只能对应GET/POST请求,代码可读性更高,Restful风格开发必须用这两个。7.@RequestParam和@PathVariable区别?答:两个都是接收参数,只是参数位置不一样:1.@RequestParam:接收问号后面的参数,也就是URL拼接参数,例如/user/get?name=张三;特点:可以设置是否必传、默认值,参数名可以和形参名不一致。2.@PathVariable:接收路径占位符参数,例如/user/1001;特点:主要用于Restful风格接口,路径参数必须匹配,一般用于传ID、唯一标识。8.@RequestBody作用?什么场景下用?答:@RequestBody用来接收前端传的JSON格式请求体数据。前后端分离项目中,POST、PUT请求基本都是JSON传参,必须用这个注解接收,自动把JSON字符串解析为Java对象。注意:GET请求没有请求体,不能用@RequestBody。9.SpringMVC参数绑定的原理是什么?答:核心就是类型转换器+数据绑定器。请求到达Controller前,Spring会自动拿到请求参数,根据方法形参类型,通过内置的转换器,把String类型的请求数据,自动转成int、long、Date、实体类等Java类型,然后赋值给形参,完成参数绑定。如果默认转换器不满足(比如特殊日期格式),我们可以自定义转换器。四、响应与JSON处理10.@ResponseBody作用?为什么前后端分离必须加?答:正常Controller方法默认返回视图页面,做页面跳转。加上@ResponseBody后,不再走视图解析器,直接把返回的对象、集合、字符串转为JSON,通过响应体返回给前端。前后端分离项目不需要页面跳转,只需要返回数据,所以所有接口基本都要加这个注解。另外@RestController就是@Controller+@ResponseBody的组合注解。11.SpringMVC怎么统一返回JSON格式?答:两种常用方式:1.类上加@RestController,所有方法自动返回JSON;2.全局配置消息转换器,统一时间格式、编码、空值处理,避免每个接口单独处理。五、拦截器与过滤器(必问区别)12.SpringMVC拦截器(HandlerInterceptor)原理和使用场景?答:拦截器是SpringMVC提供的请求拦截机制,只拦截Controller请求,属于Spring层级的组件。三个核心方法:1.preHandle:控制器方法执行前执行,可做登录校验、权限拦截、请求放行;2.postHandle:控制器方法执行完、视图渲染前执行;3.afterCompletion:整个请求结束后执行,可做资源释放、日志记录。常用场景:登录拦截、权限校验、接口日志、防重复提交。13.拦截器和过滤器(Filter)的区别?面试重点答:核心区别有四点,我平时面试都是这么总结的:1.层级不同:Filter是Servlet原生组件,属于Web容器层级;Interceptor是SpringMVC组件,属于Spring框架层级;2.拦截范围不同:Filter拦截所有请求,包括静态资源、jsp、图片;Interceptor只拦截Controller接口请求;3.执行顺序不同:请求进来先过Filter,再到DispatcherServlet,最后才到拦截器;4.功能不同:Filter适合做全局编码、跨域、请求过滤;Interceptor适合做权限、登录、业务层面的拦截。六、异常处理14.SpringMVC全局异常处理怎么做?答:项目中统一用@RestControllerAdvice+@ExceptionHandler做全局异常处理。自定义一个全局异常处理类,加上@RestControllerAdvice,然后定义不同的异常方法:捕获系统异常、自定义业务异常、参数校验异常,统一封装成标准返回结果,前端不用处理各种报错格式,代码更整洁。这种方式可以拦截所有Controller抛出的异常,不需要每个接口单独try-catch。七、Restful风格与接口规范15.说说Restful接口规范?SpringMVC怎么实现?答:Restful就是用请求方式区分操作,URL只定义资源,不定义行为:1.GET:查询资源2.POST:新增资源3.PUT:修改资源4.DELETE:删除资源SpringMVC通过@GetMapping、@PostMapping、@PathVariable配合实现标准Restful接口,路径简洁、规范统一,便于前后端协作。八、常见面试坑点&实操问题16.GET和POST请求的区别?项目中怎么选?答:1.GET参数拼接在URL上,有长度限制,不安全,可缓存;2.POST参数在请求体,无长度限制,相对安全,不缓存;业务上:查询用GET,新增/修改/删除用POST/PUT/DELETE,严格遵循请求语义。17.SpringMVC怎么解决跨域问题?答:常用三种方式:1.局部跨域:接口或类上加@CrossOrigin;2.全局跨域:实现WebMvcConfigurer,重写addCorsMappings方法,统一配

温馨提示

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

评论

0/150

提交评论