在struts 1 Action类中只加载一次变量

时间:2010-06-14 17:22:33

标签: variables struts

我有一个从属性文件加载变量的结构操作对象实例。我希望它只在第一次调用操作时发生,所以在进一步执行时它从内存中读取。任何提示?感谢。

1 个答案:

答案 0 :(得分:0)

乍一看,我看到至少有两种方法可以做到这一点:

1 - 从属性文件中读取值并将其作为静态字段存储在操作类中。静态初始化程序应该用于加载bundle并读取值。当您的Action类由JVM加载时,您将获得您的值,然后从那里开始使用它。

public class YourAction extends Action {
  private static String value;
  static {
    // value = load code here
  }
  ...
}

由于您在加载Struts功能时无权访问,我认为您必须使用以下内容来阅读您的值:

ResourceBundle.getBundle("com/some/package/bundle").getString("some_key")

2 - 在Action实例上设置您的值并使用您的构造函数加载,稍后只需使用它:

public class YourAction extends Action {
  private String value;
  public YourAction() {
    super();
    //value = load code here
  }
  ...
}

这将起作用,因为Struts使用一个Action实例来提供所有请求,因此所有请求都将看到您的值(即Struts Action类不是线程安全的,它们的行为类似于servlet)。