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

Struts1 MVC框架的工作原理的更多相关文章

  1. php面试专题---21、MVC框架基本工作原理考察点

    php面试专题---21.MVC框架基本工作原理考察点 一.总结 一句话总结: 会的东西快速过,不要浪费时间,生命有限,都是一些很简单的东西. 1.mvc框架单一入口的 优势 是什么? 可以进行统一的 ...

  2. PHP面试系列 之框架(一)---- MVC框架基本工作原理

    题:谈谈你对MVC的认识,介绍集中目前比较流行的MVC框架 考点: (1)MVC工作原理 (2)常见MVC框架 延伸: (1)单一入口的工作原理 (2)模板引擎的理解 (1)MVC工作原理 Model ...

  3. 阅读了这三篇文章,你也就基本理解了ASP.NET Core MVC框架的工作原理

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有深刻的理解,知道了ASP.NET Core框架针对每个请求的处理流程.在过 ...

  4. 《HiWind企业快速开发框架实战》(1)框架的工作原理

    <HiWind企业快速开发框架实战>(1)框架的工作原理 1.HiWind架构 HiWind的基本架构如下: 持久层部分:同时为框架本身的业务服务,也为开发人员的自定义业务服务. 逻辑层: ...

  5. ssh框架的工作原理

    struts2的工作原理 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClea ...

  6. mvc和iis工作原理

    学习IIS & MVC的运行原理 我一直疑惑于以下问题,从客户端发出一个请求,请求到达服务器端是怎样跟iis衔接起来的,而iis又是怎样读取我发布的代码的,并返回服务器上的文件.这其中是怎样的 ...

  7. SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  8. [Java] SSH框架笔记_SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  9. SSH三大框架的工作原理以及流程

    Hibernate工作原理以及为什么要用 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

随机推荐

  1. envoy

    微服务意味着网络更加依赖于服务抽象边界. 随着相互依赖的服务数量日渐增长,系统100%没问题的时间会变少,整个系统经常有部分功能处于降级状态.

  2. H264编码器性能測试

    版本号:0.1.0-beta 作者:石硕 更新:2014-04-13 15:54:08 ======================================================== ...

  3. Oracle 表的创建 及相关參数

    1. 创建表完整语法 CREATE TABLE [schema.]table (column datatype [, column datatype] - ) [TABLESPACE tablespa ...

  4. A - BBQ Easy

    Score : 200 points Problem Statement Snuke is having a barbeque party. At the party, he will make N  ...

  5. centos7下tomcat7 或tomcat8启动超慢原因

    1,找到你的jdk安装的位置 ${JAVA_HOME}/jre/lib/security/java.security 2,vi 打开后找到 securerandom.source=file:/dev/ ...

  6. 网络驱动移植之net_device结构体及其相关的操作函数

    内核源码:Linux-2.6.38.8.tar.bz2 在Linux系统中,网络设备都被抽象为struct net_device结构体.它是网络设备硬件与上层协议之间联系的接口,了解它对编写网络驱动程 ...

  7. javascript正则找script标签, link标签里面的src或者 href属性

    1. [代码]javascript 简单的search    <script(?:(?:\s|.)+?)src=[\"\'](.+?)[\"\'](?!\<)(?:(? ...

  8. 【411】COMP9024 Assignment1 问题汇总

    1. 构建 Makefile 文件后运行错误,undefined reference to 'sqrt' 实际上是没有链接math数学库,所以要 $gcc test.c –lm //-lm就是链接到m ...

  9. Asp.net Mvc 数据库上下文初始化器

    在Asp.net Mvc 和Entity FrameWork程序中,如果数据库不存在,EF默认的行为是新建一个数据库.如果模型类与已有的数据库不匹配的时候,会抛出一个异常. 通过指定数据库上下文对象初 ...

  10. Maven的-pl -am -amd参数学习

    昨天maven的deploy任务需要只选择单个模块并且把它依赖的模块一起打包,第一时间便想到了-pl参数,然后就开始处理,但是因为之前只看了一下命令的介绍,竟然花了近半小时才完全跑通,故记录此文. 假 ...