1,先在乙個action中,呼叫s**etoken(httpservletrequest request)方法。然後轉向帶有表單的jsp頁面。
2,在jsp頁面提交表單給乙個action,再這個action中進行是否為重複提交的判斷。
1, 由第乙個action呼叫s**etoken(httpservletrequest request),這個方法內部實現如下:
這個方法的實現如下:
}這個方法呼叫generatetoken方法實現如下:
}generatetoken完畢後,將得到的唯一值setattribute到session中。
session.setattribute(globals.transaction_token_key, token);
globals.transaction_token_key的值是:」 org.apache.struts.action.token」
然後跳轉到jsp頁面。
2, jsp頁面的struts自定義標籤 的標籤類:org.apache.struts.taglib.html. formtag
這個類的dostarttag()方法會呼叫本類的rendertoken()方法。
這樣子會生成類似於
的隱藏標籤。
然後提交到乙個action中,在action中用istokenvalid()方法進行比較session中」 org.apache.struts.action.token」的這個key所對應的值和提交來的request中的」 org.apache.struts.action.token」的這個value是否一致。
如果為true,那麼證明可以提交。如果為false,證明已經重複,不允許提交。
閉鎖(CountDownLacth)使用及原理分析
1.countdowmlatch是什麼?countdownlatch也叫閉鎖,可以使得乙個 多個執行緒等待閉鎖開啟後執行 2.應用場景示例 public class countdownlatchtest try catch exception e system.out.println 主線程在子執行...
Spark Streaming程式設計模型及原理
spark streaming程式設計模型及原理 離散資料流 discretized stream or dstream 是spark streaming 中最基本的抽象資料結構,它代表了連續的流式資料,與rdd類似,dstream有兩種產生方式,一種是從源頭獲取的輸入資料,另外一種則是對源資料經過...
Ruby SQLite GUI使用實錄(原)
ruby sqlite gui是乙個簡單的 跨平台的sqlite資料庫管理工具,它使用ruby編寫,使用了ruby gtk2和activerecord後端。因此需要安裝gtk,至於activerecord在大家安裝rails時就裝好了,所以下面就不敘述了。code c ruby v ruby 1.8...