Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

サーブレット3.0の新機能

Java EE 6 開発入門(2)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/06/01 14:00

 本連載は、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で追加された新機能を紹介していきます。新機能の一覧を以下に示します。

表1 サーブレット3.0の新機能
機能名 概要
サーブレット用アノテーション 設定ファイル(web.xml)で設定していた内容をクラスへ直接記載可能。設定ファイルとアノテーションの併用も可能にしている。サーブレット単位で設定する内容はすべてアノテーションで記載可能。
非同期リクエストの正式サポート プッシュ型アプリケーションへの対応、非同期プロセスを別スレッドで起動、監視する機能を提供。
動的なサーブレット設定のサポート サーブレットやサーブレットフィルタ(※1)を、初期化時にも設定可能。
設定ファイルの分割 web.xmlの分割が可能。設定を分割することにより設定ファイルの可読性を上げることと、ライブラリやフレームワークの読み込み順序や定義を分割可能。
認証処理の実装 サーブレットのみで認証機能、ログイン、ログアウト機能を提供
JARファイルからの静的コンテンツ読み込み JARで圧縮されたライブラリ内にHTMLやJSPを定義することが可能
ファイルアップロード アップロード機能の正式サポート
※1

 サーブレットの前後に動作するクラス。フィルタ自身もサーブレットの一つであり、ログインチェック処理やリクエストパラメータの事前加工処理など、共通処理を組み込まれることが行うことが多い。

NetBeansを使ったサーブレットの作成

 NetBeansを使って、サーブレットを1つ作成してみましょう。NetBeansはサーブレット3.0用の設定やサーブレットを作成する機能も提供しており、とても手軽に作ることができます。

 まずはサーブレットを作成したいプロジェクトを選択し、[新規]→[サーブレット]を選択します。

図1 サーブレットの作成
図1 サーブレットの作成

 次にサーブレットの名称とパッケージを決めます。もし、まだ存在していないパッケージを指定した場合は自動的に作成されます。

図2 サーブレットの命名
図2 サーブレットの命名

 最後に設定ファイルへの出力と、実際にブラウザからリクエストされるURLのパスを指定します。従来のサーブレットのように、web.xmlへ設定を出力する場合は、[配備記述子(web.xml)に情報を追加]のチェックボックスにチェックをします。サーブレット3.0ではweb.xmlへの定義は必須ではありませんので、選択式になっています。web.xmlに定義しない場合、@WebServletアノテーションを使った定義が自動的に生成されます。

図3 サーブレット設定を定義
図3 サーブレット設定を定義

 以上でサーブレットの雛形が生成されます。次に示すコードは、NetBeansによって自動生成されるサーブレットです。動作に必要なHttpServletクラスを継承し、実際に行う処理を記述するprocessRequestメソッドが準備されます。

リスト1 NetBeansで自動生成されるサーブレットの例
@WebServlet(name="SampleServlet", urlPatterns={"/SampleServlet"})
public class SampleServlet extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        …(中略)…
        
    }
}

 この雛形は先ほどにもあるように、処理内容が記述されていない、空のメソッドを複数含んだクラスになります。あとは実装したい処理に合わせて、機能をメソッドに実装するだけで動作しますし、新しく追加されたアノテーションでサーブレットの振る舞いを追加設定することも可能です。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

  • WINGSプロジェクト 東 浩二(アズマ コウジ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

バックナンバー

連載:Java EE 6 開発入門

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5