【JavaWebアプリ入門 #12】サーブレット-JSP連携

 

みのる
こんにちは。笑顔で感謝!✨ みのるコーチです。
今回も、ご覧いただき、ありがとうございます。

今回は…

JavaWebアプリ入門 #12
サーブレット-JSP連携

というテーマでお送りします。

彩香
今回も ブラッシュアップできるよう、頑張ります。
よろしくお願いします。
剛留
サーブレットも JSPも、使い方が分かってきました。

今回は、その連携ですね。
楽しみです。よろしくお願いします。

【1】 JSPの暗黙オブジェクト

① JSPの暗黙オブジェクトとは…

JSPの暗黙オブジェクトとは

JSPファイルの中で、宣言しなくても
最初から使えるオブジェクトです。

JSPの暗黙オブジェクト
JSPファイルお中で、宣言しなくても
最初から使えるオブジェクト

例えば、この例の request というオブジェクトは
JSPファイル内で宣言しなくても…

オブジェクトとして使用できるため
そのオブジェクトの持つ メソッドを呼び出せる事となります。

② なぜ使えるか…?

これまでに、こんな話をしてきました。

JSPの初回のリクエスト時には、WebコンテナがJSPファイルを
java(サーブレット)に変換してから使用すると…。

そして…

この時に 暗黙オブジェクトの宣言が組み込まれ
オブジェクトとして使用できる状態で実行されます。

ですので、JSPファイルの記述の中では
暗黙オブジェクトは 宣言せずに使用する事ができるのです。

③ 暗黙オブジェクトの例

ここでは、このJSPの暗黙オブジェクトの主なものを
3つ見ておきましょう。

❶ requestオブジェクト

まずは、request オブジェクトです。
これは、クライアントからのリクエスト情報を表します。

サーブレットの doGet() メソッド・doPost() メソッドの
引数で渡される request と同様に使用できます。

したがって、リクエストパラメータを取得する getParameter(),
getParameterValues() メソッドや…

リクエストスコープから データを取得する
getAttribute() メソッドなどを使用できます。

❷ responseオブジェクト

次は、response オブジェクトです。
これは、クライアントへのレスポンス情報を表します。

こちらは、サーブレットの doGet() メソッド・doPost()
メソッドの 引数で渡される response と同様に使用できます。

…というように、request と response が
使用できるという事は…

サーブレットと同等の処理は、行えることとなりますね。

❸ sessionオブジェクト

そして、もう一つ session オブジェクト を
使用することができます。

セッション管理については、次回お話しますが
その中で登場する セッションオブジェクトも…

JSPの中で宣言せずに利用する事ができます。
これも、非常に強力な事なのです。

詳しくは、次回お話しますね。

今のところは…

sessionオブジェクト
というものが あって、JSPの中で使える

…と考えておきましょう。

【2】 サーブレットとJSP

① 強みを活かす

これまでに、サーブレットとJSPの
プログラミングを見てきましたが…

どちらも、Webアプリの部品として
リクエストを受け取って、レスポンスを返す事ができます…

サーブレットは、引数で リクエスト情報と
レスポンス情報が渡され…

JSPは、暗黙オブジェクトで リクエスト情報と
レスオンス情報が利用できますから。

そして、この サーブレットとJSPは…

それぞれの 強いところを 活かすと
良い Webアプリが作れる事になるのです。

ここで サーブレットとJSPの
それぞれの強みを見ていきましょう。

② サーブレットの強み

サーブレットの強いところは
リクエストを受けて 処理を行うという部分です…。

Javaで直接 処理が記述できるので
ここは当然と言えますね。

③ JSPの強み

一方で、JSPの強みは何かというと
HTML形式の レスポンス生成です。

ほとんど HTMLで書けて、加えて
JSPのタグを組み込むことで Javaの機能が使えますから。

④ 処理分割の利点

そして、このように サーブレットと JSP で
処理分割する 利点も ご紹介しておきましょう。

❶効率が上がる。

ここまで、説明したように、各テクノロジーの強みを
生かせるので、効率が良くなりますね。

❷担当者の役割分担がしやすい。

これは、特にお仕事でチーム開発する場合には…

担当者ごとに 分担が明確になるとか
得意な部分を担当するとか、利点が多くあります。

❸狭い範囲で考えやすい。

限られた範囲で考えたほうが、考えがまとまりやすく
効率的になりますし、ミスが少なくなります。

❹改造に耐えられる。

例えば表示の仕方を改造しよう とか
業務処理の内容を変えよう とか、要求された場合に…

分割してあると、修正箇所は特定しやすいし
限られた範囲なので 対応の間違いも少ないものです。

このように、良いことずくめですね…。

彩香
サーブレットとJSPの
それぞれの強みを活かすことが 大切なんですね。

人間でも、強みを活かすことが大切ですが
テクノロジーも 同じように 強みを活かすんですね。

納得しました。

剛留
役割分割の利点が 多いことが 分かりました。

効率の良い、改造に耐えられるプログラムを作っていきます。

【3】 役割分担と処理の流れ

ここでは、サーブレットと JSP の強みを活かした
役割分担と処理の流れを見ていきましょう。

① Webブラウザからの リクエスト が送られます。

② 対応する サーブレット の doGet() メソッドまたは doPost() メソッドが起動され内部的に処理を行います。

③ 転送先のJSPで 必要なデータを リクエストスコープに格納します。

④ そして、JSP にリクエストを転送します。

⑤ JSPでは、必要なデータを リクエストスコープから取得します。

そして…

⑥ JSP は、レスポンスの生成を行います。

最後に…

⑦ レスポンスは Webブラウザに送られます。

このように分割すると、今までに学んできた
テクノロジーの強みを活かして Webアプリが作れそうですね。

【まとめ】

【1】 JSPの暗黙オブジェクト
✅ JSPファイルの中で
  宣言しなくても
  最初から使えるオブジェクト。

✅ 代表的な暗黙オブジェクト
   request
   response
   session

【2】 サーブレットとJSP
✅ サーブレット と JSP の
  各々の強みを生かすように
  処理分担する事が大切。
【3】 役割分担と処理の流れ
✅ サーブレットはリクエストを
  受け取って処理を行う。

✅ JSPはHTML形式のレスポンスを
  生成してクライアントに返す。

✅ 必要なデータは
  リクエストスコープで受け渡す。