SpringMVC的高频面试题

一、SpringMVC的高频面试题

1. SpringMVC的执行流程

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

在这里插入图片描述

涉及到的重要组件:

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

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

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

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

前后端分离阶段(接口开发、异步请求):
在这里插入图片描述

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

  • 用户发送请求到前端控制器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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值