Struts1 MVC框架的工作原理
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框架的工作原理的更多相关文章
- php面试专题---21、MVC框架基本工作原理考察点
php面试专题---21.MVC框架基本工作原理考察点 一.总结 一句话总结: 会的东西快速过,不要浪费时间,生命有限,都是一些很简单的东西. 1.mvc框架单一入口的 优势 是什么? 可以进行统一的 ...
- PHP面试系列 之框架(一)---- MVC框架基本工作原理
题:谈谈你对MVC的认识,介绍集中目前比较流行的MVC框架 考点: (1)MVC工作原理 (2)常见MVC框架 延伸: (1)单一入口的工作原理 (2)模板引擎的理解 (1)MVC工作原理 Model ...
- 阅读了这三篇文章,你也就基本理解了ASP.NET Core MVC框架的工作原理
<200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有深刻的理解,知道了ASP.NET Core框架针对每个请求的处理流程.在过 ...
- 《HiWind企业快速开发框架实战》(1)框架的工作原理
<HiWind企业快速开发框架实战>(1)框架的工作原理 1.HiWind架构 HiWind的基本架构如下: 持久层部分:同时为框架本身的业务服务,也为开发人员的自定义业务服务. 逻辑层: ...
- ssh框架的工作原理
struts2的工作原理 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClea ...
- mvc和iis工作原理
学习IIS & MVC的运行原理 我一直疑惑于以下问题,从客户端发出一个请求,请求到达服务器端是怎样跟iis衔接起来的,而iis又是怎样读取我发布的代码的,并返回服务器上的文件.这其中是怎样的 ...
- SSH三大框架的工作原理及流程
Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...
- [Java] SSH框架笔记_SSH三大框架的工作原理及流程
Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...
- SSH三大框架的工作原理以及流程
Hibernate工作原理以及为什么要用 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...
随机推荐
- 理解static关键字
1.static 变量是类变量,通过类名引用. 2.static 方法不需要针对某个对象进行操作,其运行结果仅仅与输入的参数有关,调用时直接类名引用. 3.static 方法不能对非静态成员进行访问. ...
- rm -rf / – Deletes Everything!
https://www.howtogeek.com/125157/8-deadly-commands-you-should-never-run-on-linux/
- caioj1271&&poj3071: 概率期望值2:足球
见到网上的大佬们都用了位运算..表示看不懂就自己想了,还挺好想的(然而我不会告诉你我因为p的数组问题卡了半小时顺便D了ZZZ大佬的数据) DP方程(伪)就是:第t轮第i个队晋级的可能=第t-1轮第i个 ...
- 如何制作.a静态库?合成多架构静态库?
08_01静态库 08_02制作静态库 .a 1.新建项目com+shift+n:选择Framework&Library. 2.下一步. 项目名不能为中文. 3.编写代码之后.用真机运行.会自 ...
- I.MX6 wpa_cli 使用
/*********************************************************************** * I.MX6 wpa_cli 使用 * 说明: * ...
- Excel:一列是源值随机加减某随机值,变为另一列的数值
1) 产生x1与x2之间整数随机数 =RANDBETWEEN(x1,x2),x1和x2为随机数区间 如果需要小数,可以乘以小数获得,Eg: =RANDBETWEEN(-5,5)*0.01,表示 -0. ...
- bzoj 4519: [Cqoi2016]不同的最小割【最小割树Gomory–Hu tree】
算法详见:http://www.cnblogs.com/lokiii/p/8191573.html 求出点两两之间的最小割之后,把他们扔到map/set里跑即可 可怕的是map和set跑的时间竟然完全 ...
- mysql 循环批量插入
背景 前几天在MySql上做分页时,看到有博文说使用 limit 0,10 方式分页会有丢数据问题,有人又说不会,于是想自己测试一下.测试时没有数据,便安装了一个MySql,建了张表,在建了个whil ...
- centos安装PHP扩展(bcmath)
Centos下搭完Mysql+Apache+PHP后,发现有些网页打开是空白的.将php.ini里面的参数 error_reporting = E_ALL,display_errors = On,di ...
- flask框架基础入门一
首先:flask是一个基于Werkzeug,Jinja2的一个python的微服务框架. 安装flask框架: pip install flask 一个最小的最简单的flask应用: from fla ...