エンタープライズ:特集 2003/07/01 15:46:00 更新

JAVA Developer 2003年8月号より転載
FlashとTomcatで実現する使いたくなるWebアプリ (10/10)

●いざ実行

 アンケートクライアント、アンケートサーブレットができあがったら、デプロイメントディスクリプタweb.xml(リスト11)を作ります。Tomcatで動かすために必要な最低限のファイルはこれで準備できたわけですが、せっかくですから、warファイルを作って、Tomcatにデプロイすることにします。

リスト11 web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>SaverServlet</servlet-name>
<servlet-class>questionnaire.SaverServlet</servlet-class>
<init-param>
<param-name>response_url</param-name>
<param-value>/summary.xml</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>SummaryServlet</servlet-name>
<servlet-class>questionnaire.SummaryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SaverServlet</servlet-name>
<url-pattern>save</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SummaryServlet</servlet-name>
<url-pattern>summary.xml</url-pattern>
</servlet-mapping>
</web-app>

 これまで作成したファイルは、図3に示すディレクトリにそれぞれのファイルを置きます。antを実行すれば、questionnaire.warが作成されます。

fig3

図3 アンケートアプリケーションの各ファイルをディレクトリに配置


 このwarファイルをTomcatのwebappsディレクトリにコピーし、Tomcatを起動。ブラウザのアドレスに、

http://locathost:8080/questionnaire/questionnaire.html

を入力したところが図4です。最後まで質問に答えて、アンケートクライアントとアンケートサーブレットが通信できていることを確認します。

fig4

図4 Tomcatにデプロイして実行(クリックで拡大)


ActionScriptこれだけは覚えておこう

 FlashのActionScriptは、Java言語とぱっと見の文法は似ているところもありますが、ActionScriptはあくまでもスクリプト言語ですから、当然違うところが多々あります(そもそもベースとしている規格が違います)。最後に、ちょっと知っておいたほうがよいと思うActionScriptのTipsをいくつか紹介します。

(1)traceメソッド

 Flashはもともとアニメーションを表示させるためのものなので、Flash Playerには「コンソール」がありませんが、Flash MXにはちゃんとコンソールがあります。ActionScriptの中で、traceメソッドを使用すると、コンソールに文字を出力できます。

(2)変数の状態

 ActionScriptでは、変数は宣言することなく使用できます。変数を参照する側から見ると、変数には、「値が入っている」「値が入っていない(null)」「変数がない」という3つの状態があります。

 ActionScriptでは、変数に値が設定された時点ではじめて存在することになるにもかかわらず、いつでも参照できてしまいます。そのため、スクリプトによっては、「変数がない」という状態も識別する必要が出てきます。

 この「変数がない」状態のことを「undefined」と呼び、

if (変数名 === undefined)

で判定できます。前述のとおり、undefinedな変数を参照しただけではエラーにはならないので、留意が必要です。

(3)メソッドの動的な定義

 また今回は使用していませんが、実はメソッドも動的に定義できます。たとえば、リスト12のようなコードをムービークリップに定義すると、キーを叩かない限り、dynamic_funcは存在しないため、マウスをクリックしてもなにも起きません。キーを一度叩くとその時点でdynamic_funcが定義され、それ以降マウスをクリックすると、dynamic_funcが呼び出されるようになります。

●Javaとの違いを克服して

 私は、「アセンブラ」→……→「C」→「Java」と移ってきた人間なので、宣言もなく使えること、「undefined」という浮遊物のような状態があることに対してとても違和感がありましたが、超高級言語の世界ではわりと一般的な概念のようです。慣れるしかないですね。せめて、Visual Basicのoption explicit(変数の宣言を強制することを指定)のようなオプションが用意されているとありがたいと思います。現状、ないものねだりをいってもしょうがないので、変数名やメソッド名の誤りは開発者自身が気を付けるしかありません。

 さて、今回パソコン向けのWebアプリケーションとして使ったFlashは、NTT ドコモの505iシリーズの携帯電話でも使えるようになりました。現在の505iシリーズが持つFlashの稼働環境である「Flash Lite」では、まだ通信系の機能が実装されていませんが、今後ますますFlashの適用領域が大きくなることは間違いありません。サーバーサイドJavaが中心だからといって関係ないと思わず、ぜひ挑戦してください。

関連リンク
▼JAVA Developerホームページ

前のページ | 1 2 3 4 5 6 7 8 9 10 |      

[佐藤 毅,JAVA Developer]

Copyright © ITmedia, Inc. All Rights Reserved.