【Java八股文总结】之Spring MVC
创始人
2024-02-04 16:49:11

文章目录

  • Spring MVC
      • 1、Spring MVC介绍
      • 2、Spring MVC的核心组件
      • 3、Spring MVC工作流程
      • 4、Spring MVC Restful风格的接口的流程?
      • 5、Spring MVC请求参数的种类
        • 1. 请求参数(传递json数据)
        • 2. 日期类型参数传递
      • 6、Spring MVC开发中用到的工具
      • 7、Spring MVC中的异常处理器
      • 8、拦截器
        • Q:拦截器与过滤器区别
        • Q:多拦截器的执行顺序
      • 9、Spring MVC注解
        • Q:@RequestBody、@RequestParam以及@PathVariable区别

Spring MVC

1、Spring MVC介绍

Spring MVC和Servlet技术类似,均属于 web层开发技术(表现层框架)
Spring MVC是一种基于Java实现MVC模型的轻量化Web框架,相较于Servlet,使用更加简单、灵活性更强。

2、Spring MVC的核心组件

  • DispatcherServlet前置控制器,是整个流程控制的核心,控制其他组件的执行,进行统一调度,降低组件之间的耦合性,相当于总指挥。
  • Handler处理器,完成具体的业务逻辑,相当于 Servlet 或 Action。
  • HandlerMapping:DispatcherServlet接收到请求之后,通过HandlerMapping将不同的请求映射到不同的Handler。
  • HandlerInterceptor处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。
  • HandlerExecutionChain:处理器执行链,包括两部分内容:Handler 和 HandlerInterceptor(系统会有一个默认的 HandlerInterceptor,如果需要额外设置拦截,可以添加拦截器)。
  • HandlerAdapter处理器适配器,Handler 执行业务方法之前,需要进行一系列的操作,包括表单数据的验证、数据类型的转换、将表单数据封装到 JavaBean 等,这些操作都是由 HandlerApater 来完成,开发者只需将注意力集中业务逻辑的处理上,DispatcherServlet 通过 HandlerAdapter 执行不同的 Handler。
  • ModelAndView:装载了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet。
  • ViewResolver视图解析器,DispatcheServlet 通过它将逻辑视图解析为物理视图,最终将渲染结果响应给客户端。

3、Spring MVC工作流程

在这里插入图片描述

  1. 客户端向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。
  2. DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知)。
  3. DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controller。
  4. HandlerAdapter处理器适配器去执行Controller并得到 ModelAndView(数据和视图),并层层返回给DispatcherServlet。
  5. DispatcherServlet将ModelAndView交给ViewReslover视图解析器解析,然后返回真正的视图。
  6. DispatcherServlet将模型数据填充到视图中。
  7. DispatcherServlet将结果响应给客户端。

4、Spring MVC Restful风格的接口的流程?

Restful接口,响应格式是json,这就用到了一个常用注解:@ResponseBody 。加入了这个注解后,整体的流程上和使用 ModelAndView 大体上相同,但是细节上有一些不同:
在这里插入图片描述

  1. 客户端向服务端发送一次请求,这个请求会先到前端控制器 DispatcherServlet 。
  2. DispatcherServlet 接收到请求后会调用 HandlerMapping 处理器映射器。由此得知,该请求该由哪个 Controller 来处理。
  3. DispatcherServlet 调用 HandlerAdapter 处理器适配器,告诉处理器适配器应该要去执行哪个 Controller。
  4. Controller被封装成了ServletInvocableHandlerMethod,HandlerAdapter处理器适配器去执行invokeAndHandle方法,完成对 Controller的请求处理
  5. HandlerAdapter执行完对Controller的请求,会调用 HandlerMethodReturnValueHandler 去处理返回值,主要的过程:
    ①调用RequestResponseBodyMethodProcessor,创建 ServletServerHttpResponse(Spring 对原生 ServerHttpResponse 的 封装)实例。
    ②使用 HttpMessageConverter 的 write 方法,将返回值写入 ServletServerHttpResponse 的 OutputStream 输出流中。
    ③在写入的过程中,会使用 JsonGenerator(默认使用 Jackson 框架)对 返回值进行 Json 序列化。
  6. 执行完请求后,返回的ModealAndView为null,ServletServerHttpResponse里也已经写入了响应,所以不用关心View的处理。

5、Spring MVC请求参数的种类

在这里插入图片描述
补充:

1. 请求参数(传递json数据)

json数组、json对象(POJO)、json数组(POJO)

2. 日期类型参数传递

日期类型数据基于不同系统格式也不尽相同,接收形参时,根据不同的日期格式设置不同的接收方式。

6、Spring MVC开发中用到的工具

PostMan(可以用来进行接口的测试)

7、Spring MVC中的异常处理器

出现异常现象的常见位置与常见诱因如下:框架内部抛出的异常(因使用不合规导致)、数据层抛出的异常(因外部服务器故障导致,如服务器访问超时)、业务层抛出的异常(因业务逻辑书写错误导致,如遍历业务书写操作,导致索引异常等)、表现层抛出的异常(因数据收集、校验等规则导致,如不匹配的数据类型间导致异常)、工具类抛出的异常(因工具类书写不严谨不够健壮导致,如必要释放的连接长期未释放等)
解决思路:AOP思想(避免再每个方法中单独书写)。异常处理器,集中统一的处理项目中出现的异常。

8、拦截器

拦截器(Interceptor)是一种动态拦截方法调用的机制。主要在指定的方法调用前后执行预先设定后的的代码,阻止原始方法的执行。

Q:拦截器与过滤器区别

  • 归属不同:过滤器属于Servlet技术;拦截器属于SpringMVC技术。
  • 拦截内容不同:过滤器对所有访问进行增强;拦截器仅针对SpringMVC的访问进行增强。

Q:多拦截器的执行顺序

在这里插入图片描述
拦截器链的运行顺序:preHandle(与配置顺序相同,必定运行)、postHandle(与配置顺序相反,可能不运行)、afterCompletion(与配置顺序相反,可能不运行)。

9、Spring MVC注解

在这里插入图片描述

Q:@RequestBody、@RequestParam以及@PathVariable区别

  • 区别
    ① @RequestParam用于接收url地址传参或表单传参;
    ② @RequestBody用于接收json数据(application/json);
    ③ @PathVariable用于接收路径参数,使用{参数名称}描述路径参数应用。
  • 应用
    ① 后期开发中,发送请求参数超过1个时,以发送json格式数据为主,@RequestBody应用较广;
    ② 如果发送非json格式数据,选用@RequestParam接收请求参数;
    ③ 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...