2017-04-24 69 views
0

我的印象是,Struts中的​​方法是当从struts.xml调用动作类时调用的第一种方法。但是当我调试我的代码在动作类中有一个构造函数时,我看到构造函数首先被执行(我没有在这里创建任何实例)。Struts中的动作类执行流程

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

2)我不知道为什么构造函数获取调用

+0

你知道什么是构造函数吗? –

+1

正在调用构造函数,因为构造函数在类是......时被调用,构造。操作是类,是按请求创建的,所以。我想这就是为什么。 –

回答

0

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

内部Struts使用ObjectFactory构建由配置定义的所有对象 。查看更多about ObjectFactory docs 或The Struts 2 Request Flow


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

您不必为您的班级提供任何构造函数,但是您在执行此操作时必须小心。编译器自动为任何没有构造函数的类提供一个无参数,默认构造函数 。 该默认构造函数将调用超类的无参构造函数。在这种情况下,如果 超类没有无参数构造函数,编译器会发出抱怨,因此您必须验证它所做的 。如果你的类没有显式超类,那么它有一个Object的隐式超类,它有一个无参数 构造函数。


方法是通过拦截器在执行该操作之前调用居多。默认拦截器堆栈是defaultStack。它涉及很多功能,在执行操作之前执行。请参阅this答案以获得有关默认配置的印象。

在动作执行之前调用拦截器。这就像服务请求的 管道一样。每个人在 之后援引一个。当最后一个拦截器处理完该动作后执行。 要在动作配置中调用哪些拦截器或通过注释调用 。有关拦截器的详细说明,请参阅docs