2. プログラミング・開発ガイド

Developer’s StudioのWebアプリケーション開発環境では、Webアプリケーション開発の生産性を向上させる機能を提供しています。

2.1. Webアプリケーションの作成

2.1.1. Webアプリケーションとは

Webアプリケーションは、複数のコンポーネントの集まりです。一般的にWebアプリケーションは以下のコンポーネントを1つまたは複数組み合わせて作成されます。

2.1.2. Webアプリケーションのディレクトリ構造

Webアプリケーションは、通常、ディレクトリの階層構造を構成し、ほとんどのWebコンテナがサーブレット仕様で推奨されているディレクトリ階層構造に準拠しています。階層内のルートディレクトリがWebアプリケーションのドキュメントルート(コンテキストルート)となり、その配下にコンポーネントを配置します。
WTPでプロジェクトを作成する場合、コンテキストルートの名前やコンテキストディレクトリを指定することができます。
デフォルトでは、コンテキストルートの名前:"プロジェクト名"、コンテキストディレトリ:"WebContent" になります。
Webアプリケーションのディレクトリ階層内には、次に挙げる特別なディレクトリがあります。
表2.2.1.2-1
ディレクトリ名
説明
WEB-INF
Webアプリケーションに関連するメタ情報のリポジトリです。このディレクトリ配下のリソースは、クライアント(WEBブラウザ)からアクセスすることはできません。Webアプリケーション内のServletやJavaクラスからはアクセス可能です。
WEB-INF/classes
Servletクラスはユーティリティクラスやリソースプロパティファイル(*.properties)などを配置します。クラスがJavaパッケージ内に存在する場合、classes配下にはパッケージ名に対応するサブディレクトリが存在しなければなりません。
WEB-INF/lib
Webアプリケーション用のクラスローダでロードしたいJARファイルを配置します。ここに配置したJARファイル中のクラスファイルはWebアプリケーションから参照することができます。
上記のディレクトリの他に、特殊なファイルとしてWebアプリケーションのデプロイメント記述子であるweb.xmlファイルがあります。一般に、web.xmlファイルはWEB-INFディレクトリ配下に配置されます。

Memo
Webコンテナとは、Java EE 7のWeb層で動作するアプリケーション(Servlet、JSP)を制御・管理・実行するコンテナを指します。

2.1.3. WARファイル

Webアプリケーションは、WAR(WebArchive)ファイルとしてパッケージ化することができます。WARファイルは、.warという拡張子でなければなりません。WARファイルとしてパッケージする際には、コンテキストルートからの相対的なWebアプリケーションのディレクトリ構造を維持しなければなりません。

2.1.4. MVCモデル2

Webアプリケーションの開発モデルとして、オブジェクト指向プログラミング言語のひとつ「Smalltalk」に使用されていたアプリケーション・アーキテクチャ「MVC」が、あらためて注目されています。MVCをWebアプリケーションに応用したものを「MVCモデル2」とよびます。WebアプリケーションにおけるMVCのModel、View、Controlの役割はそれぞれ、以下のようになります。
MVCのメリットとして、次の点が挙げられます。
このメリットを含み、開発(設計・コーディング・テスト)の効率化の観点から、アプリケーション構築時に生じる問題を解決する手段を提供したものが、MVCベースのWebアプリケーション・フレームワークです。Webアプリケーション・フレームワークには、JSF(JavaServerFaces)や多くのWebシステムで採用されているStrutsフレームワークなどがあります。

2.1.5. Webアプリケーションの定義

Webアプリケーションの定義ファイルとして、デプロイメント記述子であるweb.xmlファイルがあります。このファイルはWebコンテナに配備する際に必要となります。定義する内容には以下のものがあります。
Servlet2.5仕様からweb.xmlがXMLスキーマベースになったことにより、特定のスキーマを指定することで新しい要素を追加することができます。web.xmlのルート要素であるweb-app要素の記述は以下のようになります。(赤字は、WTPで作成したプロジェクトのweb.xmlで追加されます)
<web-appid="WebApp_ID"
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 web-app_2_5.xsd"
   version="2.5">
     (ここに上述した設定内容に対応する定義を記述します。)
</web-app>

2.1.6. Web Application Bundle (WAB)

2.1.6.1. WABプロジェクトの作成
  1. Webアプリケーションを作成します。
  2. マニフェストファイル(WebContent/META-INF/MANIFEST.MF)に次の記述を追加します。
記述を追加したマニフェストファイルの例を以下に示します。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: WAB_ProjName001
Bundle-SymbolicName: WAB_ProjName001
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: WEB-INF/classes/
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: javax.el,
 javax.servlet,
 javax.servlet.http,
 javax.servlet.jsp,
 javax.servlet.jsp.el,
 javax.servlet.jsp.tagext
Web-ContextPath: /WAB_ProjName001
2.1.6.2. WABプロジェクトの配備
配備コマンド実行時に "--type osgi" オプションを指定します。
「サーバで実行」機能を用いた配備での "--type osgi" オプションの指定方法については、 [ 開発環境の構築(WebOTX Developer) > サーバツール > サーバで実行 > WebOTXの設定 ] の、コマンドの設定をご覧ください。

2.1.7. 動的Webプロジェクト・ウィザードの活用

Webプロジェクト・ウィザードは、Webアプリケーションを開発するためのプロジェクトを作成します。
メニュー ファイル新規プロジェクト を選択して、新規プロジェクトダイアログを表示します。
新規プロジェクト画面のWeb配下の動的Webプロジェクトを選択して、次へ をクリックします。


図2.2.1.7-1

プロジェクト名にプロジェクトの名前を入力します。
プロジェクト・コンテンツでは、プロジェクトの保管先をデフォルト以外の場所に変更することができます。
ターゲット・ラインタイムでは、Webアプリケーションを実行するサーバー・ランタイム環境を指定できます。
プロジェクト名を入力すれば、完了 をクリックすることで 動的Webプロジェクトを作成することができます。


図2.2.1.7-2

プロジェクト名を入力、ターゲット・ラインタイムを選択した後、終了で動的Webプロジェクトを作成した場合、次の図に示されるディレクトリ構成で作成されます。


図2.2.1.7-3

作成されるディレクトリ構成について、次の表で説明します。
表2.2.1.7-1
項目
説明
プロジェクトルート(MyWeb) プロジェクトのルートディレクトリです。任意のHTML・JSPファイルやイメージファイル・ディレクトリなどを配置します。
src Webプロジェクトのソース・フォルダーです。Webアプリケーションで利用するJavaファイルやサーブレットのJavaファイルをパッケージ構成で格納します。
EAR ライブラリー
JREシステム・ライブラリー
Web App ライブラリー
WebOTX Application Server v10(Local)
プロジェクトが参照するライブラリです。
WebContent コンテキストディレクトリです。プロジェクト作成時に、任意のディレクトリに変更することができます。
META-INF/MANIFEST.MF マニフェストファイルです。
WEB-INF Webアプリケーションの隠蔽ディレクトリです。この配下のリソースには、クライアント(WEBブラウザ)からアクセスすることはできません。Webアプリケーション・プログラムが利用する定義ファイルなどを格納します。
build/classes Webプロジェクトの出力フォルダです。ソース・フォルダー中のソースファイルのコンパイルにより生成されたファイルが格納されます。
WEB-INF/lib 開発するWebアプリケーションで利用するライブラリ(JARファイル)を格納します。
WEB-INF/web.xml Webアプリケーションのデプロイメント記述子です。Servlet3.0ではデフォルトで生成されません。

動的 Web プロジェクトプロジェクト名を入力後、構成変更をクリックすると、プロジェクト・ファセットが表示されます。
プロジェクト・ファセットでは、作成するWebプロジェクトの以下の設定を行います。


図2.2.1.7-4

表2.2.1.7-2
項目
説明
動的 Web モジュール
必須。プロジェクトをDynamic Web Moduleとして配備可能にします。
Java
必須。Javaのサポートを可能にします。

OKをクリックすると動的Webプロジェクトページに戻ります。
次へ をクリックするとJavaページが表示されます。
Javaページでは、作成するWebプロジェクトの以下の設定を行います。
変更が必要な場合のみ値を変更して、次へ をクリックします。


図2.2.1.7-5

表2.2.1.7-3
項目
説明
Java ソース・フォルダー
Javaのソース・フォルダーの指定ができます。

次へ をクリックするとWeb モジュールページが表示されます
Web モジュールページでは、作成するWebプロジェクトの以下の設定を行います。
変更が必要な場合のみ値を変更して、完了 をクリックします。


図2.2.1.7-6

表2.2.1.7-4
項目
説明
コンテキスト・ルート
コンテキストルートの変更が可能です。
デフォルトはプロジェクト名です。
コンテンツ・ディレクトリー
コンテントディレクトリの変更が可能です。
デフォルトはWebContent です。
web.xmlデプロイメント記述個の生成
web.xmlを生成するかを設定します。
Servlet2.5のデフォルトはOFFですが、Servlet3.0以上のデフォルトはONです。

2.1.8. 実行支援ライブラリの活用

パッケージエクスプローラ以外の場合はメニュー ウィンドウパースペクティブを開くよりJavaを選択し、パッケージエクスプローラを表示します。
利用したいプロジェクト上で、右クリックメニュー Web プロジェクト支援ライブラリの追加 を選択します。


図2.2.1.8-1

プロジェクト設定ページでは、Webプロジェクトが利用するライブラリの選択を行うことができます。
開発するWebアプリケーションで利用するライブラリを選択します。JARファイルやTLDファイルをプロジェクトの所定の位置に配置します。
プロジェクト設定ページで選択できる項目の詳細を次の表で説明します。
表2.2.1.8-1
項目
説明
Webアプリケーション実行支援ライブラリ
Webアプリケーションを開発する際に汎用的に利用できるライブラリです。JARファイルとTLDファイルをプロジェクトに配置します。プロジェクト作成時に文字エンコードフィルタの利用選択ができます。

Memo
文字エンコードフィルタを利用する場合、エンコード種別 URLパターンの指定は必須です。