【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实现了这个接口。


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

posted @ 2015-09-19 13:55  zfyouxi  阅读(191)  评论(0编辑  收藏  举报