2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java Web開発の原点】IT初学者でも絶対にわかる「サーブレット」と「JSP」の違いと役割分担

2
Posted at

Javaの学習を進め、Webアプリケーション開発の領域に入ると必ず登場する2つの大きな壁、それが「サーブレット(Servlet)」「JSP(JavaServer Pages)」です。

「どちらもサーバー側でJavaを動かす技術みたいだけど、何が違うの?」
「基本情報技術者試験の勉強で単語は見たけれど、具体的なイメージが湧かない……」

そんな悩みを抱えていませんか?

この記事では、プロのシニアエンジニアが、身近な例え話(メタファー)を交えながら、サーブレットとJSPの仕組み、違い、そしてなぜ2つに分かれているのか(MVCモデル)を分かりやすく解説します。


本記事の全体構成(目次)

  1. 結論:サーブレットとJSPは「動的なWebページを作るJavaの兄弟技術」
  2. サーブレット(Servlet)とは?:Javaの中にHTMLを書く「制御のプロ」
  3. JSP(JavaServer Pages)とは?:HTMLの中にJavaを書く「見た目のプロ」
  4. なぜ2つに分かれているの?「MVCモデル」による分業の魔法
  5. 一覧で整理!サーブレットとJSPの比較表
  6. 基本情報技術者試験で狙われる「裏側の仕組み(Webコンテナ)」
  7. 2026年現在の立ち位置:Spring BootやJakarta EEとの関係性
  8. まとめ & さらに学びを深める参考リンク集

1. 結論:サーブレットとJSPは「動的なWebページを作るJavaの兄弟技術」

結論からお伝えします。サーブレットとJSPは、どちらも「サーバー側で動的にHTML(Webページ)を生成して、ブラウザに返すためのJavaの技術」です。

ユーザーがボタンを押したタイミングによって画面の表示内容を変えたり、データベースから検索した結果を画面に表示したりするシステム(動的システム)を作るために存在します。

しかし、そのアプローチ(得意分野)が真逆です。

  • サーブレット:Javaプログラムが主役。プログラムの中にHTMLを無理やり埋め込む。
  • JSP:HTMLファイルが主役。HTMLの中にJavaプログラムをパーツとして埋め込む。

現代のWeb開発では、この2つの得意分野を活かして「役割分担(分業)」をさせるのが鉄則となっています。


2. サーブレット(Servlet)とは?:Javaの中にHTMLを書く「制御のプロ」

サーブレットの正体は、「サーバー上で動くJavaのクラス(プログラム)」です。
ブラウザからの「このデータを保存して」「検索して」というリクエスト(要求)を受け取り、計算をしたり、データベースとやり取りしたりする「裏方の制御」が大の得意です。

💡 レストランでの例え話:
サーブレットは、厨房で黙々と料理を作る**「敏腕シェフ」**です。
お客さんの注文(リクエスト)に応じて、肉を焼いたりソースを作ったり(ロジックの処理)を正確に行います。

具体的なコードのイメージを見てみましょう。

package com.example;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        // 文字コードの設定
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        // Javaコードの中でHTMLを出力する
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head><title>Servlet Sample</title></head>");
        out.println("<body>");
        out.println("<h1>こんにちは!サーブレットの世界へ</h1>");
        out.println("<p>これはJavaプログラムが生成した画面です。</p>");
        out.println("</body>");
        out.println("</html>");
    }
}

Javaのコードの中に、out.println() を使って無理やりHTMLのタグを書き込んでいるのが分かります。
これ、短いHTMLなら問題ありませんが、何百行もある複雑なデザインのWebページをこの方式で書こうとすると、文字列のプラス結合やダブルクォーテーションだらけになり、コードが読めなくなってしまいます。

そこで「デザイン(HTML)をベースに楽に書ける仕組みが欲しい」という要望から生まれたのがJSPです。


3. JSP(JavaServer Pages)とは?:HTMLの中にJavaを書く「見た目のプロ」

JSPの正体は、「HTMLベースのファイルに、Javaコードを少しだけ埋め込める技術」です。ファイルの拡張子は .jsp になります。
見た目のデザイン(画面表示)を作るのが大の得意です。

💡 レストランでの例え話:
JSPは、出来上がった料理をお皿に綺麗に盛り付け、お客さんのテーブルへ運ぶ 「ホールスタッフ(接客係)」 です。
お客さんから直接見える「華やかな表舞台」を担当します。

具体的なコードのイメージを見てみましょう。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP Sample</title>
</head>
<body>
    <h1>こんにちは!JSPの世界へ</h1>
    <p>基本は普通のHTMLファイルと同じように書けます。</p>
    
    <%-- JSPタグを使ってJavaのコードを埋め込む --%>
    <p>現在のサーバー時刻は: <strong><%= new java.util.Date() %></strong> です。</p>
</body>
</html>

ベースは完全なHTMLです。しかし、<%= ... %> という特殊なタグ(スクリプトレットや式言語などと呼ばれます)を使うことで、ピンポイントでJavaのプログラム(ここでは現在時刻の取得)を埋め込んでいます。

これなら、Javaを詳しく知らないWebデザイナーであっても、HTMLやCSSを修正する感覚で画面のデザインを手軽に変更できます。


4. なぜ2つに分かれているの?「MVCモデル」による分業の魔法

「最初からどちらか片方に統一すればよかったのでは?」と思うかもしれません。
しかし、1つのファイルに「データの計算処理」と「画面のデザイン」を同時に書くと、コードが複雑怪奇になり、バグの温床になります。

そこで、Web開発の世界では「MVC(Model-View-Controller)モデル」という設計思想を用いて、これらを明確に分業させています。基本情報技術者試験でも非常によく出題される重要な概念です。

  • Controller(制御):サーブレットが担当
    ブラウザからのリクエストを最初に受け取る総合窓口です。入力されたデータのチェックや、次のModelへの命令、次にどの画面(JSP)を表示するかの割り振りをコントロールします。
  • Model(ビジネスロジック):通常のJavaクラスが担当
    システムの本体です。計算処理、データベースへの値の保存や検索など、純粋な「業務処理」を行います。
  • View(画面表示):JSPが担当
    Controllerから受け取った処理結果のデータを、HTMLに綺麗に盛り付けてユーザーのブラウザに表示します。

この3つの連携によって、1つのWebアプリケーションが安全かつ効率的に動作します。


5. 一覧で整理!サーブレットとJSPの比較表

2つの特徴と違いを一覧表にまとめました。頭の中の整理に活用してください。

項目 サーブレット(Servlet) JSP(JavaServer Pages)
ファイルの拡張子 .java .jsp
ベースとなる記述 Javaプログラムがベース HTMLがベース
MVCモデルの役割 C(Controller:司令塔・制御) V(View:画面表示・見た目)
主な記述内容 データの受け取り、分岐、Modelの呼び出し HTMLタグ、データの表示用タグ
メリット 複雑な条件分岐やデータ処理が書きやすい 画面のデザインやレイアウトの調整が簡単
デメリット HTMLを文字列として書くためデザインが苦行 Javaのロジックを大量に書くと泥沼化する

6. 基本情報技術者試験で狙われる「裏側の仕組み(Webコンテナ)」

基本情報技術者試験の受験者は、表面上の違いだけでなく、「サーバーの内部でどう動いているか」という仕組みを理解しておく必要があります。試験で狙われやすいポイントは以下の2点です。

① Webコンテナ(サーブレットコンテナ)の存在

サーブレットやJSPは、パソコンで普段動かすJava(public static void main から始まるプログラム)のように単体でダブルクリックしても動きません。
「Webコンテナ(サーブレットコンテナ)」と呼ばれる専用の実行環境ソフトウェアが必要です。代表的な製品には、オープンソースの Apache Tomcat(トムキャット) があります。

② JSPは裏側で「サーブレット」に変換されている!

驚くべきことに、JSPファイルはそのまま実行されているわけではありません。
ユーザーからJSPへ初めてアクセスがあった際、Webコンテナが裏側で以下のステップを自動的に行っています。

  1. .jsp ファイルを解析する
  2. 自動的に .java のサーブレットソースコードへ翻訳する(すべてのHTMLが out.println に変換される)
  3. Javaのコンパイラを使い、.class ファイル(バイトコード)にコンパイルする
  4. メモリ上にロードして実行する

つまり、「JSPの正体は、書き方をHTML風にしたサーブレットそのもの」なのです。Webコンテナがこの翻訳を自動でやってくれるからこそ、私たちは楽に画面を作ることができます。


7. 2026年現在の立ち位置:Spring BootやJakarta EEとの関係性

「サーブレットやJSPって、昔の古い技術なんじゃないの?」という声を耳にすることがあるかもしれません。

確かに現代のJava開発では、生のサーブレットやJSPをゼロからガリガリ書くケースは減っています。現在は Spring Boot という強力なフレームワークを使うのが業界の標準(主流)です。

しかし、Spring Bootの内部(背後)では、今でもサーブレット(DispatcherServlet)がすべてのリクエストを受け取る中心核として大活躍しています。

また、長年「Java EE」と呼ばれていたエンタープライズ向け仕様は、現在はEclipse財団に移管され、「Jakarta EE」という新しいブランド名で進化を続けています。パッケージ名が javax.servlet から jakarta.servlet に刷新され、2026年現在も最新仕様(Jakarta EE 10/11など)がリリースされ、クラウド環境への最適化が進んでいます。

土台にあるサーブレットの仕組みを理解しているエンジニアは、Spring Bootなどのモダンな技術を使った際にも、トラブルシューティングや内部の挙動理解が圧倒的に早くなります。


8. まとめ

  • サーブレットはJavaベースで制御(Controller)を担当する。
  • JSPはHTMLベースで画面表示(View)を担当する。
  • 2つをMVCモデルに則って役割分担させることで、保守性の高いシステムができる。
  • JSPは実行時、Webコンテナによって自動的にサーブレットへ変換・コンパイルされている。
  • 現代主流のSpring Bootの裏側でも、サーブレットの仕組みは現役で動き続けている。

基礎をしっかり押さえておけば、試験対策だけでなく、実務のWebアプリケーション開発でも迷うことはなくなります。一歩ずつ、理解を深めていきましょう!


さらに学びを深める参考リンク集

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?