Struts 2 中的 Action 类执行流程

问题描述 投票:0回答:1

我的印象是,Struts 中的

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

  1. 请解释一下action类中的执行流程,即在实际执行之前调用了哪些方法。

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

java configuration struts2
1个回答
0
投票

Struts 在执行操作之前调用很多东西。但它可以在

struts.xml
中配置。您可以从this答案中看到操作执行的请求流程。

Struts 内部使用

ObjectFactory
来构建所有对象 由配置定义。查看更多有关
ObjectFactory
文档的信息 或Struts 2 请求流程


构造函数应该具有默认构造函数无参构造函数,否则不会被构造。有关差异的详细说明,您可以参阅 Java 默认构造函数

你不必为你的类提供任何构造函数,但是你 这样做时必须小心。编译器自动提供一个 无参数,任何没有构造函数的类的默认构造函数。 这个默认构造函数将调用无参构造函数 超类。在这种情况下,如果 超类没有无参构造函数,因此您必须验证 确实如此。如果你的类没有显式的超类,那么它有一个 Object 的隐式超类,它没有参数 构造函数。


这些方法主要由拦截器在执行操作之前调用。默认拦截器堆栈是

defaultStack
。它涉及许多在操作之前执行的功能。请参阅this答案以了解默认配置。

拦截器在操作执行之前被调用。这就像一个 服务请求的管道。他们每个人都调用了一个 其他。当最后一个拦截器处理时,将执行该操作。 要调用在操作配置中配置的拦截器或 通过注释。有关拦截器的详细说明,请参阅docs


© www.soinside.com 2019 - 2024. All rights reserved.