0
我有一個structs動作對象實例,它從屬性文件中加載一個變量。我希望它只在第一次調用動作時發生,因此在進一步的執行過程中它從內存中讀取。任何提示?謝謝。在struts中只載入一次變量1動作類
我有一個structs動作對象實例,它從屬性文件中加載一個變量。我希望它只在第一次調用動作時發生,因此在進一步的執行過程中它從內存中讀取。任何提示?謝謝。在struts中只載入一次變量1動作類
第一眼看到我這樣做至少有兩種方式:
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 - 有你的價值設置操作實例,並加載你的構造,後來只用它:
public class YourAction extends Action {
private String value;
public YourAction() {
super();
//value = load code here
}
...
}
這工作,因爲Struts使用一個動作實例來爲所有請求,所以所有請求W¯¯看不到你的價值(即Struts Action類不是線程安全的,它們像servlet一樣)。