SpringMVC的高频面试题

2023最新版(持续更新)

  • 一、SpringMVC的高频面试题
    • 1. SpringMVC的执行流程
    • 2. SpringMVC常见的注解有哪些?

一、SpringMVC的高频面试题

1. SpringMVC的执行流程

前置知识
视图阶段(JSP):

SpringMVC的高频面试题_第1张图片

涉及到的重要组件:

  • 前端控制器(DispatcherServlet):调度中心,前端发送的所有请求都会经过它,它是被Tomcat容器进行初始化的;

  • 处理器映射器(HandlerMapping):在前端控制器中加载;主要作用是保存前端访问路径的信息如与控制器(Controller层)中的HTTP方法信息,存入Map中,如:{key:“/user/findById/1”,value:“类名、方法名等”},根据这些信息找到某一个controller中的方法,这个方法可以理解为处理器;然后给前端控制器返回处理器执行链路(HandlerExecutionChain),也就是该处理器执行会经过哪些地方(执行流程),在此过程中可能还会被拦截器拦截;

  • 处理器适配器(HandlerAdaport):在前端控制器中加载;去执行具体的处理器(Controller内的方法),主要功能是执行该方法(处理器)处理参数(通过策略者模式,解析控制层方法支持哪些参数,转换参数为后端可接收的格式)、处理返回值(策略者模式,解析方法支持返回哪些类型的值,并处理返回值的格式响应给前端),确定执行哪一个具体的方法,这一寻找对应处理器的过程叫做适配;返回ModuleAndView给前端控制器

  • 视图解析器(ViewResolver):在前端控制器中加载;主要功能是解析逻辑视图

前后端分离阶段(接口开发、异步请求):
SpringMVC的高频面试题_第2张图片

面试时的回答:
视图阶段:

  • 用户发送请求到前端控制器Dispatcherservlet;
  • DispatcherServlet收到请求调用HandlerMapping(处理器适配器);
  • HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DIspatcherServlet;
  • DIspatcherServlet调用HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
  • Controller执行完成返回ModuleAndView对象
  • HandlerAdapter将Controller的执行结果ModuleAndView返回给DispatcherServlet
  • DispatcherServlet将ModuleAndView传给ViewResolver(视图解析器)
  • ViewResolver解析后返回具体的视图View
  • DispatcherServlet根据视图进行渲染视图(将模型数据填充到视图中)
  • DispatcherServlet响应用户

前后端分离开发、接口开发阶段

  1. 用户发送请求到前端控制器Dispatcherservlet;
  2. DispatcherServlet收到请求调用HandlerMapping(处理器适配器);
  3. HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DIspatcherServlet;
  4. DIspatcherServlet调用HandlerAdapter;
  5. HandlerAdapter经过适配调用具体的处理器(Handler/Controller);
  6. 方法上添加了@ResponseBody;
  7. 通过HttpMessageConverter来返回结果(转换为JSON并响应给前端);

2. SpringMVC常见的注解有哪些?

注解 说明
@RequestMapping 用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有方法都是以该地址作为父路径
@RequestBody 注解实现接收http请求的json数据,将Json转化为Java对象
@RequestParam 指定请求参数的名称
@PathViriable 从请求路径中获取请求参数:(/user/{id}),传递给方法的形参
@ResponseBody 将Controller内的方法的返回对象转化为Json格式传递给前端
@RequestHeader 获取指定的请求头数据
@RestController @Controller + ResponseBody

你可能感兴趣的:(面试题汇总,java,spring,后端)