検索
連載

Tomcat 7も対応したServlet 3.0の6つの主な変更点Tomcat 7の新機能で何ができるようになるのか?(1)(3/3 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

【2】プログラムによるWebアプリケーションの拡張

 Servlet 3.0ではServletやFilter、およびそれらのURLマッピングをプログラムから動的に登録し、Webアプリケーションを拡張できます。拡張メソッドは、そのアプリケーションの初期化中でのみ、呼び出すことが可能です。

 そのため、ServletContextListenerのcontexInitializedメソッドか、ServletContainerInitializerのonStartupメソッドのいずれかのみで利用できます。

 利用可能なAPIの一部を紹介します。これらAPIはServletContextから呼び出せます。

Servletを生成するメソッド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Servletを追加するメソッド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Filterを生成するメソッド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Filterを追加するメソッド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Listenerを生成するメソッド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Listenerを追加するメソッド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 addServletメソッドやaddFilterメソッドはServletRegistration.DynamicやFilterRegistration.Dynamicを返却します。開発者は、これらRegistrationインターフェイスを利用してServletやFilterのマッピングや初期パラメータの追加などを行います。

 ServletRegistration.DynamicインターフェイスとFilterRegistration.DynamicインターフェイスのAPIの一部を、以下に記載します。

  • ServletRegistration.Dynamicで利用可能なインターフェイス
URLパターンでServletをマッピング

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

loadOnStartupの設定

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

初期パラメータの設定

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

非同期サポートの設定

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

  • FilterRegistration.Dynamicで利用可能なインターフェイス
Servlet名でFilterをマッピング

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

URLパターンでFilterをマッピング

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

初期パラメータの設定

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

非同期サポートの設定

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ServletContextListenerでの利用例は、こんな感じです。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 上記サンプルでは、[1]でTestServletクラスのインスタンスを生成し、【2]でコンテキストにTestServletインスタンスを登録します。

 [3]で返却されたServletRegistrationに「/config1」をマッピングすることで、TestServletが/config1のパスでアクセスできるようになります。

 もう1つ、ServletContainerInitializerでの利用例も載せておきます。

※ServletContainerInitializerはServlet 3.0から追加されたインターフェイスで、アプリケーションの初期化時にサービスプロバイダによって呼び出されます。

 まず、JARのサービスプロバイダにServletContainerInitializerを登録します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ServletContainerInitializerを実装します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 これら拡張メソッドを利用することで、Webコンテキスト初期化時にプログラムによって動的にWebアプリケーションを拡張できます。

【3】JSPのモジュール化

 Servlet 3.0では、JSPのモジュール化が追加されました。JARファイルの「META-INF/resources」配下に静的コンテンツやJSPを作成し、Webアプリケーションの「WEB-INF/lib」にJARを配置することで、それらのファイルにWebからアクセスできます。

図3 JSPのモジュール化
図3 JSPのモジュール化

 JSPを1つのJARに固めて利用できるので、ちょっと便利です。

Servlet 3.0の変更点は、まだまだある!

 今回はTomcat 7の紹介としてServlet 3.0のうち、EoDとモジュール化と拡張性を紹介しました。

 次回は、Servlet 3.0の変更点の紹介の続きとして、非同期処理、セキュリティ、Session Tracking、マルチパート対応について紹介する予定です。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る