博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts1 MVC框架的工作原理
阅读量:7296 次
发布时间:2019-06-30

本文共 1126 字,大约阅读时间需要 3 分钟。

MVC英文及Model-View-Controller,分别是模型(Model),视图(View)和控制(Controller)。MVC模式的目的是实现web系统的职能分工。

        

         View:即用户交互界面,对于web应用程序来说,可以概括为HTML界面。但由于应用的复杂性和规模性,界面的处理就会变得极具挑战。一款软件可能有多个不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包含在视图上的业务流程的处理。通常用JSP来实现,把业务流程都给了模型层。

         Model:主要负责业务流程的处理。是业务实际流程控制的地方,类似于在三层中的B层。实现系统中的业务逻辑,对其他层来说是黑箱操作,接受视图请求中的数据,返回最终的处理结果。通常可以用JavaBean或EJB来实现。   

         Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图来显示,同时它也可以解释用户的输入并将他们映射为模型层的可执行的操作。其实就是一个分发器。

 

         Struts就是一个MVC框架,下面Struts1 是如何实现MVC 的。如下图所示:

         

       这是Struts1的一个分层情况。

       M主要是ActionForm和JavaBean。负责程序的数据收集和业务处理,ActionForm属于Struts的框架的,这里的JavaBean是应用本身的业务逻辑。——这是我在网上找到的一种说法。

       我不是特别赞同这样的划分,我认为Struts1是涉及不到M的。只不过是为了实现调用M做了一些基础性的操作,具体实现还是JavaBean。ActionForm其实可以不作为MVC中的任何一层。

       V层主要是Jsp。主要用于动态页面的显示,Struts本身是没有V层的,作为一个框架只是一个大体结构。这个V层是由开发人员补全的。

       C层是Struts的主要部分,包含了Struts框架本身的很多大部分内容,有:

                 struts-config.Xml      Struts框架自身的配置文件,包含了很多配置信息。

                 ActionServlet            Struts框架核心控制类(替代ervlet实现的抽象物)。

                 RequestProcessor    配合ActionServlet完成截取URL功能。

                 ActionForward         

                 ActionMapping

                                          ……   ……

       Struts通过内部对象及配置文件的协同工作,完成了对页面和Action灵活控制。从而实现Model和View的分离,降低他们之间的耦合程度。

                

       Struts的执行流程如下图所示: 

             通过上述时序图对Struts1的工作流程描述,大家应该对Struts1 是如何实现MVC的应该有了一个大概的了解。

转载地址:http://yqgjm.baihongyu.com/

你可能感兴趣的文章
编写Linux内核模块——第一部分:前言
查看>>
python学习笔记 - StringIO以及BytesIO
查看>>
消息称微软计划收购GitHub,估值超50亿美元
查看>>
Netflix Play API:我们为什么构建了一个演进式架构?
查看>>
知乎推荐页Ranking构建历程和经验分享
查看>>
Web性能API——帮你分析Web前端性能
查看>>
Swift 4正式发布,新功能概览
查看>>
谈谈基于机器学习的编程到底比传统编程强在哪里?
查看>>
持续演进,克服“REST缺乏”
查看>>
中国互联网公司开源项目调研报告
查看>>
Prettier 1.15代码格式化工具新增Angular和Vue.js支持
查看>>
7道常见的数据分析面试题
查看>>
管理微服务中的数据
查看>>
Oracle将NetBeans交给了Apache基金会
查看>>
新JEP将简化Java类型变异
查看>>
象SaaS一样用亚马逊Kinesis Analytics做大数据分析
查看>>
TSC的分歧导致Node.js分支
查看>>
作者问答:解密硅谷
查看>>
苹果如何使用神经网络在点云中做对象检测
查看>>
比特币寒冬中,你更应该关注企业区块链!
查看>>