• 结合ssh谈MVC架构模式


    结合ssh谈MVC架构模式 

    2020.5.15

    这学期在课程学习中我们接触到了ssh的开发框架,这个框架基于模型开发,由于目前MVC的开发模型渐成主流,所以我们来基于ssh深入了解一下MVC模型,首先我们来科普一下什么是ssh,什么是MVC?

    ssh是一种框架,它指的是struts+spring+hibernate的集成框架,是以前一种比较流行的web应用程序开源框架,他在职责上分为四层:表示层,业务逻辑层,数据持久层和域模块层,这个框架可以帮助开发人员在相对较短的时间内搭建一个结构清晰,可复用性好,维护方便的web应用程序。在这个框架中,Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。

     

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
      通常模型对象负责在数据库中存取数据。

    View(视图)是应用程序中处理数据显示的部分。
      通常视图是依据模型数据创建的。

    Controller(控制器)是应用程序中处理用户交互的部分。
      通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

     

    在了解了ssh和MVC之后,我们结合实例来聊一下MVC的好处。

    在以往的Java编程中,我们其实经常用到MVC的架构模型,例如我们的JSP+servlet+JavaBean就是最典型的最简单的MVC模型,jsp作为‘v’,servlet作为‘c’,JavaBean作为‘m’,我们以一个小的简单得家庭记账本为例,对MVC进行分析。

    首先我们看记账本的结构:

     

    这里面的结构从上到下分别为:bean层对应MVC的control层,dao层,数据库管理,对应MVC的model层,servlet层以及jsp展示层,对应MVC的view功能,我们已添加一个资金流动为例

     

    根据这个可以知道,这里面的数据会提交到Add的action中,对应上图的AddServlet,这个路径是由下面这句话决定的,因为WebServlet中写的是“/Add”,所以在跳转时action 的值要写“/Add”,这是servlet的一个用法,提交请求发送之后,这些数据与这个页面就没有联系了,完全交由下个页面处理,这便做到了客户操作与系统操作的分离,客户只需要看着屏幕去操作自己想要的步骤,而对于这些步骤是如何完成的客户是不需要知道的。

     

    当数据提交到servlet层之后,数据在这里加工,比如存储到数据对象中,这一层中它只需要知道数据该如何处理,根据提交的请求不同,处理的方法不同,例如这里提交的是add请求,即要将传递的数据进行存储,此时,因为是对客户类进行存储,所以将这些数据存储到bean的对象中,调用bean,将其封装,至此,servlet获取数据,将其封装到bean层,再通过dao层调用对象,执行其具体的功能。在这个过程中,控制层完成了对数据的封装,加工,在此次之行中完美执行了MVC的架构概念:低耦合。

    那这样的架构到底有哪些好处?

    上面刚提到的:低耦合。

    因为相互之间的交互减少了,层与层之间功能明确,界限明确,所以极大的降低了耦合度可维护性高因为层与层之间耦合度降低,在和维护的时候,可以在不改变其他组件的情况下对某些部件进行更改。部署快因为有了明确的部署结构,所以在部署的时候可以很快地将项目结构搭建完成,使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

    可与其他框架完美结合就像开始提到的SSH框架就是利用了MVC模型的特性进行开发,SSH框架集,是现在大多数软件设计过程中都会使用的一种框架集。而这种框架是基于MVC的开发,且MVC模式已经成为现代J2EE开发中的一种常用模式,且受到越来越多JSP、PHP等开发者的欢迎。

  • 相关阅读:
    C# 串口通信总结
    客户端下载文件和服务器端下载文件总结
    Android 上传图片到 Asp.Net 服务器的问题
    iOS内存泄漏自动检测工具PLeakSniffer
    让iOS开发变得更有效率-分类、工具类
    分分钟解决iOS开发中App启动广告的功能
    响应者链及相关机制总结
    stackoverflow上关于iOS的票数最多(最常见)的15个问题
    iOS 开发之 ReactiveCocoa(进阶)
    iOS 开发之 ReactiveCocoa(基础)
  • 原文地址:https://www.cnblogs.com/daisy99lijing/p/13121472.html
Copyright © 2020-2023  润新知