码农小汪-SPringMVC-基本的理解MVC 降低耦合性~依赖性

本文主要是介绍码农小汪-SPringMVC-基本的理解MVC 降低耦合性~依赖性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标准 MVC 模型概述

MVC模型:是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离

这里写图片描述

  1. Model(模型):
    数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean 组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
  2. View(视图):
    负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
  3. Controller(控制器):
    接收用户请求,委托给模型进行处理(状态改变) ,处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。

在标准的 MVC 中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图),但在 Web 开发中模型是无法主动推给视图(无法主动更新用户界面),因为在 Web 开发是
请求-响应模型。

Web MVC 概述

这里写图片描述

在 Web MVC 模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模型)。

在JavaEE世界里,它可以认为就是Web MVC模型
这里写图片描述

我们来看看以前的写法吧,这个是看大神写的,其实哈,我们学习过Struct2啦,看这个感觉就是有非常多的缺点的,所以我们还是的必须的看哈,才知道怎么去解决这些问题的!
这里写图片描述

这里写图片描述

这里写图片描述

可以看出,视图和模型分离了,控制逻辑和展示逻辑分离了!
之前的我刚开始学习jsp的时候也像这么的做过这些事情,简直是渣的不行啦~~那时候还觉得好厉害啊~ 我也是晕啦!

  • 这些有啥子缺点呢~~

    1. 选择下一个视图,严重依赖 Servlet API,这样很难或基本不可能更换视图
    2. 给视图传输要展示的模型数据,使用 Servlet API,更换视图技术也要一起更换,很麻烦
    3. 此处模型使用 JavaBean, 可能造成 JavaBean 组件类很庞大, 一般现在项目都是采用三层架构, 而不采用 JavaBean。(这个就是我们说的Dao,Service…Entity)
      这里写图片描述

    4. 现在被绑定在 JSP,很难更换视图,比如 Velocity、FreeMarker;比如我要支持 Excel、PDF 视图等等

    5. Front Controller + Application Controller + Page Controller + Context.即,前端控制器+应用控制器+页面控制器(也有称其为动作)+上下文,也是 Web MVC,只是责任更加明确
      这里写图片描述
      这里写图片描述

干净的 web 表现层:

模型和视图的分离;
控制器中的控制逻辑与功能处理分离(收集并封装参数到模型对象、业务对象调用) ;
控制器中的视图选择与具体视图技术分离。

轻薄的 web 表现层:

做的事情越少越好,薄薄的,不应该包含无关代码;
只负责收集并组织参数到模型对象,启动业务对象的调用;
控制器只返回逻辑视图名并由相应的应用控制器来选择具体使用的视图策略;
尽量少使用框架特定 API,保证容易测试

看到这个谢啦这么多的文字,确实很深入的理解啦~很不错哦

这篇关于码农小汪-SPringMVC-基本的理解MVC 降低耦合性~依赖性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091641

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过