サーブレットコンテキストとかサーブレットコンテナとか | sola's note

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

引き続きGAE
今日はデータストアにデータを格納するところまでをローカルでやってみた。

しかしGAEとは少しそれて、
気になった事が…。

実はServletの基礎を理解していない。

Servletは何回か書いた事あるし、問題なく使える(多分)なんだけど、
いざ考えてみると、概要を理解していない気がした。

そこでまとめてみた。
まず対象となるよく見かけるコード。(Servletから一部抜粋)

ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher("/ExForward2Servlet");
rd.forward(req, res);

上から順に①、②、③とでもしようか。
以下ざっくりなServletの処理順序。

1.サーブレットを用意したWebサーバを起動させる。
2.WebサーバがServletを初期化する。
 →ServletにServletConfigオブジェクトが提供される。
  ※このServletConfigオブジェクトにServletContextが含まれる!
   ⇒これを①で取る
   (ServletContextはサーブレットがサーブレットコンテナと通信する際に使用するメソッドをいくつか定義しています。)
3.RequestDispatcherの実装クラスを取得する。
 →RequestDispatcherはサーブレットがHTMLやJSPファイルを表示するためのインタフェース。
  ⇒②で転送するオブジェクトを用意します。
   (サーブレットコンテナによって作成されます。特定のパスに存在するサーバリソースのラッパーとして使用される。)
4.転送します。サーブレットからの要求を、②で設定したリソースに転送します。

とまあこんな感じ。

全くわからなかった人は高橋麻奈さんの本で流れを勉強すべし!

やさしいJava 活用編 第3版/高橋 麻奈
¥2,730
Amazon.co.jp