SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GlassFishからアプローチするJava

GlassFishからアプローチするJava~入門編~
第2回「Webアプリケーションの作成 Servletの基礎を学ぶ」

Servletって何?


Servletのライフサイクルについて

 ライフサイクルとは文字通り、インスタンスの生成から消滅に至るまでの流れを指します。Servletは前述の通り、最初にインスタンス生成が要求された場合のみインスタンス化されます。その際、initメソッドが呼び出され初期化処理が実行されます。最初のみ特定の処理を行うにはinitメソッドを記述する必要があります。2回目以降にServletのインスタンス生成が要求される場合、スレッドが生成されるか、スレッドプールが有効な場合、あらかじめ生成されたスレッドプールからスレッドが取り出されます。2回目以降はinitメソッドは呼び出されません。ブラウザからHttp GetまたはPostタイプのリクエストが要求されると、ServletのdoGetdoPostメソッドが呼びされます。doGetdoPostメソッドは引数のHttpServletRequestのgetParameterを使い、ブラウザで入力された値を取得し、要求に応じます。doGetdoPostメソッドは繰り返し呼び出されクライアントの多様な要求に応えます。Servletの消滅はプログラムから明示的に行うのではなく、管理コンソールからの停止の指示や、サーバ自身の停止の前に呼び出されます。

おさらい

  • Webアプリケーションの基礎はServletである
  • JSPやJSP STLという技術もServletの上に乗っている(JSPがServletに置き換えられコンパイルされることは次回紹介します)
  • Servletは最初の呼び出しのみインスタンス化され、それ以降何度呼び出してもスレッドが生成されるのみである
  • 同じServletのスレッド同士はメモリ空間を共有する
  • Servletには明確なライフサイクルが存在する

 上記のことをしっかり押さえておけばServletやJSPを使ったWebアプリケーションの理解はグンと楽になります。なお、サンプルコードはページトップにあるので、ダウンロードしてご利用ください。プロジェクト構成は図25の通りです。

図25.プロジェクト構成
図25.プロジェクト構成

参考資料

  1. 『Javaスレッドプログラミング―並列オブジェクト指向プログラミングの設計原理』 Doug Lea著、翔泳社、2000年8月
  2. 『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』 結城 浩著、ソフトバンククリエイティブ、2006年3月
  3. 『創るJava NetBeansでつくって学ぶJava GUI & Webアプリケーション[改訂第3版]』 きしだ なおき著、毎日コミュニケーションズ、2005年11月

 1と2を読めば、非常に難しいと感じるマルチスレッドプログラミングの理解が楽になります。今回はスレッドを悪者扱いしましたが、スレッドは使い方次第で味方にも敵にもなるため、しっかりと基礎を押さえておく必要があります。当連載では説明しないため、これらで理解を深めてください。3はNetBeans 6.7.1を使った説明であり、当連載では説明できないことをほぼカバーしており、本連載とともに読まれることをお薦めします。

 次回(第3回)はJSPを説明し、第4回目にWebアプリケーションを作成します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
GlassFishからアプローチするJava連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4748 2010/02/12 11:06

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー