>>104,105,107
SingleThreadModelはサーブレットの利点が生かされないので、すでに非推奨になってたと思う。
あと、singletonで、Duplicate From Submission Problemに対応しようというのも間違っているでしょう。

というか、sessionにget,setAttributeすれば同じインスタンスをとってくるからSingletonとかSingleThreadModelとかは考えからはずしていいよ。
Threadセーフにするために、Synchronizedつけたりするけど、それでも同じRequestがきたときに2重登録が回避できるわけではない。
結局、操作ID(=Token)みたいなのを採番して管理するしかないのよ。
すべては、httpがステートレスということから来ていること。
クライアントに表示されている画面(ユーザーインターフェイスの状態)とサーバーサイドの処理の同期を取るには言語レベルの同期処理では解決できなくて、
アプリケーションレベルで何らかの工夫をしないといけないわけね。