Javaコラム Javaエンジニアのためのお役立ちコラム

Java Servletとは?Java Servletを使う5つのメリット

2021年01月29日
SE
Java Servletとはどのようなプログラムなのでしょうか。
PM
サーバー上で動作するJavaプログラムの種類のひとつです。

Java Servletとは?

Java Servletとは、サーバー上で動作するJavaプログラムの種類のひとつです。Webサイトで利用者が「送信」ボタンをクリックするような操作を行うと、プログラム処理の命令は利用者が使っているWebブラウザからインターネットを介してWebサーバーに送られます。

Webサーバー側では、Java Servletが窓口となり、内部処理に移行させたり、利用者画面に結果を返したりするように処理の振り分けを行います。

サーブレットコンテナ

Java Servletがサーバー上で動作するためには、サーブレットコンテナという環境が必要になります。

サーブレットコンテナとは、クライアントからのHTTPリクエストを受け取る役割を担い、受け取ったリクエストをJava Servletに渡して処理させるという仕組みでサーバー側のJavaプログラムが動作します。

Java Servletの動作の流れ

Java Servletの役割は、クライアントから受け取った命令の振り分けです。HTTPリクエストには、GETとPOSTいずれかのメソッドが含まれており、Java ServletはGETなら画面返却、POSTなら処理命令を行います。

利用者がURLを入力して実行すると、そのURLに該当する画面が表示されますが、これがGETメソッドの処理です。ECサイトで「購入」ボタンをクリックすると、購買情報や支払い情報が確定されますが、これがPOSTメソッドの処理になります。

Java Servletを使う5つのメリット

Javaを使ったプログラミングでも、Java Servletを使わずにサーバー側プログラムを実装することも可能ですが、Java Servletを採用することにはメリットがあります。

ここでは、Java Servletを使って実装するメリットを5つ紹介します。実装方式を検討する際の参考にしてください。

Java Servletを使うメリット1:モジュール化されている

Java Servletで行う処理は定型的であり、モジュール化されています。モジュールとはプログラミングにおける部品の一種なので、Java Servletを追加するだけでWebサーバーの拡張が可能です。

Java ServletはJavaプログラムなのでOSやハードウェアに依存しません。また、一度呼び出されたJava Servletはメモリに常駐するので、二度目以降の処理は早く行えます。

Java Servletを使うメリット2:同時に複数の処理に対応できる

Java Servletはマルチスレッド対応です。マルチスレッドとは、同時に複数の処理を行える仕組みのことで、複数のリクエストがJava Servletに到達した場合、処理がはじかれることなく到達した処理を並行して実行します。

厳密には同時進行するわけではありませんが、マルチスレッド処理では、複数の処理を高速で切り替えながら処理していくため、並行処理として扱えます。Webシステムのような、同時に複数のリクエストが発生するシステムに向いています。

Java Servletを使うメリット3:プラットフォームに依存していない

Java Servletはその名にもあるようにJavaのプログラムであるため、OSやハードウェアなどに依存することがありません。サーバー環境がWindowsであっても、MacやLinuxであっても問題なく動作します。

クライアント側の仕組みはブラウザで動作するように構築するので、Java Servletに関連するモジュールのダウンロードが必要になることもありません。

Java Servletを使うメリット4:ライフサイクルを管理してくれる

Webサーバーが命令を受け取ってから処理を完了させるまでの流れは「ライフサイクル」と呼ばれますが、Java Servletはこのライフサイクルを管理する役目を担っています。

利用者はWebシステムでページ間の移動をしたり、処理を発行したりするため、多くのリクエストがWebサーバーに送られます。Java Servletは一度起動するとメモリに常駐するので、セッションが継続中の処理がスピーディに行われます。

Java Servletを使うメリット5:Javaのメリットをそのまま得られる

プラットフォームに依存しないことにも通じますが、Java ServletはJavaプログラムなのでどのような環境から接続されるのか、サーバーにはどのようなOS・ハードウェアを使うのかを意識せずに開発できます。

Java Servletは特別なプログラムではなく、あくまでもJavaで実装されたプログラムなので、Javaの持つメリットはすべて踏襲していると考えて問題ありません。

Java Servletを利用した2つの技術

Java Servletを使ったWebシステムを構築するときに、Java Servletとセットで利用する仕組みがあります。

ここでは、JSPとTomcatという2つの技術について紹介します。Java Servletによる開発を行うときに使うことになる技術なので、セットで覚えておきましょう。

JSP

JSPは「Java Server Pages」の略で、Java Servletで扱うWebシステムのクライアント側入出力を制御するプログラムです。

JSPの記述は、ブラウザ上の画面を形作る「HTML」中にJavaコードを埋め込む形で実装されます。画面表示の「静的」な部分はHTMLで記述し、サーバーとのやり取りに使うデータ入出力の「動的」部分をJavaで記述します。

JSPの動作の流れ

JSPの中では、HTML記述の部分と、サーバーからのレスポンスによりデータを作成する部分とが混在します。

JSPでテキストやHTMLタグ出力の記述がされた部分はそのまま出力し、サーバーからの情報を受ける部分では、Java Servletから返される情報をテキスト出力します。

最終的にJSPに記載されているHTMLタグやテキストと、サーバーから戻された情報から生成されたHTMLがブラウザ上に表示されます。

Tomcat

Tomcatは、無償で提供されているアプリケーションサーバーです。Tomcatはサーブレットコンテナとして機能しますが、WebサーバーのApacheとセットで使われることが多く、Javaを使ったWebシステム開発で活用されています。

Java Servletを書くときのポイント3つ

Java Servlet用にJavaプログラミングをするときは、気を付けておくべきポイントがあります。ここでは、Servletプログラミング記述で注意する3つのポイントを紹介します。

無駄のない実装をするためにも、プログラミング前にポイントを押さえておきましょう。

Java Servletを書くポイント1:環境

Java ServletはJavaのプログラムなので、ハードウェアやOSに依存しませんが、実行環境となるTomcatやWeblogicなどのWebアプリケーションサーバーとJavaのバージョンには気を配る必要があります。

Java Servletの開発を行ったり、テストを行ったりした環境と実行環境のアプリケーションサーバーの種類やバージョンが異なると、動作が異なることがあります。

Java Servletを書くポイント2:サーブレット

Java Servlet(サーブレット)は一度呼ばれるとWebサーバー上のメモリ上に常駐します。異なる利用者からのリクエストが届いた場合でも、同じServletで処理されます。

Servletのプログラム内に個別処理を記述すると、複数の利用者の情報が混在してしまい、正しい値で処理が行われない可能性があります。データベースアクセスして値を加工するような個別処理はServletには記述しません。

Java Servletを書くポイント3:JSP

JSPで定義されている変数は、Java Servletに渡される際は、インスタンスに変換されます。JSPは通常マルチスレッドで使われるので、同時に複数の人が使ったときに、JSPで扱う変数がServletに渡されても、後続の処理の変数で上書きされてしまう可能性があります。

シングルスレッドの環境であれば、JSPとServletの間で変数を使った値の受け渡しをしても問題ありません。

JavaアプレットとJava Servletの違いとは?

サーバー側でプログラムが実行されるJava Servletに対し、Javaアプレットは利用者が使っているクライアント側でプログラムが実行されます。

Webサイトでプログラムを実行しようとすると、プログラムがクライアントにダウンロードされ、実行はクライアント上でされていました。既に無償サポートが終了してしまった仕組みなので、これから開発したり、新たなシステムとして利用したりすることはないでしょう。

SE
自分で実際に使用してもっと理解を深めたいです。
PM
Javaを使った業務システム開発でJava Servletを使うことは多いです。さらに理解を深めていきましょう。

Java Servletについて理解しよう

Javaを使った業務システム開発では、Java Servletを使うことも多く、きちんと動作や注意点を理解していないと不具合を作りこんでしまうこともあります。

ServletやJSP、データベースアクセスなど、プログラムの分担をきちんと理解し、用途に合った仕組みを使って実装できるように心がけましょう。


Javaでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)