
JavaWebアプリ開発勉強会レポート Vol.4
1.今回のテーマと内容
今回のテーマは、「サーブレットクラスの実行のしくみ」、「リスナー」、「フィルタ」、「アクションタグとEL式」です。今までより技術的な内容が多いですが、それでもまだ基本的な内容です。座学でしっかりと解説して、実際に自分でプログラムを作って体験します。
では、今回のコンテンツです。
1-1.サーブレットクラスの実行のしくみ
サーブレットとは、JavaでWebアプリケーションを作成するときの仕様(仕組み)で、Webサーバー上で動作してWebアプリの中心を担う機能を持っています。具体的には、Webページをはじめとして画面に関する処理は一切行わず、Webブラウザからの要求に応えたり、送られてきたデータを処理したりする役割を持っています。そんなサーブレットを使用する時の具体的な方法や注意点を丁寧に説明していきます。
大まかな講義の流れは次の通り。
①サーブレットクラスのインスタンス化
②サーブレットクラスのライフサイクル
③init()メソッドの特徴
④destroy()メソッドの特徴
①サーブレットクラスのインスタンス化
サーブレットは、初回リクエスト時にインスタンス化され、Webアプリケーション終了まで残っています。インスタンス化されたサーブレットは、他のリクエストからも再利用されます。
②サーブレットクラスのライフサイクル
Webコンテナの中でサーブレットが生成(init())されて消去(destroy())されるまでの過程のことです。2回目以降のリクエストはロード済みのクラスで処理されます。
この場面では、今までの講義で実装してきたメソッドがどの部分のメソッドなのかの説明もあり、理解を深める工夫も忘れていません。全体と部分を丁寧に説明している勉強会ですので、当たり前のことですが、すごいですね。
③init()メソッドの特徴
スーパークラスであるHttpServletから継承しており、決まったタイミングでアプリケーションサーバーが呼び出します。
init()メソッドは、インスタンスが生成された直後に実行され、サブクラスでオーバーライドして処理を自由に記述することができます。
④destroy()メソッドの特徴
init()メソッドと同じく、スーパークラスであるHttpServletから継承しており、決まったタイミングでアプリケーションサーバーが呼び出します。
destroy()メソッドは、インスタンスが破棄される直前に実行され、サブクラスでオーバーライドして処理を自由に記述することができます。
講義内容をここで詳細にレポートすることはできませんが、基本をしっかりと押さえた講義内容で、みなさん自分の課題制作のことをイメージしながら聞いているのでしょうか、とても真剣ですし質問も積極的です。興味のある方はぜひ受講してください!
1-2.リスナー
続いては、「リスナー」です。大まかな講義の流れは次の通り。
①リスナーとは
②リスナークラスの作り方
③リスナーインターフェースの一覧
①リスナーとは
Webアプリケーションに何らかのイベントが発生した際にそれをプログラムに通知する機能のことです。この機能により、イベントの発生と連動したプログラムが実行できるようになります。
②リスナークラスの作り方
ポイントは、「@WebListenerアノテーションの付与」と「リスナーインターフェースの実装」です。
ここでは、詳しくレポートはしませんが、とても大切ところですが、混乱しがちなところでもありますので、講師も繰り返し説明していますね。
③リスナーインターフェース一覧
ここでは、代表的なリスナーインターフェースについての紹介です。課題制作にうまく組み込めるでしょうか。
1-3.フィルタ
続いては、「フィルタ」です。大まかな講義の流れは次の通り。
①フィルタとは
②フィルタクラスの作り方
①フィルタとは
フィルタとは、クライアントからのリクエストおよびレスポンスに対して、リソース(Servlet/JSP/HTMLなど)での処理の前および後に何らかの処理を行うオブジェクトのことです。
1つのフィルタを複数のサーブレットクラスに対して設定することができ、逆に1つのサーブレットクラスに複数のフィルタを設定することもできます。
②フィルタクラスの作り方
フィルタクラスは、「javax.servlet.Filterインタフェース」を実装して作成しますが、このインターフェースには3つのメソッド「init()/doFilter()/destroy()」が実装されています。
この3つのメソッドをそれぞれ実装して、doFilter()メソッド内で「chain.doFilter(request, response);」の前後に前処理、後処理を記述するのが大切です。
「リスナー」や「フィルタ」など単語としてはよく聞く単語ですが、意味するところは違いますよね。この辺が混乱するところなのですが、実際に実装して動きを確認することができるのがこの勉強会のいいところなのですが、受講生のみなさん、実技まではもう少しだけお待ちくださいね。
1-4.アクションタグとEL式
今日最後の講義は、「アクションタグとEL式」です。大まかな講義の流れは次の通り。
①動的インクルード
②主な標準アクションタグ一覧
③EL式とは
④EL式の注意点
アクションタグとは、JSPページ内でよく使用する定型的な処理をタグ形式で記述可能にしたものです。アクションタグには最初から用意されている標準アクションと、自分で定義したカスタムタグがあります。
①動的インクルード
動的インクルードとは、実行時にインクルード先へ処理を委譲し、出力結果を動的にマージすることです。(実行後にインクルード元に処理が戻ってきます)
メリットとしては、共通の内容の修正が簡単にできるようになります。
②主な標準アクションタグ一覧
標準アクションとはJSPで最初から用意されているタグで、良く使われる機能を実現するためのJavaコードが予め用意されています。
ここでは、代表的な標準アクションタグの紹介です。課題制作でうまく使えるものはあるでしょうか。
③EL式とは
EL式と「Expression Language」の略で、JSPをより簡単に書くためにJSP2.0より導入されており、JSP上で使用します。
主に演算結果や値の参照の結果を出力するために使用されます。
④EL式の注意点
・インスタンスが見つからない場合
EL式で指定した属性名のインスタンスがスコープに保存されていない場合、例外はスローされず何も出⼒されません。
・属性名の重複
例えば、リクエストスコープとセッションスコープに同じ属性名が定義されていた場合、常にリクエストスコープに保存されたインスタンスが利⽤されセッションスコープに保存されたインスタンスが利⽤できません。
アクションタグやEL式については、実は講義ではもっともっと具体的な説明がされており、質問を多く出ましたが、残念ながら今回は割愛とさせていただきます。気になる方は、ぜひ講義を受けに来てくださ~い。
以上で今回の座学は終了。いよいよみなさんお待ちかねの実技に移ります!
今回も実技の課題が盛りだくさんです。
1-5.ハンズオン(スッキリわかるサーブレットJSP)
ハンズオンでは、座学で学んだことを実際に自分でプログラムを作成して確認します。「覚える」のではなく「作れる」ようになる!!を目指して受講者のみなさん、全力でチャレンジ中!!
実は今回の課題は、全部で6つあります。さぁ、時間内におわるのでしょうか。
実技も難易度が上がってきていますので、みなさんかなり苦戦しています。講師の方もいつもより質問を受ける回数が増えていますね。早く進んだ人が遅れている人に教えるのが、いつもの風景ですが、今日はそれどころではない様子です。
それだけ、難しいところ(といよりはわかりにくいところ)をやっているんですね。でもこれでもまだまだ基本のところです。これを乗り越えないと次に進めませんし、「作れる」ようにはなりませんので、みなさん頑張っていますね。
残念ながら時間内に課題がクリアできなかった受講生もいましたが、次の勉強会までにきちんと復習しておきましょう!
2.次回予告
次回のテーマは本日とばした「JDBCプログラムとDAOパターン」、「リーダブルコード」です。いよいよ当勉強会も最終回です。みなさん、課題は順調ですか?次回の勉強会開催日が提出期限ですよ。
3.受講者の声と評価
今回の参加人数6名、辛口の受講者アンケートでは、満足度が平均「95点」を獲得し、「サーブレットの動作の細かい内容について知る事が出来ました。」「講義はとても良かった。」「演習時間が十分にあり良いと感じました。」など、多くの評価を頂きました。
毎回、満足度の高いこの勉強会。
講義と実技のバランスがいいのがポイントなんですね。それも経験豊富な講師がポイントを押さえて臨機応変に行っているからなんどと思います。
4.勉強会で伝えたい事
今回は、とてもややこしくてわかりにくいポイントが多くありましたが、1つ1つの内容を実機での動作を確認することで理解できたのではないかと思います。当勉強会では、「覚える」のではなく「作れる」ようになる!を合言葉に、プログラミングを実際に経験してプログラミングの楽しさ、面白さを学んで現場で活躍できることを目指します。
そのために、実技多めで楽しく技術を身につけられる様に工夫しています。自分で試してみて失敗しながら経験して技術を身に着けていってください。補講も受け付けていますので、遠慮なく!
一緒にプロフェッショナルを目指して頑張りましょう!!
本勉強会は、メイン講師2名(によって構成しており、受講者からの質問や問い合わせにも手厚く対応しています。ぜひ、見学に来てね!!