SpringMVC面试题简述

1、如何理解Spring中的MVC设计?

  • MVC是一种分层架构设计思想,是Model,View,Controller的缩写,是为了将复杂问题简单化而提出的一种分而治之的设计套路,基于这种套路来提高代码的可维护性可扩展性。Spring MVC 仅仅是Spring 框架中WEB模块基于MVC设计思想的落地实现,简化了web请求和响应的处理过程。
  • 流程图:
    在这里插入图片描述
  1. 前端请求经过 过滤器 筛选满足程序要求的请求
  2. 解析请求,抽象路径经过DispatcherScervlet (前端控制器,解析抽象路径,作为统一访问点,进行全局的流程控制)
  3. 被解析的抽象路径在 HandlerMapping 中映射为HandlerExecutionChain对象(包含一个Handler处理器对象、多个HandlerInterceptor拦截器)
  4. DispatcherScervlet 调用HandlerMapping方法,由抽象路径得到了业务对象,对应的业务方法,并执行方法 (反射机制)
  5. 方法执行后,返回响应:
    1. 前后端分离:执行结束后原路返回到 DispatcherScervlet
    2. 前后端不分离:执行后找到 对应的 网页资源(视图解析器和视图) 回到 DispatcherScervlet (目前大多数都是前后端分离项目,所以了解即可)
  6. DispatcherScervlet 发出响应给浏览器 (过滤器过滤)

2、Spring MVC中的异常是如何处理的?

  • Spring工程中Web模块可以基于@RestControllerAdvice注解定义全局异常处理类,然后借助全局异常处理规范进行异常处理(大多数处理方法)
  • 局部异常处理方法(业务类内部抛出,不建议)忌控制器,持久层抛出异常
    大概过程如图所示:抛异常,由DispatcherScervlet 统一处理异常
    在这里插入图片描述

3、说几个Spring中用于定义组件的注解?

  • @Component :通用注解在不满足其他定义组件注解时使用
  • @Service : 作用于 业务逻辑层注解
  • @Controller : 作用于 控制器层注解
  • @Configuration :作用于 配置类注解
  • @Repository : 作用于 持久层注解
  • @Bean : 作用于方法上,产生一个对象,交由Spring容器管理

4、说几个Spring MVC中描述方法的注解?

  1. @RequestMapping // 注解映射通用请求 //参数如果在请求体中需加RequestParam或RequestBody
  2. @PostMapping // 注解映射POST请求 数据在请求体内
  3. @GetMapping // 注解映射GET请求 数据在请求头上
  4. @DeleteMapping // 移除某个资源 //数据在请求头上
  5. @PutMapping // 执行大规模的替换操作 //数据在请求体内
  6. @PatchMapping // 对资源数据打补丁或局部更新
  7. @ResponseBody // 将返回值转为json格式的数据响应

5、说几个Spring MVC中描述方法参数的注解?

  1. @RequestParam //接收的参数是来自HTTP请求体或请求url的QueryString中,用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容
  2. @PathVariable 接收请求路径中占位符的值 RESTful风格
  3. @RequestBody //接收的参数是来自requestBody中,即请求体,用来处理json格式
  4. @RequestPart //用在multipart/form-data表单提交请求的方法上。
  5. @Vaild/ @Vaildated 让参数进行验证

6、说说Spring MVC中的拦截器?

  • Spring框架中定义的拦截器属于Spring MVC模块执行链中的一个对象,其类型为HandlerInterceptor,基于这个类型的拦截器可以对后端@Controller注解描述的对象进行请求和响应的拦截。用于进行一些预处理操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值