【SSH之旅】一步步学习Struts1框架(三):解析对比Struts1实例

上篇博客中,已经实现了一个Struts例子,现在就来分析下这个例子。详细的解读Struts1。

             

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

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

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

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

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

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

具体的工作流程如下: 

      (1)ActionServlet是在web.xml中配置的一个自动启动项。当web服务器启动时,也就同时实例化了 ActionServlet类,ActionServlet会去初始化struts-config.xml的配置信息,并将其加载到内存中,去实例化action-bean,actionform等对象。  

      (2)当ActionServlet接收到来自客户端的请求时,就会去检索和去请求相匹配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再把客户端发过来的请求,转发给ActionForward对象所指向的JSP组件。  

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值