zoukankan      html  css  js  c++  java
  • Structs工作原理

     

                                                                   Struts 的体系结构与工作原理
      
       MVC Model-View-Controller 的缩写,是一种常用的设计模式。 MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。 MVC 的工作原理 , 如下图-1 所示:
      
                                       
                                                                图-1

      
       Struts MVC 的一种实现,它将 Servlet JSP 标记(属于 J2EE 规范)用作实现的一部分。 Struts 继承了 MVC 的各项特性,并根据 J2EE 的特点,做了相应的变化与扩展。 Struts 的体系结构与工作原理如下图 2 所示:
      
                    
                                                                     图-2
     
      图-2 中我们可以知道, Struts 的体系结构包括模型( Model ),视图( View )和控制器( Controller )三部分。
      
      下面让我们从 MVC 角度来看看 struts 的体系结构( Model 2 )与工作原理:
      
       1 )模型( Model
      
      在 Struts 的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组 Actinform Bean 表示。根据设计或应用程序复杂度的不同,这些 Bean 可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的 bean 调用。比如购物车 bean ,它拥有用户购买商品的信息,可能还有 checkOut() 方法用来检查用户的信用卡,并向仓库发定货信息。 小型程序中,操作可能会被内嵌在 Action 类,它是 struts 框架中控制器角色的一部分。当逻辑简单时这个方法很适合。 建议用户将事务逻辑(要做什么)与 Action 类所扮演的角色(决定做什么)分开。
      
       2 )视图( View
      
      视图主要由 JSP 建立, struts 包含扩展自定义标签库( TagLib ),可以简化创建完全国际化用户界面的过程。目前的标签库包括: Bean Tags HTML tags Logic Tags Nested Tags 以及 Template Tags 等。
      
       3 )控制器( Controller
      
      在 struts 中,基本的控制器组件是 ActionServlet 类中的实例 servelt ,实际使用的 servlet 在配置文件中由一组映射(由 ActionMapping 类进行描述)进行定义。对于业务逻辑的操作则主要由 Action ActionMapping ActionForward 这几个组件协调完成的,其中 Action 扮演了真正的业务逻辑的实现者, ActionMapping ActionForward 则指定了不同业务逻辑或流程的运行方向。 struts-config.xml 文件配置控制器。 
           流程:Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevletActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。

     核心:Struts的核心是ActionSevletActionSevlet的核心是Struts-config.xml

      
       Struts 体系结构中的组件
       
                  
                                                                              图-3

      
            图-3 显示了 ActionServlet (Controller) Actionform (form State) Action (Model Wrapper) 之间的最简关系。
      体系结构中所使用的组件如下表:
       ActionServlet   控制器
       ActionClass    包含事务逻辑
       Actionform    显示模块数据
       ActionMapping   帮助控制器将请求映射到操作
       ActionForward   用来指示操作转移的对象
       ActionError    用来存储和回收错误
       Struts 标记库  可以减轻开发显示层次的工作  
         .NET 中如何使用 Struts 的设想
       1 )模型( Model
      
       这里写业务层。
      
       2 )视图( View
      
      视图当然指的是 .apsx 文件。
      
       3 )控制器( Controller
            这里是一个转向控制器,由 xml 配置完成,就像真正的 struts 一样。
    这里提的是一个简化的,精炼 struts 思想的 .net 版本使用方法。
    例子如下:
    一个用户注册系统,用户通过网页输入相关信息:注册 ID 号,密码, EMAIL ,若注册成功,则返回成功提示信息,反之出现注册失败提示信息。
    注册页面: reguser.aspx
    配置文件:   Struts-config.xml
       <Struts-config>
      

       <forward name="failure" path="/ messageFailure.aspx"/>
      

       <forward name="success" path="/ messageSuccess.aspx"/>
           </Struts-config>
    核心代码:
    如果,注册成功,转向 “success” ,而 “success” 是什么页面由配置文件决定;这样就分离了 view (界面层)和 Controller (控制层),有业务层( Model )由控制层来访问,这样界面层就可以专心于其美工设计。也许你会说这只不过是个页面导航。
    关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

     

  • 相关阅读:
    jQuery之$().each和$.each的区别(转)
    js获取非行间样式--有bug,忧伤
    js之数组方法
    js之检测对象类型
    for-in枚举对象属性
    jq 处理select 下拉框
    阿里大鱼短信发送服务应用实例(PHP SDK)
    php RSA 非对称加解密实例
    JS HTML table 生成 Excel文件
    php RSA 加解密实例
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/2554496.html
Copyright © 2011-2022 走看看