Struts 1.2(生命周期)中的控制流程

时间:2013-10-22 08:38:25

标签: java struts struts-1 struts-config

标题可能听起来有点模糊,但我会试一试。我有2个servlet:

  1. one.java:根据Action class
  2. 的输入,将index.jsp扩展为成功或失败
  3. two.java:扩展ActionForm class,具有getter和setters方法
  4. 我有3个jsp文件:

    1. index.jsp:是欢迎页面并要求提供用户名组合
    2. success.jsp:如果组合正确,则会调用
    3. failure.jsp:如果组合为假则调用
    4. 我有2个xml文件:

      1. web.xml: DD
      2. struts-config.xml: Struts配置文件
      3. 我理解web.xml的工作原理。我唯一的疑问是,首先从struts.xml调用哪一个 one.java /two.java

        我尝试调试并发现首先调用ActionForm类即two.java,然后将值返回到Action,即one.java

        但是,Action类应该首先执行,然后是动作形式吗?我的意思是这就是MVC架构所遵循的。

        请解释一下。链接到非常详细的工作流程将非常有用。

1 个答案:

答案 0 :(得分:12)

ActionForm之前调用Action类并不奇怪 - 在调用Struts操作方法之前,Struts表单应填充用户的数据,其中任何一个都有4个参数:

ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response

第二个 - ActionForm - 应该准备好允许最远的数据处理。我刚刚找到great sequence diagram来说明所有Struts生命周期阶段:

enter image description here

简而言之:

  1. 获取客户端请求后Struts前端控制器调用RequestProcessor以使用 struts-config.xml 找出适当的操作和表单
  2. RequestProcessor获取Struts表单对象(或者如果它不存在则创建它),填充请求中的数据,启动验证(如果存在)并调用适当的Struts操作。
  3. Struts动作执行所有必要的操作。