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

二,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. Apache环境修改.htaccess文件实现子目录强制HTTPS访问

    如果要在Apache环境下实现子目录强制HTTPS地址访问,该怎么实现呢?在此文章中将与大家一起分享如何在Apache环境下修改.htaccess文件来实现子目录强制HTTPS地址访问. 1.根目录域 ...

  2. python中TAB补全

    tab补全的代码文件tab.py #!/usr/bin/env python # python startup file import sys import readline import rlcom ...

  3. VS 代码自动对齐快捷键

    全部代码代码自动对齐快捷键为 Ctrl + a(按后可松松手) + k(按后可松松手) + f

  4. follow up2-20190426

    406. Minimum Size Subarray 同向双指针 https://www.lintcode.com/problem/minimum-size-subarray-sum/descript ...

  5. mvvm小论(暂记)

    广州-PC26(34627) 2:09:44 在android 线程最后用 handler = new Handler();            updateThread = new Runnabl ...

  6. mono for android 第三课--页面布局(转)

    对于C#程序员来说布局不是什么难事,可是对于我这个新手在mono for android 中布局还是有点小纠结的,不会没关系.慢慢学习.好吧我们开始简单的布局.在之前我们拖拽的控件都是自动的去布局,也 ...

  7. java使用freemarker生成word文档

    1.原料 开源jar包freemarker.eclipse.一份模板word文档 2.首先设计模板word文档 一般,通过程序输出的word文档的格式是固定的,例如建立一个表格,将表格的标题写好,表格 ...

  8. 比特 字节 兆 GB转换

    bit:比特byte:拜特(字节) 1字节=8比特k:千KB:千字节 1KB = 1024 byteMB:兆字节GB:千兆字节 //少用 Kb:千比特 Mb:兆比特 Gb:千兆比特

  9. PHP代码实现强制换行

    1. 简单的,只能分2行: //$str:输入字符串: //$num:超过多少个字符后进行换行(换行后每行的最大字符数) function forceBlackString($str, $num){ ...

  10. 通过 Docker Compose 组合 ASP NET Core 和 SQL Server

    目录 Docker Compose 简介 安装 WebApi 项目 创建项目 编写Dockfile Web MVC 项目 创建项目 编写Dockfile 编写 docker-compose.yml文件 ...