即使在会话无效后,Action class 对象如何可用?

How Action class object is available even after session is invaliated?

我正在使用 Struts 1.2,我需要有关操作的说明 class。

我的操作 class 有一个实例变量 count 和一个带有 SOP 语句的实例初始化块,它将打印 count[ 的增量值=27=](加1)。然后我为我的应用程序中的屏幕配置了这个 Action class。现在每当我点击这个屏幕时,我的操作 class 就会被执行。

我从两个不同的浏览器访问了这个屏幕,我发现实例初始化块中的 SOP 只执行了一次,得出的结论是只为两个用户创建了一个对象。

现在,当我从两个浏览器注销并再次登录以访问同一屏幕时,实例初始化块内的 SOP 未执行(因此 Action class 对象仍然可用)。但是当我从 运行 服务器上删除我的项目并再次发布时,SOP 被执行了。

所以我认为 Action class 对象与会话无关,如果不是,那么它存储在哪里,以便即使在会话失效后 Action class 对象仍然可用?

示例操作 class 代码:-

public class SampleAction  extends DispatchAction {
   private int count;

   {
         System.out.println(++count + " object(s) created");
   }
   /* other methods */
}

I think the Action class object is not related with session and if it is not, then where it is getting stored so that even after session gets invalidated Action class object is available ?

是的,ActionServletAction class 对象由 servlet 容器创建和维护,它们是单例对象(默认情况下),即只有一个实例 classes 是为整个 Web 应用程序维护的,这与您的 FormBean 对象不同。

所以 ActionServletAction class 对象在加载后(在启动期间或第一个请求到达容器时)就存在于容器中,直到应用程序被销毁用户会话。

此外,请注意 Action class 对象与 FormBean class 对象完全不同(如 ProductFormBeanEmployeeFormBean 等...) 即,FormBean 对象绑定到每个 JSP 页面,并且当请求来自时,它们将被实例化(将创建一个对象)并填充(使用 JSP 字段数据)用户。