一,什么是框架?  所谓框架就是提供了一组统一的接口和编程方式的可以重用组件,同时我们可以在框架中扩充我们自己的特定逻辑。

二,MVC设计模式

将应用程序分为3个部分:模型 Model,视图View,控制器Controller;

模型组件:负责业务逻辑;   模型包含应用程序的核心功能。模型封装了应用程序的状态。有时它包含的唯一功能就是状态。它对视图或控制器一无所知。

视图组件:负责表示业务范围的视图;   视图提供模型的表示。它是应用程序的 外观。视图可以访问模型的读方法,但不能访问写方法。此外,它对控制器一无所知。当更改模型时,视图应得到通知。

控制器组件:负责控制用户输入的流和状态;   控制器对用户的输入作出反应。它创建并设置模型。

Struts,它是使用 servlet 和 JavaServer Pages 技术的一种MVC 实现;  Struts,Apache组织的一个项目,MVC 的一种开放源码实现;

三,什么是Struts框架  Struts 是一组相互协作的类、servlet 和 JSP 标记组成的一个可重用的 MVC 2 设计。  这个定义表示 Struts 是一个框架,而不是一个库,但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。

四,Struts 概览
1,Client browser(客户浏览器)    来自客户浏览器的每个 HTTP 请求创建一个事件。Web 容器将用一个 HTTP 响应作出响应。
2,Controller(控制器)    控制器接收来自浏览器的请求,并决定将这个请求发往何处。

就 Struts 而言,控制器是以 servlet 实现的一个命令设计模式。 struts-config.xml 文件配置控制器命令。
3,业务逻辑    业务逻辑更新模型的状态,并帮助控制应用程序的流程。

就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。
4,Model(模型)的状态    模型表示应用程序的状态。业务对象更新应用程序的状态。

ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级。    JSP 文件使用 JSP 标记读取来自 ActionForm bean 的信息。
5,View(视图)    视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 —— 只有标记。

标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。

五, Struts中的Controller(控制器)  命令设计模式的实现:   Struts 的控制器将事件(事件通常是 HTTP post)映射到类的一个 servlet.
ActionServlet (Command) 创建并使用 Action 、 ActionForm 和 ActionForward .   通过struts-config.xml 文件配置该 Command.从而扩展 Action 和 ActionForm 来解决特定的问题。   可以通过扩展 ActionServlet 来添加 Command 功能。

在Struts框架中控制器组件由三个部分构成:

1,消息控制模块;    用户所有的提交请求都发往消息控制模块,在由消息总线模块根据视图映射模块找到消息处理模块来执行处理逻辑。

消息控制模块接收所有用户的请求,并根据请求视图找到处理。    Strtus中通过ActionServlet和RequestProcessor类来完成。

2,消息处理模块;    该模块执行该消息的逻辑处理,因此通常由用户扩展实现。    Struts中通过Action类来实现。

3,视图映射模块;    控制器逻辑和视图逻辑之间的结合是通过配置模块和配置文件建立其的链接。    Struts中配置模块通过ModuleConfig类来完成,而配置文件由struts-config.xml文件提供。 

六,Struts中的View(视图)  视图组件通过JSP组件实现的。Struts框架对视图组件进行了扩展和封装。

Struts对视图的扩展提供了一组扩展服务器标签用来提供视图显示以及传递数据到处理缓冲,而处理缓冲由ActionForm的扩展类来实现。

Struts框架利用ActionForm Bean来实现视图与控制器之间的数据的交互,维持会话级或请求级的模型的状态。

服务器标签主要包括:   Html视图标签;   Logic逻辑流程控制标签;   Bean数据缓冲读取标签;

七,Struts中的Model(模型)

1,Struts框架中并没有定义特定的模型组件,而是希望由用户自己决定选择合理的模型组件。

J2EE中可用的模型组件包括:    JavaBean 用户定义组件;    EJB 组件,由EJB容器实现组件;    JDO 未来J2EE数据访问模型;    一些扩展框架如:Hibernate;

2,模型中状态的级别   会话级或请求级:ActionForm bean来维持 ;   持久级:模型组件来维持;

Struts22222的更多相关文章

随机推荐

  1. leetcode-91-解码方法(动态规划和递归两种解法)

    题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...

  2. 何在不联网的情况下ping通主机与虚拟机

    选择NAT模式,VM对windows选择ping操作时选择VMnet8的IP地址.

  3. [BZOJ 5155][Tjoi2014]电源插排

    传送门 网上大部分题解都写得是动态开点线段树,然而像\(MiEcoku\)这么懒惰的显然不会去写线段树... \(\color{green}{solution}\) 我们考虑来点骚操作. 线段树维护的 ...

  4. 【杂题】[LibreOJ 2541] 【PKUWC2018】猎人杀【生成函数】【概率与期望】

    Description 猎人杀是一款风靡一时的游戏"狼人杀"的民间版本,他的规则是这样的: 一开始有 n个猎人,第 i 个猎人有仇恨度 wi.每个猎人只有一个固定的技能:死亡后必须 ...

  5. 问题 C: 调酒壶里的酸奶 广搜或深搜+记忆化搜索

    问题 C: 调酒壶里的酸奶 时间限制: 1 Sec  内存限制: 128 MB提交: 284  解决: 97[提交] [状态] [命题人:外部导入] 题目描述 最近小w学了一手调酒的技巧,这么帅的操作 ...

  6. 【性能测试】:关于Sockets协议的脚本的开发

    一,关于Sockets协议的脚本,首先对报文的解析是一个关键, 报文的解析一般对着接口文档,弄清楚每个字段代表什么意思,如下一段报文,放在data.ws中 "\x00\x00\x01\x5C ...

  7. (六)Audio子系统之AudioRecord.release

      在上一篇文章<(五)Audio子系统之AudioRecord.stop>中已经介绍了AudioRecord如何暂停录制,接下来,继续分析AudioRecord方法中的release的实 ...

  8. Mac 10.12安装PDF浏览工具Foxit Reader

    说明:永久没费的跨平台PDF浏览工具. 下载: (链接: https://pan.baidu.com/s/1pLEAoXH密码: is5j)

  9. Mac下包管理平台homebrew的使用

    一.安装 参考:http://www.cnblogs.com/EasonJim/p/6287098.html 二.使用 假设我要安装node,命令如下: 安装软件 brew install node ...

  10. Html5与本地App资料整理分析

    最近开发了一个小的手机网站,重新了解了本地应用,html5,混合应用,webApp等概念,整理下相关的资料,略带自己的思考 用户固有的使用习惯 在<2012年度 HTML5状况及发展形势报告.p ...