読み方:じゃばさーぶれっとサーバー上で動作するJavaのプログラム及びその仕様のこと。Weblio国語辞典では「Java_Servlet」の意味や使い方、用例、類似表現などを解説しています。">

Java_Servletとは何? わかりやすく解説 Weblio辞書 (original) (raw)

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

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

概要

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

同様の技術(すなわち対抗技術)としてはPerlなどを用いたCGIPHPプログラムのプロセスを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の登場により、Java Servletはデータの入出力処理 (Controller) を担当することが推奨される。これはModel View Controller (MVC) による役割付けである。

歴史

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 JavaEE 5, JavaSE 5 JavaSE 5が必須となる, annotationをサポート
3.0 2009/12 JavaEE 6, JavaSE 6 開発容易性の実現, 動的設定, login/logoutメソッドサポート, 非同期Servlet, アノテーションSecurity, Fileアップロード
3.1 2013/05 JavaEE 7 クラウド対応, ノンブロッキング処理用I/O APIの追加, WebSocket等へのプロトコルアップグレードの対応, セキュリティ機能の強化[1]
4.0 2017/09 JavaEE 8 HTTP/2サポート

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

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

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

import java.io.IOException;

import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

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
2.4
2.5
3.0
3.1

脚注

  1. ^Java Servlet 3.1の新機能――クラウド対応のJava EE 7でどう変わるのか?【Java EEエキスパート・シリーズ】”. オラクル (2012年8月6日). 2014年2月23日閲覧。

関連項目

ウィキブックスに**Java**関連の解説書・教科書があります。

外部リンク

Java
プラットフォーム Java言語 JVM Java ME (Micro) Java SE (Standard) Jakarta EE Javaカード Android SDK
オラクルのテクノロジー Squawk Java開発キット OpenJDK Java仮想マシン JavaFX Maxine VM
プラットフォーム技術 アプレット サーブレット MIDlet JSP JSF Web Start (JNLP)
主なサードパーティ技術 Blackdown Eclipse GNU Classpath GWT Harmony Hibernate IcedTea Jazelle Spring Struts TopLink WildFly
歴史 Javaバージョン履歴 Java Community Process サンマイクロシステムズ 自由なJavaの実装
主要なJVM言語 BeanShell Clojure Groovy JRuby Jython Kotlin Processing Rhino Scala
コミュニティ カンファレンス JavaOne Devoxx 組織 Apache Software Foundation Java Community Process オラクル サン・マイクロシステムズ 人物 ジェームズ・ゴスリン アーサー・ヴァン・ホフ ウルス・ヘルツレ パトリック・ノートン
カテゴリ コモンズ Portal:コンピュータ
Webインタフェース
サーバサイド プロトコル HTTP CGI FCGI SCGI(英語版) AJP(英語版WebSocket APIs C NSAPI(英語版C ASAPI C ISAPI Java Servlet CIL System.Web.IHttpHandler(英語版Python WSGI Ruby Rack(英語版) JavaScript JSGI(英語版Perl PSGI Lua WSAPI(英語版) トピックス Webサービス アプリケーションサーバ リソース (WWW) Open API(英語版サーバサイドスクリプト Webhook
クライアントサイド Web API(英語版W3C Canvas CORS(英語版) File API(英語版) Geolocation(英語版IndexedDB Microdata(英語版SVG WebSocket WebVTT Web Messaging(英語版) Web storage(英語版) Web worker(英語版XMLHttpRequest オーディオ ビデオ クロノス WebCL WebGL その他 Gears - Web SQL Database(英語版Browser APIs ActiveX - Browser Helper Object - Google Native Client - WebAssembly トピックス Ajax - DHTML - Mashup - Web IDL(英語版
関連項目 Dynamic web page(英語版) - Open Web Platform(英語版) - RIA - Web API security(英語版) - ウェブアプリケーション
ウェブユーザインタフェース