Rainbow Planet (GT×IT×SP×SA)

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

01_IT技術 (Technology)

サーブレットとは?その役割やHelloWorldサンプルコードのご紹介

投稿日:2019年9月1日 更新日:

(0)目次&概説

(1) サーブレットの基本
 (1-1) サーブレットとは?
 (1-2) サーブレットの前身技術との比較
 (1-3) サーブレットとJSPの違い
 (1-4) サーブレットのHelloWorld
(2) サーブレットコンテナの基本(※別ページ)

(1) サーブレットの基礎情報

(1-1) サーブレットとは?

動的にWebページを作成するための技術で、実態はWebサーバー上で実行するJavaプログラムです。似たような事を実現できる技術として「JSP」も存在しますが、JSPはHTMLベースで記述されるのに対して、サーブレットはベースはJavaプログラムで記述されています。
サーブレットはJSPと異なり出力には出力命令の記述が必要で、処理ロジックを記述出来ることを強みとし、コントローラーとしての役割を果たします。

またサーブレットがなぜ必要か?という点について、JSPに全てのロジックを入れてしまうと、可読性や保守性が損なわれてしまいます。「ただ動けばよい」はNGで、長い視点で見た保守性を考えるとサーブレットが必要となります。JSPに埋め込むJavaコードは「出力に直接関係する」データがふさわしく、逆に「出力に直接関係しない」データはServletに記載するのが望ましいです。

観点 JSP Servlet
用途 MVCモデルの「View」の役割を果たします。Modelから受け取ったデータを画面に表示したり、Viewから入力したデータをModelに渡したりします。 MVCモデルの「Model」の役割を果たします。Viewの入力欄からデータを読み取り、ModelとViewに適切な調整を施します。
特徴 ・HTMLベースの中に部分的にJava言語を組み込んでいる ・Javaプログラムそのもの
記述内容 出力(画面表示)に直接関係する内容のJavaコードを記載する。 出力(画面表示)に直接関係しない内容(処理ロジックなど)のJavaコードを記述する

 >目次にもどる

(1-2) サーブレットの前身技術との比較

CGI(Common Gateway Interface)と比較すると以下の利点があります。

<Java Servlet利点>
・マルチスレッド方式のためクライアント毎にプロセス起動しない
・プラットフォームに依存しない(JavaVM上で動作するため)
・セッション管理の機能がある(同一クライアントとの一続きの処理が続く間、そのデータを保持する)

CGIはクライアントから要求がある度にプロセスを1つずつ起動していくため、要求数が多くなるとレスポンスに影響が出るという問題がありますが、サーブレットは各要求に対してプロセス内のスレッドを割り当てて処理する事でこの問題を解決しています。

<参考>マルチスレッドとマルチプロセス
マルチスレッドは一般的にマルチプロセスよりも効率が良いが、スレッド間でメモリを共有するため、排他制御が必要となる(スタックはスレッド毎に保有)。

 >目次にもどる

(1-3) サーブレットとJSPの違い

JSPは内部でサーブレットに自動変換されるため、実行する過程においてはサーブレットになっています 。下図はJSPの実行の流れを表現したものですが、JSPはサーブレットコンテナによりサーブレットに変換され(①)、その後コンパイルされて”.class”のファイルが生成され(②)、最終的に実行されます(③)。

 >目次にもどる

(1-4) サーブレットのHelloWorld

サーブレットのHelloWorldのプログラムを示します。特に23~29行目がJSPで同じ内容を記述する際に対応してくる部分になります。逆に残りの部分はJavaやサーブレットのお約束事コードです。

package studyc;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorldServlet
 */
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
				response.setContentType("text/html; charset=UTF-8");
                PrintWriter out = response.getWriter();
                out.println("<!DOCTYPE html><html><head><meta charset='UTF-8' />");
                out.println("<title>Hello Rainbow !</title>");
                out.println("</head><body>");
                out.println("<p><font size='20'>Hello Rainbow Engine !</p>");
                out.println("</body></html>");
        }
 }

 

上記HelloWorldを実行すると以下のような出力になります。

 
目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-01_IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

VBAによるマトリクスの行列を反転させて転記するプログラム

(0)目次&概説 (1) マクロ概要 (2) 使用方法 (3) アルゴリズム概要 (4) プログラム (1) マクロ概要 マトリクス形式で表現されたデータの行と列を入れ替えるプログラムです。 (※Ex …

ハワイで海外挙式したい人向けモアナチャペルの費用や準備スケジュールの紹介(実体験)

この記事ではハワイで海外挙式したい人に向けての参考情報として「モアナチャペル」での挙式を例に挙げて「費用」と「スケジュール」と「挙式当日の流れ」の3点に焦点を当ててご紹介します。少しでも参考になれば幸 …

さくらVPS(Linux)にリモートデスクトップ環境を構築する方法

Linuxのサーバーにリモートデスクトップ環境を構築する手順について解説します。 <目次> >0.背景・目的・前提条件 >1.VNCサーバのインストール >2.VNCサーバの設定ファイル編集 >3.V …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その3)

目次 (5)リスナーの作成(netca)  (5-0)リスナーについての概要  (5-1)netcaの起動(netca)  (5-2)リスナー設定  (5-3)リスナー名の設定  (5-4)リスナーの …

VBAによる郵便番号の正規表現マッチ確認関数&置換関数の作成

(0)目次&概説 (1) 正規表現とは (2) 正規表現はどのような場面で利用される? (3) VBAによる正規表現の簡易チェックツール  (3-1) 郵便番号を抽出したい  (3-2) 正規表現が正 …

Top