Javaサーブレット(Servlet) とは
Javaサーブレット(Servlet) は、JavaでWebシステムを開発するときに利用されており、動的なWebページのシステムを作成することができるJavaのプログラムです。Javaサーブレットを用いて、多くのショッピングサイトやネットバンキングなどのWebシステムが構築されています。
この記事では、Javaサーブレットについて知りたい方のために、Javaサーブレットの概要や使用するメリット、動作の流れなどについて解説していきます。Javaサーブレットがどのようなものかを理解して業務に役立ててください。
Javaサーブレットの概要
Webサイトにアクセスするたびに文章や画像が変わったり、閲覧するユーザに適した内容が表示されたりするWebページのことを、動的ページと呼びます。
動的ページを作成するには、PHPやJavaScriptを利用するなど多くの手段があります。その中でも、Javaサーブレットは、Webサーバを動的に生成したり、データの処理を行ったりできるJavaで書かれたプログラムで、Webサーバ(バックエンド)で動きます。単に「サーブレット」と呼ばれることもあります。
Javaサーブレットは画面表示を担当するJSPと一緒に使われる
Javaサーブレットは、Webブラウザの画面に関する処理よりも、画面から送られたリクエストに応じて、データを処理する方が得意です。
そのため、Javaサーブレットは画面表示を行うJSP(Java Server Pages)とともに使われます。Javaサーブレットは一般的に、リクエストを受けとってレスポンスを作成するところまでを行い、表示をJSPが行います。
Javaサーブレットを使用するメリット
ここでは、動的サイトを作成するのにJavaサーブレットを使うメリットを解説します。
ライフサイクルを管理できる
ライフサイクルとは、処理が始まって終わるまでの流れのことで、Javaサーブレットを使用することでライフサイクルを効率よく管理することができます。
ユーザがWebサイトにアクセスするとき、ログインしてから他のサイトに移動したり、戻ってきたりと、何度もHTTPリクエストを行うことも多くあります。1回の訪問は「セッション」とも呼ばれます。
Javaサーブレットは、Webサイトを訪れるユーザのセッションを管理して、データをメモリに保持することで、返答までのスピードを速めることができます。
マルチスレッドに対応している
Javaサーブレットはマルチスレッドに対応しており、複数のリクエストを並行処理することが可能です。これにより、複数のユーザーからのアクセスに対して効率的に対応することができます。
Webサーバに複数のリクエストがあった場合、シングルスレッドの場合は処理が順番待ちになって効率が悪くなってしまいますが、Javaサーブレットではマルチスレッドで高速に処理を切り替えながら動作します。これにより、効率良くリクエストに応じた処理を行うことができます。
しかし、マルチスレッド処理は複数の処理を高速で切り替えながら同時並行的に実施できる分、リソースを競合状態に陥らせることもあります。そのため、Javaサーブレットの開発においてはスレッドセーフなコードを書くよう注意を払う必要もあります。
プラットフォームに依存せず動作する
Javaというプログラミング言語は、プラットフォームに依存しないプログラミング言語であり、Javaサーブレットはその特徴を受け継いでいます。
JavaサーブレットはOSやハードウェアに依存しないため、WindowsやMacOS、Linuxなど、どのプラットフォームでも動作することができます。
また、クライアント側はブラウザで動作するように作るため、クライアント側にプログラムをダウンロードする必要がなく、どの端末からでも特に設定なしにプログラムを使用できるという利点があります。
画面表示を担当するJSPとは
JSP(Java Server Pages)はJavaサーブレットとセットで使われることが多く、主にWebページの画面表示を担当しています。ここでは、その概要やJavaサーブレットとの関係などについて解説します。
JSPの概要
JSPは、HTML内にJavaコードを埋め込んで動的にWebページを生成する技術です。 JavaサーブレットとJSPはペアで使われることが多く、Javaサーブレットは計算処理やデータベースアクセスを担当し、JSPはJavaサーブレットが処理したデータを受け取り、クライアントに返す役割を持っています。
JSPの書き方
JSPの構文は、HTMLの中でコンテンツ内容を動的に変化させたい部分に、「<% 〜 %>」(スクリプトレット)を追加するというものです。スクリプトレットの中に記述した内容がJavaプログラムとして処理されます。
スクリプトレットなしのHTMLファイルの拡張子を「.jsp」に変えるだけでも、JSPファイルを作成することはできます。
JavaサーブレットとJSP
JSPは、実行前にJavaサーブレットに変換されるため、基本的には同じものと言えます。Javaサーブレットだけでも、1つ1つHTMLタグを表示するように記述すれば、JSPを使用した時と同様の機能のWebサイトを作ることが可能です。
しかし、画面表示にはそれに特化したJSPを使用し、バックエンド開発にJavaサーブレットを使って役割を別々にすることで、デザイナーとプログラマーの作業を分担し、開発の効率を上げることができます。
これにより、デザイナーは画面のUIなどに注力し、プログラマーはJavaサーブレットによりWebサーバー側の処理に集中することができ、それぞれの能力を発揮しやすくなります。
JSPの動作
JavaサーブレットとJSPの動作の例として、Webアプリケーションのログイン画面を挙げてみます。
Webサイトは、ページごとにサーブレットとJSPファイルをペアで持っています。ユーザがWebサイトのログインページににアクセスすると、JavaサーブレットはGETリクエストを処理し、JSPファイルに転送してHTMLページを返します。
ユーザがログインIDとパスワードを入力し、ログインボタンをクリックすると、サーブレットがログインIDとパスワードのデータを含むPOSTリクエストを処理し、検証を行った結果、ログイン成功または失敗のページに画面遷移します。
Javaサーブレットを動かすサーブレットコンテナとは
Javaサーブレットを動かすためには、サーブレットコンテナと呼ばれるアプリケーションが必要です。サーブレットコンテナは、Webコンテナとも呼ばれます。ここでは、いくつかのサーブレットコンテナを紹介します。
サーブレットコンテナ(Webコンテナ)とは
ブラウザからHTTPリクエストが来ると、直接Javaサーブレットが受け取るのではありません。まずはサーブレットコンテナが受け取り、Javaサーブレットを起動して、Javaサーブレットにより処理が行われます。
サーブレットコンテナは、このようにJavaサーブレットの起動を管理するだけでなく、データベース接続管理やユーザ識別のためのセッション管理も行います。JSPの動作にも、サーブレットコンテナが必要です。
サーブレットコンテナの仕様はJava EE(Java Enterprise Edition)の一部として定められており、この規定に従って作られたJavaサーブレットは、どのコンテナでも動作するようになっています。
サーブレットコンテナの種類
サーブレットコンテナにはいくつもの種類があります。その中で代表的なものを以下にピックアップします。
■Tomcat Tomcatは、簡易的なWebサーバーの機能も含んだサーブレットコンテナです。Apache Tomcat Project 内で開発されているオープンソースソフトウェアで、世界中で非常に多くのWebシステムの開発で使われています。
Tomcatは一般的にはWebサーバーであるApacheと連携して使用され、静的処理をApacheで行い、動的処理をサーブレットコンテナのTomcatで行うという構成で利用されます。
TomcatのWebサーバーとしての機能が備わっていますが、Webサーバとしての専門性に特化しているわけではありません。そのため、Tomcatが専門であるサーブレットコンテナの役割を担い、Webサーバとしての働きは、スペシャリストであるApacheを用います。
■Glassfish Glassfishは、オープンソースでJava標準仕様のフレームワークであるJakarta EEに準拠したサーブレットコンテナです。Glassfishには、サーブレットコンテナだけでなく、リソース管理やトランザクション管理が充実しており、大規模開発に対応できる柔軟さを持っているというメリットがあります。
【参考】:Eclipse GlassFish
■Jetty Jettyは、Javaだけで開発されたJavaサーブレットコンテナです。軽量で起動が早く、クライアントからのリクエストに対して非同期で待機が行われる非同期HTTPサーバであることから、クライアントからの短時間での大量のリクエストに応じることができるという特徴をもっています。
【参考】:Eclipse Jetty | The Eclipse Foundation
Javaサーブレットを学んでWebアプリ開発に役立てよう
ここまで、JavaサーブレットとJSP、そしてサーブレットコンテナについて解説してきましたが、Javaサーブレットの動的サイト開発の概要が理解いただけたでしょうか。
JavaサーブレットとJSPを使ったWeb開発は、世界中で広く行われています。JavaサーブレットとJSPのそれぞれの役割をよく学んで、Webアプリの開発に役立ててください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから