第1回 サーブレットアプリケーションを体験しよう
この連載は、Javaを利用したWebアプリケーションの開発に必要な知識を、ツールを用いて手軽に自分の手を動かしながら覚えていただくことを目的としています。ツールを使うと面倒な設定をすることなく、自分でアプリケーションを試してみることができます。いままでサーブレットのが難しいと感じていた方も、この記事を読んで自分で試すことで、本格的な学習の良いきっかけをつかんでください。(編集局) |
ボーランド
新井正広
2004/5/15
|
JavaによるWebアプリケーションを手軽に試して学習するには |
Webアプリケーションを作成するには、多くの前提知識が必要です。そのため、多くの方が「これらの事項をすべて熟知しないと開発がスタートできない」と感じ、結果として「JavaによるWebアプリケーションの開発は難しいな」というところで踏みとどまってしまう傾向があります。これは非常に残念なことです。そこで、この連載では、順序を逆転して、「開発作業を支援するツール」を最大限利用して、まず動作するものを作成していただきます。動作するものが作成できたら、これを自分なりにカスタマイズして、いろいろなことを試してみてください。そのうえで、「実際のアプリケーション開発の中で必要な知識が出てきたら、順次これらを吸収する」というように、少し気楽にJavaによるWebアプリケーション開発を体験していただきたいと思います。
通常、JavaによるWebアプリケーションの開発をスタートするには、Javaに関する知識に加え、以下のような知識や環境のセットアップが必要です。参考までに読んでください。開発ツールを活用することによって、これら必要な作業の多くを自動化、あるいは効率的に進めることが可能になります。
サーブレットを利用したアプリケーション開発に必要な知識
|
本連載では「開発作業を支援するツール」として、Borland JBuilder Xトライアル版を利用します。製品をインストールするだけで、アプリケーションの開発に必要なすべてのコンポーネントが自動的にインストール/設定されます。そのため、追加で何らかの作業を行うことなく、Webアプリケーションを試すことができます。
Borland JBuilder Xトライアル版の入手はボーランドのWebサイトから申し込みが可能です。ここでトライアル版CD-ROMを申し込むと、無償でCD-ROMが郵送されてきますので、インストールガイドに従ってインストールしてください。
|
Webアプリケーションの基本原理 |
実際に試してみる前にWebアプリケーションとは何かについて簡単に触れておきましょう。Webアプリケーションとは、Webブラウザからのリクエストによって動的なコンテンツを提供するアプリケーションを指します。クライアントにWebブラウザがインストールされていれば、ネットワークに接続されているあらゆるクライアントにアプリケーション機能を容易に提供できるため、爆発的に適用範囲が増えていることは皆さんもご承知のとおりです。
クライアントとなるブラウザは、Webサーバに対しリクエストを投げ、これに対しサーバが動的にコンテンツを生成し、クライアントにコンテンツを提供します。
Webブラウザに動的なWebページを提供する代表的な方法には、CGIなど古くから使われている技術に加え、ここで学習するサーバーサイドJavaと呼ばれる技術が存在します。ここでは、初めに古くから使われている技術であるCGIについて復習をしておきましょう。
図1 Webアプリケーション(CGI) |
Webサーバは、クライアントから要求されたURLのパターンから、これがCGIに対するものであることを認識すると、該当のCGIプロセスを起動し、リクエストの内容を環境変数や標準入力を通じて伝えます。CGIは、これらを解析し、必要なレスポンス(HTMLドキュメント)を組み立て、その内容を標準出力から提供します。つまり、コマンドラインアプリケーションと同じように動作すると考えることができます。このようにCGIは非常に単純な仕組みで構築されていますが、リクエストのたびに新たなプロセスを起動する必要があることから、あまり大規模なシステムでの利用には適さないといわれていました。
HTTPプロトコル
WebブラウザとWebサーバの間の通信手順は、HTTP(Hyper Text Transfer Protocol:ハイパーテキスト転送プロトコル)として定義されています。HTTPプロトコルに基づいてサーバにリクエストを行う方法には、指定したURLに対するデータを要求するGETメソッド、データを添付してリクエストを行うPOSTメソッドなど、いくつかの命令パターンがあります。
HTTPの詳細については。連載:インターネット・プロトコル詳説(Master
of IP Network)を参考にするとよいでしょう。
|
サーブレットで動くWebアプリケーションとは |
CGIがWebサーバ上で動作するコマンドラインアプリケーションのように動作するのとは異なり、サーブレットはWebコンテナと呼ばれるJava対応のWebサーバ上で動作するJavaアプリケーションととらえることができます。
サーブレットを使用してアプリケーションを作成するときは、Java言語でクライアントからの要求に応じたHTMLを動的に生成するクラス(サーブレットクラス)を作成し、TomcatなどのWebコンテナに配備します。
HTMLを動的に生成するクラス(サーブレットクラス)は、一から作成するのではなく、その基本機能が実装されているjavax.http.HttpServletクラスを派生(拡張)して、オリジナルのコンテンツを生成するプログラムコードを記述します。
クライアントからのアクセスがあると、Webコンテナは、インストールされたサーブレットの中から、適切なサーブレットクラスのメソッドを呼び出し、レスポンスを受け取り、これをクライアントWebブラウザに返します。
図2 サーブレットの呼び出し |
HttpServletクラスとサーブレットのライフサイクル
一般にサーブレットを作成するときは、javax.http.HttpServletクラスを派生(拡張)して、オリジナルのコンテンツを生成するプログラムコードを記述します。そこで、派生(拡張)クラスの作成方法の前に、そのベースとなるクラスについて、確認しましょう。これらのWebコンテナの一部として提供されており、JBuilder X の場合では「<JBuilderX>/extras/jakarta-tomcat-4.0.6-src.zip」にソースコードが格納されています。
サーブレットは、図2にあるように、Webコンテナにロードされ、実行されるJavaクラスです。ここで、サーブレットがどのように呼び出されるのかを確認しましょう。サーブレットのライフサイクルを図示したものが図3です。
図3 サーブレットのライフサイクル |
図3に示したようにサーブレットは以下の順序で動作します。
- クラスファイルがサーブレットコンテナからJava VM上にロードされる
- 初期化メソッドが呼び出され、サーブレットが実行可能な状態となる
- クライアントからリクエストがあるとserviceメソッドが呼び出される
- 更新されたクラスが配備された場合や、コンテナがシャットダウンするときに、destroyメソッドが呼び出される
このように、サーブレットはWebコンテナに動作可能な状態として常に待機するので、クライアントからの呼び出しがあると即座に応答します。
1/2 |
INDEX |
||
第1回 サーブレットアプリケーションを体験しよう | ||
Page1 JavaによるWebアプリケーションを手軽に試して学習するには Webアプリケーションの基本原理 サーレットで動くWebアプリケーションとは |
||
Page2 実際にサーブレットを作ってみる |
「ツールでトライ!初めてのWebアプリケーション」記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|