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的应该有了一个大概的了解。

最新文章

  1. kali更新源
  2. Qt多重继承时的信号与槽
  3. proteus怎么仿真?
  4. iOS开发UI篇—UITableview控件使用小结
  5. javascript效果:手风琴、轮播图、图片滑动
  6. 从零开始学习Mysql的学习记录
  7. 通过 SQL Server 视图访问另一个数据库服务器表的方法
  8. Array和ArrayList互相转换
  9. CI框架3.0关于session的设置改动及存数据库的使用方法
  10. EasyUI基础入门之Parser(解析器)
  11. 【HTML 5或CSS3入门教程】找兼职撰写人才
  12. 教你记住ASP.NET WebForm页面的生命周期
  13. JS 更改表单的提交时间和Input file的样式
  14. JAVA BASE64
  15. Django表单字段汇总
  16. list.remove操作注意点
  17. Java基本类型占用字节数(或 bit数)
  18. Google Protobuf 使用 Java 版
  19. redhat安装docker
  20. robotframe 自定义开发库

热门文章

  1. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) D.Dinner Bet 概率DP+排列组合
  2. jQuery的小例子
  3. 阐述Linux操作系统之rpm五种基本操作
  4. qemu所支持的网卡
  5. WinPE:创建 USB 可引导驱动器
  6. div+css通用兼容性代码整理
  7. vue 基础知识随笔
  8. UVa 1213 Sum of Different Primes (DP)
  9. Ruby自定义打印的字符串
  10. Marching squares 算法 获取轮廓(contour tracing)