ダウンロード サンプルファイル (34.0 KB)
本連載は、Java Enterprise Edition 6(Java EE 6)の導入方法をはじめとして、新導入された仕様や概念を紹介していきます。今回は、Java Enterprise Edition 6の基本となるサーブレットの基本、新しくなったサーブレット3.0の仕様を紹介します。
はじめに
本稿では、Java Enterprise Edition 6の基本となるサーブレットの基本、新しくなったサーブレット3.0の仕様を紹介します。
対象読者
- Java EE 6開発に興味ある方
- これからJavaのWebアプリケーション開発をはじめる方
必要な環境
動作環境は以下のとおりです。
- Java SE 6
- NetBeans 6.9.1
サーブレット(Servlet)とは
サーブレットとは、JavaでWeb用のHTMLやテキストを出力する機能のことです。サーブレットはGlassFish、Tomcat、JBossなどのサーブレットコンテナで動作し、動的にHTMLを出力できます。
サーブレットそのものはJavaで記述するクラスの一つであり、利用するにはサーブレット用のインターフェースを実装して、さらに設定を記述して使うことになります。サーブレットを作るまでにはいくつかお作法が必要になってしまいますが、NetBeansやEclipseなどの統合開発環境では、自動的に必要なクラスや設定を出力してくれる機能を備えており、開発効率を高めてくれます。
サーブレット 3.0とは
サーブレットは10年以上前から実用化されている仕様ですが、オープンソースの拡張ライブラリ、フレームワークの登場により、より一層の共通化がなされ、それに合わせてサーブレット仕様も拡張を繰り返してきました。そして最新仕様であるサーブレット3.0では、下位互換を保ちつつ、既存のJavaフレームワークにあった仕様を改良して取り込んだものも含めながら、時代に合わせた仕様へと大幅に改良されました。
ちなみに、サーブレット3.0はJava EE 6仕様の一つとして扱われており、Java EE 6の提唱する「仕様の軽量化」「拡張性の重視」「開発のしやすさ」の中でも「拡張性の重視」「開発のしやすさ」をサポートします。
ではサーブレット3.0で追加された新機能を紹介していきます。新機能の一覧を以下に示します。
| 機能名 | 概要 |
| サーブレット用アノテーション | 設定ファイル(web.xml)で設定していた内容をクラスへ直接記載可能。設定ファイルとアノテーションの併用も可能にしている。サーブレット単位で設定する内容はすべてアノテーションで記載可能。 |
| 非同期リクエストの正式サポート | プッシュ型アプリケーションへの対応、非同期プロセスを別スレッドで起動、監視する機能を提供。 |
| 動的なサーブレット設定のサポート | サーブレットやサーブレットフィルタ(※1)を、初期化時にも設定可能。 |
| 設定ファイルの分割 | web.xmlの分割が可能。設定を分割することにより設定ファイルの可読性を上げることと、ライブラリやフレームワークの読み込み順序や定義を分割可能。 |
| 認証処理の実装 | サーブレットのみで認証機能、ログイン、ログアウト機能を提供 |
| JARファイルからの静的コンテンツ読み込み | JARで圧縮されたライブラリ内にHTMLやJSPを定義することが可能 |
| ファイルアップロード | アップロード機能の正式サポート |
サーブレットの前後に動作するクラス。フィルタ自身もサーブレットの一つであり、ログインチェック処理やリクエストパラメータの事前加工処理など、共通処理を組み込まれることが行うことが多い。
NetBeansを使ったサーブレットの作成
NetBeansを使って、サーブレットを1つ作成してみましょう。NetBeansはサーブレット3.0用の設定やサーブレットを作成する機能も提供しており、とても手軽に作ることができます。
まずはサーブレットを作成したいプロジェクトを選択し、[新規]→[サーブレット]を選択します。
次にサーブレットの名称とパッケージを決めます。もし、まだ存在していないパッケージを指定した場合は自動的に作成されます。
最後に設定ファイルへの出力と、実際にブラウザからリクエストされるURLのパスを指定します。従来のサーブレットのように、web.xmlへ設定を出力する場合は、[配備記述子(web.xml)に情報を追加]のチェックボックスにチェックをします。サーブレット3.0ではweb.xmlへの定義は必須ではありませんので、選択式になっています。web.xmlに定義しない場合、@WebServletアノテーションを使った定義が自動的に生成されます。
以上でサーブレットの雛形が生成されます。次に示すコードは、NetBeansによって自動生成されるサーブレットです。動作に必要なHttpServletクラスを継承し、実際に行う処理を記述するprocessRequestメソッドが準備されます。
@WebServlet(name="SampleServlet", urlPatterns={"/SampleServlet"})
public class SampleServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
…(中略)…
}
}
この雛形は先ほどにもあるように、処理内容が記述されていない、空のメソッドを複数含んだクラスになります。あとは実装したい処理に合わせて、機能をメソッドに実装するだけで動作しますし、新しく追加されたアノテーションでサーブレットの振る舞いを追加設定することも可能です。
この記事は参考になりましたか?
- Java EE 6 開発入門連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 東 浩二(アズマ コウジ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



