サーブレット/JSP
1.3 サーブレット/JSP
これから「サーブレット」と「JSP」を、プログラムを作成しながら学んでいきます。その前に、それらの概要を説明します。
1.3.1 サーブレットとは
サーブレットは、正確にはJava Servlet(ジャバ サーブレット)と呼ばれ、JavaプログラムをWeb開発に使用する目的で考えだされたものです。
プログラム自体はJava言語で記述するため、「オブジェクト指向」や「マルチプラットフォーム」といったJava言語の特徴を備えています。また、サーブレットはアプリケーションサーバ上で動作するのも特徴の一つです。
通常のWebページであれば、Webブラウザからのリクエストに対して固定のテキストや画像ファイルなどを返します。一方、サーブレットは、Webブラウザからのリクエストに応じてプログラム処理を行い、動的な結果を返すことができます。
図 1.3.1: 動的な処理を行うサーブレット
Webサーバとアプリケーションサーバの違いWebサーバは、HTMLファイル(静的なページ)をWebブラウザに返すサーバのことを指します。
アプリケーションサーバは、プログラムを実行する環境を持ったWebサーバのことを指します。
サーブレットやJSPを使った動的なページをWebブラウザに返したい場合は、プログラムの実行環境を持ったアプリケーションサーバが必要です。
1.3.2 アプリケーションサーバとは
アプリケーションサーバとは、Javaプログラムで記述されたサーブレットを呼び出し、実行する環境を持ったWebサーバのことです。
サーブレットは通常のJavaプログラムと異なり、main()メソッドから実行されるのではなく、Webブラウザからリクエストがあった際にサーバから呼び出されて実行されます。このように、サーブレットを呼び出して実行する環境のことを「サーブレットコンテナ」と呼び、サーブレットコンテナを実装したサーバのことを「アプリケーションサーバ」と呼びます。なお、前節までの説明に使用した図では、Webサーバとアプリケーションサーバは別々に描かれていましたが、アプリケーションサーバには、Webサーバの機能を内部に持っているものも存在します。
本テキストではWebサーバの機能を内部に持った「Tomcat」と呼ばれるアプリケーションサーバを利用して学習していきます。
図 1.3.2: アプリケーションサーバとサーブレットコンテナ
1.3.3 JSPとは
JSP(JavaServer Pages)は、PHPなどと同じ「サーバサイドスクリプト言語」で、HTMLの中にJavaのソースコードを埋め込みます。
Webアプリケーションは、最終的にはHTMLとして出力されたデータをWebブラウザに返しますが、サーブレットではHTMLを生成する部分が非常に扱い難くなっています。そのHTML出力部分を扱いやすくするために生まれたのがJSPです。
HTMLとはHTMLは、簡単に言うと「Webブラウザに表示させる画面を作るための言語」で、Webページの項目の配置や構成を定義するために使われます。どの言語で作成されたWebページも最終的にはこのHTMLに変換されてブラウザに表示されます。
サーブレットにはメインロジックを記述し、JSPには画面を表示するプログラムを記述することで、効率の良いWebアプリケーションを実現することができます。また、システムが複雑になると、役割ごとにクラスやファイルを分けた方が効率よく開発を行うことができます。このように、役割を明確に分けて開発する設計パターンに「MVCモデル」と呼ばれるものがあります。
1.3.4 MVCモデル
MVCモデルとはWebアプリケーションをモデル(Model)、ビュー(View)、コントローラ(Controller)の3つの要素に分割する設計モデルです。それぞれの役割は以下の通りです。
・ Model
JavaBeansで作成されたJavaのクラスが担当し、プログラムのメイン処理やデータの保持、データベースの接続・操作などを行います。
・ View
JSPが担当し、Webブラウザからの要求に対してWebページを生成し、その結果画面の表示を行います。
・ Controller
サーブレットが担当し、プログラムの制御を行います。リクエストにあわせて適切なModel、Viewを呼び出し、処理を実行します。
3つの要素はプログラムの構造上独立しているので、あるプログラムが変更されても、他のプログラムへの影響が少なくて済みます。
図 1.3.3: MVCモデル