• SpringMVC


    简介

    介绍

    Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能

    MVC是什么

    MVC是一种软件架构思想,把软件按照模型,视图,控制器来划分
    Model:模型层,指工程中的JavaBean,用来处理数据

    在这里插入图片描述

     在这里插入图片描述

     

    流程

    • 用户通过视图层发送请求到服务器,在服务器中请求被Controller接收
    • Controller调用相应的Model层处理请求,处理完毕后结果返回到Controller
    • Controller再根据请求处理的结果找到对应的View视图,渲染数据后最终响应给浏览器

    在这里插入图片描述

     

    Spring MVC实现原理

    核心组件

    • DispatcherServlet:前置控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个Spring MVC的核心模块
    • Handler:处理器,完成具体的业务逻辑,相当于Servlet
    • HandlerMapping:DispatcherServlet是通过 HandlerMapping把请求映射到不同的Handler
    • HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现该接口完成
    • HandlerExecutionChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果有额外拦截处理,可以添加拦截器进行设置)
    • HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作包括表单的数据验证、数据类型转换、把表单数据封装到POJO等,这些一系列的操作都是由HandlerAdapter完成,DispatcherServlet通过HandlerAdapter执行不同的Handler
    • ModelAndView:封装了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet
    • ViewResolver:视图解析器,DispatcherServlet通过它把逻辑视图解析为物理视图,最终把渲染的结果响应给客户端
      在这里插入图片描述

     

    工作流程

    1. 客户端请求被DispatcherServlet接收
    2. 根据HandlerMapping映射到Handler
    3. 生成Handler和HandlerInterceptor
    4. Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
    5. DispatcherServlet通过HandlerAdapter调用Handler的方法完成业务逻辑处理
    6. 返回一个ModelAndView对象给DispatcherServlet
    7. DispatcherServlet把获取的ModelAndView对象传给ViewResolver视图解析器,把逻辑视图解析成物理视图
    8. ViewResolver返回一个View进行视图渲染(把模型填充到视图中)
    9. DispatcherServlet把渲染后的视图响应给客户端
       

    常用注解

    @RequestMapping

    Spring MVC 通过 @RequestMapping 注解将 URL 请求与业务方法进行映射,在控制器的类定义处以及方法定义处都可以添加 @RequestMapping,在类定义处添加相当于多了一层访问路径。

    @RequestBody

    用于获取请求体内容。 直接使用得到是 key=value&key=value...结构的数据。 get 请求方式不适用。

    @Controller

    使用Controller注解之后,在方法上可以通过return的jsp或者html页面的名字,通过视图解析器,就能跳转到指定页面

    如果没有Controller注解,这个类中的方法是不会被请求过去的

    所对应的层也是controller层,表现层

    @ResponseBody

    如果方法需要返回JSON或者XML或者自定义内容到页面中去,就需要再方法上加上ResponseBody,这个时候,返回的数据就会不被视图解析器所解析

    @RestController  

    相当于Controller  和  ResponseBody 一起用   此时类仅被放到容器中,不会被视图解析器解析

    @RequestParam

    把请求中指定名称的参数给控制器中的形参赋值。

    @PathVariable

    用于绑定 url 中的占位符。 例如:请求 url 中 /delete/{id}, 这个{id}就是 url 占位符。

  • 相关阅读:
    神经网络模型的工作原理,神经网络模型应用实例
    【计网】(一) 集线器、网桥、交换机、路由器等概念
    数据库--------代数运算和关系运算
    QT5.12.1+OpenCV(含Contrib)环境搭建
    mmpretrain学习笔记
    【图像融合】基于RP、CVT、DTCWT、NSCT-SR+DWT-SR+拉普拉斯金字塔算法-SR等实现MRT图像融合附matlab源码
    POJ3259虫洞题解
    【NeurIPS】解决离线强化学习中的互模拟缺陷,FaceChain团队联合出品
    欧科云链:角力Web3.0,香港如何为合规设线?
    【安全】网络安全态势感知
  • 原文地址:https://blog.csdn.net/qq_43009048/article/details/128031985