我必须在服务器启动而不是在第一个请求上执行struts2动作。
在启动应用程序时加载数据是一项常见任务,您会在网上找到几个示例。正如在其他答案中所说的那样,您应该实现ServletContextListener(不是特定于Struts2的)…您可以 在此处阅读一个出色的示例 。
这里重要的是要了解Action概念:
在Struts2 MVC(模型视图控制器)框架中,an Action是Controller(和的一部分Model)。
Struts2 MVC
Action
Controller
Model
Actions是由Request来自的Clients 调用的(并且在每个请求上都会创建一个Action,因此它们是线程安全的)。
Request
Client
这意味着您需要一个客户端, 通常 意味着一个人坐在电脑前,单击浏览器…然后,客户端调用不是在共享对象上执行自动化服务器端操作的正确触发器。
当然,您可以实现某种形式的lazy- initialitazion(例如,借助自定义的拦截器),以便第一个用户将在Application范围内进行设置,而其他用户将检索已填充的对象,但这不是最好的方法(您应该在初始化时处理并发性,并且将有一个用户,第一个用户,等待服务器在启动时夜间进行的操作…)。
lazy- initialitazion