【Java】WebアプリケーションにおけるサーブレットクラスとJSPファイルの役割分担

サーブレットクラスとJSPファイルは
両者ともブラウザからのリクエストを受け付けてページを表示する処理をそれぞれ単独で行えますが
Webアプリケーションを作成する際とくにMVCモデルではどちらか片方だけで完結させずに
両方のメリットを組み合わせる事が一般的です。

本記事の前半ではサーブレットとJSPそれぞれ一方だけでプログラムを実現する例を、
後半ではサーブレットとJSPのそれぞれの良いところを組み合わせて実現する汎用的な例をまとめます。

サーブレットクラス、JSPファイルそれぞれで一方で完結する

リクエストとページの表示をサーブレットクラス、JSPファイルそれぞれで完結する例を確認する。

サーブレットクラスのみ

PrintWriterクラスをインポートし、
getWriterメソッド、printlnメソッドを使用することでHTMLを出力する事が出来る。

JSPファイルのみ

JSPファイルはブラウザからのリクエストを受け付けると
アプリケーションサーバによってサーブレットクラスに変換される。
(サーブレットインスタンスを生成する)

JSPファイルからJSPファイルへ、リクエストを送信して受け付けるプログラム

【 index.jsp 】

formから他のjspファイルへ送信する場合、
action属性に指定するのは
/プロジェクト名/WebContentからのパス
となります。

【 sample.jsp 】

※パラメーターを取得するためのrequestオブジェクトはjsp内で暗黙的に定義されている

サーブレットとJSPを連携させる

ここからはサーブレットとJSPそれぞれの利点を組み合わせた
Webアプリケーションにおいて推奨される一般的な方法を解説します。

具体的には、ブラウザからのリクエストをサーブレットクラスで受付け、
フォワードの仕組みを利用してJSPファイルでページの表示を行います。

今回は、MVCモデルを用いた簡単な占いプログラムを例に解説します。

【プロジェクトの構成】

【ControllerServlet(コントローラー)】

【 Fortuneクラス (モデル) 】
ランダムな占いの結果と日付を生成する

【 index.jsp (ビュー) 】
初回アクセス時に、ControllerServletからフォワードされる

【 result.jsp (ビュー) 】
今日の日付と占いの結果を表示する

プロジェクト内のそれぞれファイルの関係性を表すとこのようなイメージになります。

複雑な処理や制御の役割を持つコントローラーは
元がJavaファイルであるサーブレットクラスが担当、
ページを表示させるビューを担当するのはHTMLの出力を得意とするJSPファイルとなり、
フォワードを利用することによって連携を実現します。

一般的なJavaクラスであるFortuneクラスにモデルの役割を持たせ、
ランダムな占い結果と日付の生成を行なっています。

最終的にresult.jspからリクエストスコープへ保存されたFortuneクラスのオブジェクトを参照し、
結果を表示させています。

注意点
・モデルとして役割を持たせるクラスはpublicかつパッケージに所属させる必要があります。
・JSPファイルが直でリクエストされることの無いよう、
ファイルの配置をWebContent直下ではなくWEB-INFディレクトリ以下に配置するようにしておきます。

Follow me!

【Java】WebアプリケーションにおけるサーブレットクラスとJSPファイルの役割分担” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください