GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • メインページ
  • コミュニティ・ポータル
  • 最近の出来事
  • 新しいページ
  • 最近の更新
  • おまかせ表示
  • 練習用ページ
  • アップロード (ウィキメディア・コモンズ)
  • 特別ページ
  • ヘルプ
  • 利用案内
  • 井戸端
  • お知らせ
  • バグの報告

This view

  • Original page
  • New address

GeezerVison is showing ja.wikipedia.org — Java Servlet - Wikipedia

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "Java Servlet" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL
(2021年6月)

Jakarta Servlet(ジャカルタ サーブレット)とは、Eclipse Foundationが開発している、サーバ上でウェブページなどを動的に生成したりデータ処理を行うために、Javaで作成されたプログラム及びその仕様で、Jakarta EE Platformの一部。Java 8まではJava Servlet(ジャバ サーブレット)という名称で、Java Platform, Enterprise Editionの一部だった。単にServlet(サーブレット)と呼ばれることが多い。この機能を用いてショッピングサイトやオンラインバンキングなどをはじめとする多種多様な動的なWebサイトが構築されている。

概要

MVCアーキテクチャにおけるServlet, JSP, JavaBeansの位置づけ

Servletはサーバサイド技術として登場した。

同様の技術(すなわち対抗技術)としてはPerlなどを用いたCGI、PHPプログラムのプロセスをApache HTTP Server上で動かすことができるmod_phpなどのモジュール、マイクロソフトが提供するASPなどがある。CGIがクライアントのリクエストのたびに新しいプロセスを起動するのに対して、サーブレットはメモリに常駐して、リクエストのたびにプロセスより軽量なスレッドを起動するので、効率がよい。また、サーブレットはJavaで書かれているのでさまざまなプラットフォームで使うことができる。

Servlet 2.3からは、フィルター機能が追加され、Servletの実行前後に処理を差し込むことが可能となった。

サーブレットの技術の延長としてJSPがあるが、JSPはサーブレットを自動生成して動作している。厳密に言えばサーブレットとJSPは違う技術だが、これらは組み合わせて使うのが一般的なため、JSPもサーブレットの一部として扱われることが多い。

サーブレットの実行環境(実行するためのソフトウェア)はWebコンテナ、またはサーブレットコンテナと呼ばれる。これらの言葉はあまり区別されずに使われることも多いが、純粋にサーブレットの処理を行うものをサーブレットコンテナと呼び、サーブレットコンテナを含みJSPやHTTPサーバとしての機能も含むものをWebコンテナと呼ぶ傾向がある。

Webコンテナとしては、Apache Tomcat, Jetty, BEA WebLogic Server, IBM WebSphere Application Server, Resin, JBossなどがある。

サーバサイドJava

当初、JavaはAppletなどのクライアント側でJavaプログラムを稼動させるクライアントサイドの技術として注目を集めていた。しかし、サーブレットの登場以降、サーバ側でJavaプログラムを稼動させる形態が急速に普及した。こうしたサーバ側でJavaプログラムを稼動させる形態をサーバサイドJavaと呼ぶ。

役割

JSPの登場により、Servletはデータの入出力処理 (Controller) を担当することが推奨される。これはModel View Controller (MVC) による役割付けである。

歴史

Java Servletの歴史
バージョン リリース プラットフォーム 内容
1.0 1997/01 -- --
2.0 JDK 1.1 Java Servlet Development Kit 2.0の一部としてリリース
2.1 1998/11 -- 公式な初版、RequestDispatcher, ServletContextを追加
2.2 1999/08 J2EE 1.2
J2SE 1.2
J2EEの一部となる
2.3 2001/08 J2EE 1.3
J2SE 1.2
Filter機能追加
2.4 2003/11 J2EE 1.4
J2SE 1.3
web.xml にXML Schema を利用
2.5 2005/09 Java EE 5
Java SE 5
Java SE 5が必須となる, annotationをサポート
3.0 2009/12 Java EE 6
Java SE 6
開発容易性の実現, 動的設定, login/logoutメソッドサポート, 非同期Servlet, アノテーションSecurity, Fileアップロード
3.1 2013/05 Java EE 7
Java SE 7
クラウド対応, ノンブロッキング処理用I/O APIの追加, WebSocket等へのプロトコルアップグレードの対応, セキュリティ機能の強化[1]
4.0 2017/09 Java EE 8
Java SE 8
HTTP/2サポート
Jakarta Servletの歴史
バージョン リリース プラットフォーム 内容
4.0[2] 2019/08/13 Jakarta EE 8
Java SE 8以降
「Java」の商標から名前が変更。Java ServletからJakarta Servletに名前が変わった。
5.0[3] 2020/09/07 Jakarta EE 9
Java SE 8以降
APIがパッケージjavax.servletからjakarta.servletに移動
6.0[4] 2022/05/12 Jakarta EE 10
Java SE 11以降
非推奨の機能の削除と、リクエストされた拡張機能を実装
6.1[5] 2024/03/28 Jakarta EE 11
Java SE 17以降

例

以下は、service()メソッドが何回呼ばれたかを出力する単純なサーブレットである。

サーブレットはServletインタフェースを実装する必要がある。サーブレットの実装は通常、プロトコルに依存しない抽象クラスであるGenericServletか、HTTP用のサブクラスであるHttpServletクラスを継承することで行う。この例ではHttpServletクラスを継承している。

service()メソッドはサーブレットのリクエストごとの処理を記述するメソッドである。HttpServletクラスを継承する場合、ここからさらにdoGet(), doPost(), doPut(), doDelete()といったHTTPメソッドごとのメソッドに分岐させることができる。ただし、以下の例ではその機能を使わず、直接service()メソッドをオーバーライドしている。

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletLifeCycleExample extends HttpServlet {
    private int count;
 
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        getServletContext().log("init() called");
        count = 0;
    }
 
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        getServletContext().log("service() called");
        count++;
        response.getWriter().write("Incrementing the count: count = " + count);
    }
 
    @Override
    public void destroy() {
        getServletContext().log("destroy() called");
    }
}

web.xml定義

web.xml定義
バージョン定義内容
2.3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
2.4
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
</web-app>
2.5
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
</web-app>
3.0
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
</web-app>
3.1
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
</web-app>

脚注

  1. ↑ “Java Servlet 3.1の新機能――クラウド対応のJava EE 7でどう変わるのか?【Java EEエキスパート・シリーズ】”. オラクル (2012年8月6日). 2014年2月23日閲覧。
  2. ↑ “Jakarta Servlet Specification 4.0”. jakarta.ee. 2025年9月25日閲覧。
  3. ↑ “Jakarta Servlet Specification 5.0”. jakarta.ee. 2025年9月25日閲覧。
  4. ↑ “Jakarta Servlet Specification 6.0”. jakarta.ee. 2025年9月25日閲覧。
  5. ↑ “Jakarta Servlet Specification 6.1”. jakarta.ee. 2025年9月25日閲覧。

関連項目

  • Jakarta EE
  • アプリケーションサーバ
  • ウェブアプリケーション
  • Jakarta Pages
  • JavaBeans
  • アプレット

外部リンク

  • Jakarta Servlet
  • Java Servlet

仕様

  • Java Servlet 2.3 JSR-053 (英語)
  • Java Servlet 2.4 JSR-154 Final Release (英語)
  • Java Servlet 2.5 JSR-154 Maintenance Release (英語)
  • Java Servlet 3.0 JSR-315 (英語)
  • Java Servlet 3.1 JSR-340 (英語)
  • Java Servlet 4.0 JSR-363 (英語)
  • Jakarta Servlet 4.0 (英語)
  • Jakarta Servlet 5.0 (英語)
  • Jakarta Servlet 6.0 (英語)
  • Jakarta Servlet 6.1 (英語)
Java
オラクル
現行
  • Java言語
    • 文法
    • キーワード
    • 履歴
  • JDK
    • OpenJDK
  • JVM
    • HotSpot
  • Java SE (Standard)
  • Card
  • JavaFX
廃止
  • Applet
  • Web Start (JNLP)
  • JRE
  • Java ME (Micro)
  • Java EE (Enterprise)
サードパーティ
Jakarta EE
  • Servlet
  • Pages
  • Faces
  • Messaging
  • Transactions
  • Enterprise Beans
  • RESTful
その他
  • Android SDK
    • Android Studio
  • Eclipse
  • GNU Classpath
  • GWT
  • Harmony
  • Hibernate
  • IcedTea
  • IntelliJ IDEA
  • Spring
  • Struts
  • WildFly
JVM言語
  • BeanShell
  • Clojure
  • Groovy
  • JRuby
  • Jython
  • Kotlin
  • Processing
  • Rhino
  • Scala
コミュニティ
カンファレンス
  • JavaOne
  • Devoxx
組織
  • Apache財団
  • Eclipse財団
  • JCP
  • オラクル
  • サン・マイクロシステムズ
人物
  • ジェームズ・ゴスリン
  • アーサー・ヴァン・ホフ
  • ウルス・ヘルツレ
  • パトリック・ノートン
  • カテゴリ カテゴリ
  • コモンズ コモンズ
  • ポータル Portal:コンピュータ
Webインタフェース
サーバサイド
通信プロトコル
  • HTTP
    • v2
    • v3
    • 暗号化
    • WebDAV
  • CGI
  • FCGI
  • WebSocket
API
  • C ASAPI
  • C ISAPI
  • Java Servlet
  • Python WSGI
  • Perl PSGI
トピックス
  • Webサービス
  • アプリケーションサーバ
  • リソース (WWW)
  • サーバサイドスクリプト
  • Webhook
クライアントサイド
Browser APIs
  • ActiveX
  • Browser Helper Object
  • Google Native Client
  • WebAssembly
Web API
W3C
  • Canvas
  • IndexedDB
  • SVG
  • WebGPU
  • WebRTC
  • WebSocket
  • WebVTT
  • ウェブストレージ
  • Web Worker
  • XMLHttpRequest
  • オーディオ
  • ビデオ
クロノス
  • WebCL
  • WebGL
その他
  • Gears
トピックス
  • Ajax
  • DHTML
  • Mashup
関連項目
  • ウェブページ
    • 静的
    • 動的
  • ウェブアプリケーション
    • RIA
    • SPA
    • PWA
  • ウェブユーザインタフェース
「https://ja.wikipedia.org/w/index.php?title=Java_Servlet&oldid=106604768」から取得
カテゴリ:
  • ウェブ開発
  • Java specification requests
  • Java enterprise platform
  • Javaプラットフォーム
  • Eclipse Foundation
隠しカテゴリ:
  • 出典を必要とする記事/2021年6月
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.