朋友 给我 说了 一个 他上次 电面 IBM的面试题,我觉得 不好 回答,特意 问问 诸位 高手。Struts中一个 form bean的生命周期,应该怎么描述。从网上 找了 两个 说法 
   说法 一  。       “控制器收到的请求”->“创建或再循环ActionForm”
                          ->“调用reset()“->“正确保存ActionForm”
                          ->“由请求组合ActionForm”
                          ->“验证ActionForm”。如果验证不通过返回到输入,否则调用 Action的execute()方法。   
   说法 二 。 
       
   [align=left]   1首先控制器接受请求,从request或session范围中查找关联的ActionForm,如果不存在就创建它,并调用reset()方 法,然后将其保存到request或session范围中。
2.把用户输入的表单数据封装到ActionForm中。
3.如果action的validate属性为true,则调用ActionForm的validate()方法。
4.如果验证失败,则讲控制转发给action的input属性指定的web组件,其actionForm实例依然保存在request或session中;
如果验证成功,则调用action的execute()方法,将actionForm传递给execute方法,最后将请求转发给其他web组件,actionForm依然存在于request或session中。[/align]

解决方案 »

  1.   


    说法 二 。 
          
      
      1首先控制器接受请求,从request或session范围中查找关联的ActionForm,如果不存在就创建它,并调用reset()方 法,然后将其保存到request或session范围中。 
    2.把用户输入的表单数据封装到ActionForm中。 
    3.如果action的validate属性为true,则调用ActionForm的validate()方法。 
    4.如果验证失败,则讲控制转发给action的input属性指定的web组件,其actionForm实例依然保存在request或session中; 
    如果验证成功,则调用action的execute()方法,将actionForm传递给execute方法,最后将请求转发给其他web组件,actionForm依然存在于request或session中。说法2好点说法2  在孙卫琴写精通struts 173面只不过书上画的图更详细     说法2没有图  但是步骤都写的很正确
      

  2.   

    第二种说法比较合理全面,ActionForm的生命周期应该是随着request的终止和终止的
      

  3.   

    我觉得 是 和 action 的 struts-config中scope 的配置有关吧?比如 session 和 request。