Struts中的Action类执行流程

时间:2017-04-24 15:38:09

标签: java configuration struts2

我的印象是,Struts中的Collection<MyObj> myObjects = results.values(); 方法是从execute()调用操作类时调用的第一个方法。但是当我调试我在动作类中有构造函数的代码时,我看到构造函数首先被执行(我不是在这里创建任何实例)。

1)有些人可以解释一下动作类中的执行流程,即在实际执行之前调用哪些方法。

2)我不确定为什么构造函数被调用

1 个答案:

答案 0 :(得分:0)

Struts在执行操作之前调用了很多东西。但它可以在struts.xml中配置。您可以从this回答中看到操作执行的请求流。

  

内部Struts使用ObjectFactory来构建所有对象   由配置定义。详细了解ObjectFactory文档   或The Struts 2 Request Flow

构造函数应该具有default constructorno-argument constructor,否则它将无法构建。有关差异的详细说明,请参阅Java default constructor

  

你不必为你的班级提供任何建设者,但是你   这样做时一定要小心。编译器自动提供   无参数,没有构造函数的任何类的默认构造函数。   这个默认构造函数将调用的无参数构造函数   超类。在这种情况下,编译器会抱怨如果   超类没有无参数构造函数,所以你必须验证   它确实如此。如果你的类没有明确的超类,那么它有一个   Object的隐式超类,它有一个无参数   构造

在执行操作之前,这些方法主要由拦截器调用。默认拦截器堆栈为defaultStack。它涉及许多涉及在操作之前执行的功能。请参阅this回答,了解有关默认配置的信息。

  

在执行操作之前调用拦截器。它就像一个   提供请求的管道。他们每个人都调用了一个   另一个。当最后一个拦截器处理完动作时。   要在操作配置中配置的调用拦截器   通过注释。有关拦截器的详细说明,请参阅docs