はじめに
この連載では、「GlassFish」という製品を利用して、Java言語に親しんでもらうことを目的としています。第2回目の今回は、簡単なWebアプリケーションを作成しながら、ServletやJSP(JavaServer Pages)についての理解を深めていきたいと思います。
対象読者
- Javaでなにかしらのアプリケーションを作成したことのある方
- Javaの変数の宣言や、if文・for文・while文の制御文など簡単な文法を知っており、アプリケーションを作成したことのある方
オブジェクト指向プログラミングができなくとも構いません。徐々に学んでいければと考えています。また、学びやすいWebアプリケーションをサンプルとするので、Webアプリケーションとは違った分野を勉強したい方には当連載は向いていません。
仕様書バージョン
Java EE 5を使用するため、主な技術要素のバージョンは以下の通りです。EJBに関しては応用編で扱う予定です。
- Servlet:2.5
- JSP:2.1
- JSTL:1.2
- JTA:1.1
- EJB:3.0(応用編)
Webフレームワークがなかった頃
ちょうど2000年に筆者はJava EE(当時はJ2EEと呼んでいましたが、現在の言い方に合わせJava EEで統一します)を使ったプロジェクトに初めて参画しました。Strutsなどがない時代であったため、プロジェクト独自のフレームワークを作成しました。データベースはオブジェクトデータベースやリレーショナルデータベース(以降RDB)も使っており、RDBのアクセスはCの部品があったことと、当時はJavaでは性能が出ないと言われていたため、JavaからCを呼び出すためにCORBAを使用していました。
フレームワークを使わないプロジェクトは今では考えられません。煩雑さを隠してくれ、繰り返し現れるような処理を行ってくれたり、定型的なコーディングを行うことにより誰が見ても分かりやすいプログラムを作成することを可能にしてくれました。ただし、フレームワークを使うとJavaの基礎的な部分が隠ぺいされてしまい、本来の機能や責務が見えづらくなっていることも確かです。
当連載はフレームワークを使うなと主張するつもりはまったくなく、フレームワークを熟知し、さらにその奥にあるものが理解できると、より品質が高いものが作成でき、違ったフレームワークを使うことになった場合でも、基礎の理解があるため柔軟に対応できるようになります。
Servletとは何か
今回は非常に簡単なWebアプリケーションを作ることで、ServletやJSP(JavaServer Pages)を深く理解していきたいと考えています。Javaを使用したWebアプリケーションではServlet、JSP(JavaServer Pages)、JSP STL(JavaServer Pages Standard Tag Library)は欠かせない存在です。しかし、これら3つは相互に関連・依存しているわけではなく、図1のようにServletの上にJSPが存在し、JSPの上にJSP STLが乗っかっているという関係です。JSP STLはJSPの存在を前提とし、JSPはServletの存在を前提としていると言えば少しは分かりやすいでしょうか。つまり、JSPやJSP STLを理解するにはServletの理解が不可欠ということを表しています。
ちなみにServletやJSPのことをWeb Componetと呼びますが、これらはWeb Container上で動作します。後ほど説明するServletのライフサイクルの管理もこのContainerが行います。