Java-SpringMVC

一、SpringMVC简介

1、什么是MVC

MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分

M:Model,模型层,指工程中的JavaBean,作用是处理数据

JavaBean分为两类:

  • 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等

  • 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。

V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据

C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器

2、MVC的工作流程:

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

3、什么是SpringMVC

SpringMVC是Spring的一个后续产品,是Spring的一个子项目

SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案

注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet

4、SpringMVC的特点

  • Spring 家族原生产品,与 IOC 容器等基础设施无缝对接

  • 基于原生的Servlet ,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理

  • 表述层各细分领域需要解决的问题全方位覆盖 ,提供全面解决方案

  • 代码清新简洁,大幅度提升开发效率

  • 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可

  • 性能卓著,尤其适合现代大型、超大型互联网项目要

5、SpringMvc作用:

  • SpringMvc完成了客户端与服务器端的数据传输

6.SpringMvc的组成

  • DispatcherServlet(前端控制器):用于指定客户端请求的拦截策略

  • HandlerMapping(控制器映射器):用于查找并返回请求的控制器映射名

  • HandlerAdaptor(控制器适配器):用于查找并返回映射名对应的控制器处理类名

  • ModelandView(视图对象模型):用于封装数据

  • ViewReslover(视图解析器):用于解析数据并渲染视图

7.SpringMvc的工作流程

  • 用户发送请求 至 前端控制器(DispatcherServlet); 提示:DispatcherServlet的作用:接收请求,调用其它组件处理请求,响应结果,相当于转发器、中央处理器,是整个流程控制的中心

  • 前端控制器(DispatcherServlet)收到请求后调用处理器映射器(HandlerMapping) 处理器映射器(HandlerMapping)找到具体的Controller(可以根据xml配置、注解进行查找),并将Controller返回给DispatcherServlet;

  • 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。处理器适配器经过适配调用具体的Controller;(Controller--> service --> Dao --> 数据库) Controller执行完成后返回ModelAndView, 提示:Model(模型数据,即Controller处理的结果,Map) View(逻辑视图名,即负责展示结果的JSP页面的名字) 处理器适配器(HandlerAdapter)将controller执行的结果(ModelAndView)返回给前端控制器(DispatcherServlet);

  • 前端控制器(DispatcherServlet)将执行的结果(ModelAndView)传给视图解析器(ViewReslover) 视图解析器(ViewReslover)根据View(逻辑视图名)解析后返回具体JSP页面

  • 前端控制器(DispatcherServlet)根据Model对View进行渲染(即将模型数据填充至视图中); 前端控制器(DispatcherServlet)将填充了数据的网页响应给用户

相关推荐
Via_Neo4 小时前
判断字符串前缀(26年蓝桥杯JAVA B组)
java·职场和发展·蓝桥杯
XiYang-DING4 小时前
【Java】从源码深入理解HashMap和TreeMap
java·开发语言
:1214 小时前
Cookie
servlet
若水不如远方4 小时前
一文讲透单点登录原理(SSO):从同域共享到跨域票据
java·后端
不懂的浪漫4 小时前
mqtt-plus 架构解析(七):动态订阅与重连恢复,为什么能走同一条协调路径
java·物联网·mqtt·架构
无巧不成书02184 小时前
Unicode编码机制全解析:从核心原理到Java 实战
java·开发语言·java字符编码·unicode 15.1码点
mu_guang_4 小时前
计算机体系结构3-cache一致性和内存一致性的区别
java·开发语言·计算机体系结构
海兰4 小时前
使用 Spring AI 打造企业级 RAG 知识库第一部分:核心基础
java·人工智能·spring
恼书:-(空寄4 小时前
责任链模式实现流程动态编排
java·责任链模式
星原望野4 小时前
java:volatile关键字的作用
java·开发语言·volatile