Wicketとサーブレットまとめ


「WicketによるWebアプリケーション開発」の著者t_yanoさんに詳しく説明していただきました。
あとyamashiroさんからすごくわかりやすいコメントをいただきました。


まず大きな間違いとしてサーブレットフレームワークを同列で考えていました。
Wicketがあくまでサーブレット上で動く環境でしかないこと。
そして、その環境(枠組み)のことをフレームワークということ。
なので、Wicketサーブレット以上のことは出来ないし、
Wicketに出来ることはサーブレットでも出来るということです。


kuzuhaさんの説明で「サーブレットオブジェクト指向っぽいことやってるけど、
やってることは線形」って説明の意味もわかりました。

アプリケーションサーバサーブレットのクラスから1つだけインスタンスを作って
スレッドでたくさんのリクエストをさばくそうです。(メモリ的な事情で?)
これはサーブレットのクラスにフィールドを作ることのダメさにも繋がります。
つまり、サーブレットはstaticなメイン関数(的なもの)がただひたすら回ってるだけの線形な処理です。
Javaって言語の仕様上クラス定義したりしてるって意味でオブジェクト指向っぽいだけで)


そんなステートレス状態を解決するためにセッションがあります。
このセッションもオブジェクト間でメッセージパッシングが行われているわけじゃないので
オブジェクト指向的じゃないです。


WicketはWebページを1つのインスタンスとして生成します。
その際、ページ内に含まれるフォームのパーツもインスタンスとして生成します。
通常、フォームに入力された値はセキュリティ上適切にエスケープする処理を
プログラマが考えてコードを記述しなければなりませんが、
Wicketはフォームのパーツ(例えばラベル)のインスタンスを生成する際に
そういう処理を勝手にやってくれるそうです。
(だからといってセキュリティのことを考えないプログラマは糞 by Yoshioriさん)


というように、Wicketサーブレットでやっているセッション管理、
セキュリティ上の処理など泥臭かったり面倒だったりすることを
便利にするフレームワークです。
どう便利にしてくれるかはまだ使ってないのでわかりません。


wktkしてきました。
明日早速バリバリ使ってみようと思います。