最近在幾個專案發現了struts 1.x的乙個安全性問題是值得注意的。以前一直沒有在意。因為過去的模式是前台頁面資料通過actionform傳入,action中的excute方法接收,這個問題是不存在的。
但是,如果在action 中直接定義例項變數,問題就很大了。原因其實也很簡單:
為了確保執行緒安全(thread-safe),在乙個應用的生命週期中,struts框架只會為每個action類建立乙個action例項(與servlet是一樣的)。所有的客戶請求共享乙個action例項,並且所有請求執行緒可以同時執行它的execute()方法。
所以,每個action只有乙個例項, 在action列印this也可以看到, 確實是一樣的,
所以, 不要在action裡面生命全域性的變數記憶資料, 沒有意義而且不安全。
使用actionform則不會有問題,原因也很簡單:
actionform 是通過引數形式傳入action的,不存在共享變數的問題,其實每個request產生的actionform例項也是不同的。
因此在使用struts 1.x的時候要注意執行緒安全性問題
struts1 x 學習筆記
struts1.x 工作流程 2.建立actionform物件,儲存表單引數 3.使用actionform的validate方法進行引數驗證 4.actionservlet傳遞請求給相應的action 5.action的execute方法返回相應的actionforward物件 6.actionse...
struts 1 x 學習 筆記1
配置struts 1.x 要做的以下幾件事,1.匯入jar 2.web.xml配置actionservlet 3.struts conf.xml 4.配置formbean 5.配置action path 必須 type 必須 name 是frombean的名字 scope 作用域,只有session...
Struts1 x的validator框架使用
一 配置 在使用validator校驗框架時候先要對工程進行配置,新增validator rules.xml和validator.xml兩個檔案,將其放到web inf 目錄下 與web.xml檔案在同一目錄下 在struts config.xml中設定外掛程式 value值用來指定驗證規則的檔案,...