zoukankan      html  css  js  c++  java
  • 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例

    部分博客,,先后实施了Struts抽样。现在我们来分析这个样本。具体解释Struts1。

                 

    Struts1的几个核心组件是值得我们注意的: 

            (1)ActionServlet(核心控制器)。  

            (2)ActionForm(接收页面中传过的数据)。 

            (3)Action(是控制器,主要是从ActionForm中接收页面传进来的数据,然后进行逻辑处理)。 

            (4)ActionForward(页面跳转。跳转到jsp组件)。 

            (5)ActionMapping(配置每一个Action所相应的映射关系)。 

    详细的工作流程例如以下: 

          (1)ActionServlet是在web.xml中配置的一个自己主动启动项。

    当webserver启动时,也就同一时候实例化了 ActionServlet类,ActionServlet会去初始化struts-config.xml的配置信息,并将其载入到内存中。去实例化action-bean。actionform等对象。  

          (2)当ActionServlet接收到来自client的请求时,就会去检索和去请求相匹配ActionMapping实例,假设没有找到则返回500错误. 

          (3)假设找到了就检查相应的ActionForm实例是否存在 a、假设存在,先把该实例相关数据reset清空一下。然后就把用户提交的表单数据填充到ActionForm 实例中. b、假设不存在。就创建一个ActionForm对象,再把用户提交的表单数据填弃到ActionForm实例中 

          (4)接着,再依据配置。看看是否要对表单进行验证(validate),假设须要验证,则调用ActionForm的 validate()方法对表单进行验证。a、假设验证没通过。则返回错误信息。 b、假设不须要验证。或者须要验证但validate方法返回null或者是返回一个不包括ActionMessage的ActionErrors对象的话。表明验证成功。

         (5)ActionServlet依据ActionMapping实例所包括的映射信息决定将请求发送给哪个Action,假设相应的   Action实例不存在,则创建该Action的实例,然后调用该Action的execute()方法  

         (6)运行完Action实例的execute()方法后,该方法会返回一个ActionForward对象。  

         (7)ActionServlet再把client发过来的请求。转发给ActionForward对象所指向的JSP组件。  

         (8)ActionForward所指向的JSP组件再生成动态网页,送回给client。


    Struts1与传统MVC有什么差别呢?

           传统MVC(Model2)中:

                          

           MVC设计模式中。先由客户发送HTTP请求,控制器Servlet会接收用户发送的全部请求。然后Servlet调用javabean。将显示结果通过JSP页面进行显示。

     
          传统MVC和Struts对比:

                 

    总结:

            struts1中,依旧存在servlet(控制器)。但这个时候却是ActionServlet。由struts-config.xml配置文件控制,action就相当于MVC中一个个的servlet,由Action调用javabean完毕一个个详细的操作业务。


            Struts1比传统的MVC模式多了三个组件。即标签库,ActionForm和Action,关于Struts1和MVC的关系。我感觉MVC是一个标准。而Struts1是实现。MVC像一个接口,struts1实现了这个接口。


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    初识ES6
    初识NODE
    AJAX详解
    PHP 文件与目录操作函数总结
    PHP封装一个通用好用的文件上传处理类
    PHP基础之 错误处理 及 异常处理
    PHP基础OOP(二) 多态
    PHP基础之 重载 的实现方式
    CCS3的过渡、变换、动画以及响应式布局、弹性布局
    CSS之盒子模型(由浅到深的理解)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4821402.html
Copyright © 2011-2022 走看看