7

标题可能听起来有点模糊,但我会试一试。我有 2 个小服务程序:

  1. one.java:根据输入将转发页面扩展Action class为成功或失败index.jsp
  2. two.java:扩展了ActionForm class,有getter和setter方法

我有3个jsp文件:

  1. index.jsp:是欢迎页面并要求用户名组合
  2. success.jsp:如果组合正确则调用
  3. failure.jsp:如果组合为假则调用

我有 2 个 xml 文件:

  1. web.xml: DD
  2. struts-config.xml: Struts 配置文件

我了解 web.xml 的工作原理。我唯一的疑问是,首先从 struts.xml 调用one.java /two.java中的哪一个?

我尝试调试,发现首先调用了ActionFormie 类two.java,然后将值返回给Actionie one.java

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

请解释。指向非常详细的工作流程的链接将非常有帮助。

4

1 回答 1

14

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

ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response

第二个ActionForm——应该准备好允许最远的数据处理。我刚刚找到了一个很好的序列图来说明所有 Struts 生命周期阶段:

在此处输入图像描述

简而言之:

  1. 在收到客户端的请求后,Struts 前端控制器调用以使用struts-config.xmlRequestProcessor找出适当的操作和表单
  2. RequestProcessor获取 Struts 表单对象(如果不存在则创建它),填充来自请求的数据,启动验证(如果存在)并调用适当的 Struts 操作。
  3. Struts 动作执行所有进一步必要的操作。
于 2013-10-23T17:22:07.227 回答