2007 年 3 月 6 日 23 時 46 分

JSP は View である


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


MVC アーキテクチャというものがあることは分かった。

では、JSP や Struts 1.x を導入すると、
どのような手助けをしてくれるのだろうか。
MVC の視点から考えてみよう。

    ・表示(ビュー/View)
    ・制御(コントロール/Control)
    ・動作(モデル/Model)

まず、JSP からだ。

JSP はその名のとおり、SSJS や ASP に影響を受けており、
Servlet の中でも異色の存在である。

JSP は MVC における View 向けの Servlet である。
まず、JSP Servlet に要求があると、
URL のパス部分を元に、対応するファイルを見つける。

このファイルをそのまま返すのならば、
Web サーバや既定の Servlet と同じなのだが、
JSP の場合、そのファイルを解析し、
埋め込まれたスクリプトを実行してから返す。

つまり、JSP を使って開発する場合、
HTML、XML、テキストなどの静的なコンテンツの一部に、
動的な値を埋め込んでページを作成することができる。
これは、画面のテンプレートを作る感覚に近い。

JSP では任意の Java コードを書くことも可能なので、
JSP だけで全ての処理を行うこともできなくはないが、
MVC の役割を明確に分担する事を考えた場合、
JSP は View に徹した使い方をするべきである。

さて、Servlet 規格と同じように JSP にも規格がある。
ほとんどの Servlet コンテナは JSP に標準対応しており、
独自の JSP の実装を組み込み機能として持っている。

その場合、web.xml で特に明示せずとも、
*.jsp という URL パターンに既定で割り当てられている。
そのため、拡張子を jsp にしたファイルを書けば、
JSP として実行されることになる。

JSP を View 専用として使う場合は、
.jsp ファイルはデザインテンプレートとして使うため、
実処理を行う他の Servlet と連動させる事になる。

最初に他の Servlet が URL を受け取ると、
その Servlet は処理結果を各種属性に設定した上で、
JSP に制御を渡す(= 内部的に転送する)。

JSP は動的な値を属性から取得し、
ページ内に埋め込む事で画面を作成して返すのである。

なお、属性については以前に調べたので以下を参照。

■ データの格納先と寿命(スコープ)
http://mixi.jp/view_diary.pl?id=359561393&owner_id=2300658

他の Servlet ではレイアウトを考える必要はない。
JSP では処理を考える必要はない。
これにより、依存性が最小限になり、
見通しの良いプログラミングが可能となるのだ。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.