発注ラウンジは、システム開発の発注に必要な様々なノウハウや発注ナビで実際に開発された発注者様のインタビューなど、発注担当者様のための情報発信サイトです。

サーブレット(Java Servlet)とは?【概要を5分で把握】

Servlet-min

サーブレット(Java Servlet)とは、Webサーバ上(バックエンド)で動くプログラムのことで、プログラミング言語のJavaを使って作成されています。
動的なWebページの配信システムを実現するためのJavaプログラムです。
 

目次

 

システム開発会社選びはプロにお任せ完全無料で全国2000社以上からご提案

200x200b

・ベストマッチな発注先が見つかる
・たった1日のスピード紹介
・ITに詳しいコンシェルジュがサポート
・ご相談~ご紹介まで完全無料

 

 

サーブレット(Java Servlet)とは

サーブレット(Java Servlet)とは、Webサーバ上(バックエンド)で動く、Javaで書かれたプログラムのことです。このJavaプログラムは、ユーザーが検索結果画面から気になるページをクリックする等、クライアント側からリクエストを送ると、その要求をサーブレットが受けてデータの処理をしたり動的なWebページを生成したりします。動的なWebページとは、同じURLをリクエストされた場合でもアクセスした人に応じてページの見え方を変えて提供するページのことです。例えばECサイト(ネットショッピングができるサイト)やYouTubeなどの動画サイトで、自分の閲覧履歴やお気に入りに追加した情報などを加味してページが構成され、アクセスした人それぞれの好みや行動の傾向に合わせたページが提供されます。サービス満足度を高めるため、ユーザーの求めるコンテンツを見やすい位置に配置する動的なWebページを使用しています。動的なWebページを提供する方法はいくつかありますが、そのうちの1つの方法としてサーブレットが利用できます。

 

サーブレットコンテナとは

サーブレットはJavaプログラムですので、実行環境が必要となります。その実行環境となるソフトウェアがサーブレットコンテナです。厳密に言うと、HTTPリクエストはサーブレットコンテナが受け取り、サーブレットコンテナがサーブレットに対して処理の命令を出す流れとなります。

 

サーブレットの動作の仕方について

サーブレットは、クライアント側(ユーザー)からHTTPリクエストを受け取ると、そのリクエストがGETメソッドかPOSTメソッドかを判断します。HTTPのGETメソッドは指定したURLの情報を探し出してきて送り返して欲しいというリクエストで、HTTPのPOSTメソッドは送ったデータを基に処理して返して欲しいというリクエストです。GETメソッドの場合にはサーブレットのdoGetメソッドを呼び出し、指定のURLから探し出した情報は後ほど紹介するJSPに送られ、そこからクライアント側(ユーザー)に情報を届けます。POSTメソッドの場合には、サーブレットのdoPostメソッドを呼び出し、必要なデータ処理を行い、サーブレットからクライアント側(ユーザー)に返答します。

上記の内容を理解しやすいのが、会員サイトにログインする場合の例です。まずは検索画面にURLを打ち込んで検索すると(GETメソッドを使ってHTTPリクエストを送ると)、ログインページが表示されます。そのログインページにIDやパスワードを入力し、送信ボタンを押しますが、このリクエストがPOSTメソッドでのリクエストです。受け取ったサーブレットは、ログイン情報が正しければ該当の会員ページへリダイレクトする処理を、正しくなければログイン失敗のページへとリダイレクトする処理をします。

■サーブレットの動作イメージ図

サーブレットの動作

 

サーブレットを使うメリットとは

サーブレットを使うメリットは大きく分けて4つあります。

 

メリット1:ライフサイクル管理

ライフサイクルとは、処理が始まってから終了するまでの一連の流れのことです。ホームページを見るときには、クリックして他のページに移動したり、ログインしたりと、HTTPリクエストを複数回行うことも少なくありません。1回1回リクエストが送られる度に起動するのでは、返答までの速度が遅くなってしまいます。そこで、1回の訪問(セッション)を管理して、1度リクエストが送られてきたら、メモリに常駐してデータを維持することで返答までのスピードを速めることができます。

 

メリット2:マルチスレッド対応

マルチスレッドとは、同時に複数のタスクを処理することです。複数のタスクをリクエストされると、プログラムは順番にこなしていくことになりますが、サーブレットの場合にはマルチスレッドに対応しているため、1秒間に数百回という速さで複数の処理を切り替えながら動作してパフォーマンスの向上を図ります。仮に処理Aと処理Bがある場合、処理Aを終えてから処理Bを行うよりも、同時並行で処理Aと処理Bを進めると合計の時間が短くなります(ただし、マルチスレッド化するとパフォーマンスが落ちることもあります)。このように複数のリクエストを行った場合や、複数のユーザーからのアクセスがあった場合なども効率良く対応することが可能です。

■マルチスレッドのイメージは以下の通り

Servlet_multi

 

メリット3:プラットフォームへの非依存

サーブレットはプラットフォームに依存しないJavaというプログラミング言語で作成されたプログラムのため、プログラム自体もOSやハードウェアなどのプラットフォームに依存しません。つまり、WindowsやmacOS、Linuxのいずれであっても動作することが可能です。そのため、OSやハードウェアによって異なる対応をするプログラムを作成する必要はありません。また、プログラムを使用できるようにクライアント側の端末にアプリケーションをダウンロードさせるものもありますが、サーブレットの場合にはダウンロードさせる必要もありません。どの端末からでも設定なしにプログラムを使えるのは、サーブレットを使用するメリットの1つです。

 

メリット4:追加するだけで機能拡張

サーブレットはモジュール化されています。プログラムによっては、導入するために他の部分を書き換えなければ導入できないものもありますが、サーブレットに関しては、サーブレットの部分を追記するだけで機能を拡張できるというメリットがあります。

 

JSP(Java Server Pages)とは

JSP(Java Server Pages)は、サーブレットとペアで使われます。サーブレットはJavaで書かれたプログラムのため、HTMLで静的なコンテンツを出力するのは苦手です。もっと厳密に言うと、実際のコードを見ると分かりますが、静的なコンテンツの量が多くなるとその分だけprintメソッドを書かなくてはならず、読みづらくなってしまいます。その一方で、JSPはHTMLの記述の中にJavaのコードを埋め込むことになります。静的なコンテンツを出力する際には良いのですが、動的なコンテンツの量が増えると、スクリプトレット(「<%」と「%>」で囲まれた部分)が増えて読みづらくなってしまうのです。具体的にどうなるか、「Hello World」を出力する簡単なプログラムのコードを見てみましょう。

 

■サーブレットのコード(HelloWorld.java)

import java.io.*;

 import javax.servlet.*;

 import javax.servlet.http.*;

 public class HelloWorld extends HttpServlet {

   public void doGet(HttpServletRequest request,

      HttpServletResponse response)

     throws ServletException,IOException {

     response.setContentType(“text/html;charset=Shift_JIS”);

     PrintWriter out=response.getWriter();

     out.println(“<html><head>”);

     out.println(“<title>Hello, World!!</title>”);

     out.println(“</head><body>”);

     out.println(“<p>Hello,World!!</p>”);

     out.println(“</body></html>”);

   }

 }

 

■JSPのコード(HelloWorld.jsp)

<html>

 <head>

 <title>Hello, World!!</title>

 </head>

 <body>

 <% out.println(“<p>Hello,World!!</p>”); %>

 </body>

 </html>

 

※@IT「サーブレット/JSPの役割を理解する」より引用

 

これらの弱点を補うように、サーブレットとJSPをペアで使っています。サーブレットは計算処理やデータベースへのアクセスを担当し、JSPではサーブレットが処理したデータを受け取り、クライアント側に返答する役割を担います。

 

Javaアプレットとは

サーブレットはWebサーバ上(バックエンド側)で動くJavaプログラムなのに対して、JavaアプレットとはWebブラウザ上(クライアント側)で動くJavaプログラムのことです。ただし、2019年1月にJava SE 8の無償サポートが終了しました(非商用は2020年12月まで無償サポート/有償サポートは2025年3月まで有り)。残り数年したら実質アプレットは使用できなくなります。

 

以上、サーブレット(Java Servlet)に関してご説明しました。簡単におさらいすると、サーブレットとはWebサーバ上(バックエンド)で動く、Javaで書かれたプログラムのことです。サーブレットを使えば、ホームページにおいてユーザー個人に適したコンテンツを動的に配信できます。個人に適したコンテンツを配信できれば、満足度も高くなりますし、ECサイト(ネットショッピングができるサイト)では購入額が高くなる可能性もあるでしょう。ユーザーのエンゲージメントを高めるため、あるいはCV(購入)の数を増やすためにも、サーブレットを使ってのシステム開発を検討していきましょう。

 

システム開発会社選びはプロにお任せ完全無料で全国2000社以上からご提案

200x200b

・ベストマッチな発注先が見つかる
・たった1日のスピード紹介
・ITに詳しいコンシェルジュがサポート
・ご相談~ご紹介まで完全無料

 

 

■Javaシステム開発の関連記事

 8218a7153e73dbe7fa0c8e2a74b127fa2-640x448Javaシステム開発でおすすめの開発会社10社

 

 

 Java1-min-640x433Javaとは?世界中で利用されるプログラミング言語の人気の理由

 

関連する記事

PAGETOP