SpringMVC

在这里插入图片描述

SpringMVC知识

一、SpringMVC流程:

  1. 什么是SpringMVC?

    ​ SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量Web框架,通过把Model、View、Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的及部分,简化开发,减少出错,方便组内开发人员之间的配合。

  2. 啥是MVC设计模式?

    • MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
    • MVC是业务逻辑、数据、显示分离的方法来组织代码
    • MVC主要作用是降低了视图与业务逻辑间的双向耦合
    • MVC不是一种设计模式,MVC是一种架构模式,当然不同的MVC存在差异。

    Model(模型):数据模型,提供要展示的数据,因此包含数据行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)服务层(行为Service).

    **View(视图):**负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

    **Controller(控制器)😗*接收用户请求,委托给模型进行处理,处理完毕把返回的模型数据返回给试图,由试图负责展示。也就是说控制器做了个调度员的工作。

在这里插入图片描述

常见的服务器端MVC框架:Struts、SpringMVC、ASP.NET MVC、Zend Framework、JSF;

**常见的前端MVC框架:**vue、angularjs、react、backbone;

由MVC演化出的另外一些模式:MVP、MVVM…

  1. SpringMVC特点:

    • 轻量级,简单易学,简洁灵活

    • 高效,基于请求响应的MVC框架

    • 与Spring兼容性好,无缝结合

    • 约定优于配置

    • 功能强大:RestFul、数据验证、格式化、本地化、主题等

    • 角色分配清晰:前端控制器(dispatcherServlet)、请求到处理器映射(handlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)

    最重要的是现在用的人很多,使用的公司也比较多

  2. SpringMVC组件:

    • 前端控制器(dispatcherServlet)作用:接收请求,响应结果,相当于转发器,有了DispatcherServlet就减少了其他组件之间的耦合度。
    • 处理器映射器(HandlerMapping):作用:根据其你去的url查找Handler(处理程序)
    • 处理器映射器(HandlerAdapter)作用:按照特定规则去执行Handler(处理程序)
    • 处理器Handler:这个需要我们自己编写哈,数据处理的逻辑代码
    • 视图解析器(ViewResolver):进行视图解析,根据逻辑视图名解析成真正的视图(View)
    • 视图View:View是一个接口,实现类支持不同的View类型
  3. SpringMVC执行流程:

    1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。

      假设:请求的URL为:http://localhost:8080/SpringMVC/hello

      这个URL会被拆分为三部分:

      • http://localhost:8080服务器域名
      • SpringMVC部署在服务器上的Web站点
      • hello表示控制器

      所以:通过分析,用户的请求时:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器

    2. HandlerMapper为处理器映射。DispatcherServlet调用HandlerMapper,HandlerMapper根据请求的url查找自己维护的服务列表信息,在列表信息中找到相应的Handler,如果服务列表中没有找到这个URL的key,则该程序不能处理用户的请求,则返回特定数据,前端控制器接收之后给用户响应404。如果在服务列表中找到了该url的key,则说明请求可以正常执行,将该方法的对象返回给前端控制器。

    3. DispatcherServlet前端控制器将返回的方法进行接收,并交给HandlerAdapter(处理器适配器)执行.

    4. HandlerAdapter根据方法的类型(XML配置文件/注解/其他方法),HandlerAdapter在自己的处理器库中挑选一个最为合适的处理器去执行该方法,当处理器执行该方法时表示业务开始,将会让具体的Controller进行执行,并将执行结果返回给HandlerAdapter,HandlerAdapter将最终的处理结果通过ModelAndView对象进行包裹,返回给DispatcherServlet.

    5. DispatcherServlet调用视图解析器(ViewResolver)对View中的数据进行解析,拼接一个完整的页面路径,前缀/hello后缀

    6. 视图解析器将解析完的数据传给DispatcherServlet

    7. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图进行渲染,将数据与页面进行绑定,最终将视图呈现给用户

    ModeAndView:Model:代表服务器返回的业务员数据;View:服务器端返回的页面的名称

在这里插入图片描述

  1. SpringMVC常用注解:

    • @RequestMapping:用于处理请求url映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。以及衍生的@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
    • @RequestBody:注解实现接收http请求的json数据,将json转换为java对象
    • @ResponseBody:注解实现将controller方法返回对象转化为json对象响应给客户端
    • @RestController注解相当于**@ResponseBody**+@Controller,表示的是表现层,用在类上,一般SpringMVC中的控制器一般要加@Controller注解,如果在以前,前后端不分离,Controller里面的handler(处理程序)返回的是某个页面;但到了现在,比较流行前后端分离,前台服务器可能是vue,也可能是别的前端框架,前端框架和后端交互式通过json来交互的,所以需要在Controller层中的handler要返回json数据给前台,要转换成前台就得用@ResponseBody注解,每个方法基本都加,未免有些程序冗余啊,不如直接在类上加@ResponseBody注解,后来@ResponseBody注解可以和@Controller注解合并成一个@RestController注解。
    • @RequestParam:绑定单个请求参数值
    • @PathVariable:绑定URL模板变量值
  2. SpringMVC转发重定向:

    转发:在返回值前面加“forward”,转发是由服务器端进行的页面跳转

    转发的特点:

    • 地址栏不发生变化,显示的是上一个页面的地址
    • 请求次数:只有1次请求
    • 请求域中数据不会丢失

    重定向:在返回值前面加“redirect”,重定向是客户端浏览器进行的页面跳转

    重定向的特点:

    • 地址栏会发生变化,显示新的地址
    • 请求次数:两次及以上以上
    • 请求域中的数据会丢失,因为是两次请求

在这里插入图片描述

各位加油嗷~~!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值