検索
連載

発掘! Webの“あるある”問題点−ステートの常識Webアプリの常識をJSPとStrutsで身につける(6)(3/3 ページ)

本連載は、JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外(PHPやASP.NET、Ruby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です

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

「ステートフル」を疑似的に

 それでは、「ステートフル」を疑似的に実現している簡単なプログラムを作成して確認してみましょう。まず、「PKG\Hello\pages」配下に、下記のJSPファイルを作成してください。

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

 次に、Javaパッケージを作成します。Eclipseから「Hello」プロジェクトの[ソース・フォルダー](「WEB-INF/src」)で右クリックして、新規の[Java パッケージ]を選択します。

図6 新規[Java パッケージ]
図6 新規[Java パッケージ]

 [ソース・フォルダー]で「Hello/WEB-INF/src」を参照し、[名前]で「state」と入力して[終了]ボタンを選択します。同様の操作で「state.form」パッケージも作成します。これで、新規のJavaパッケージの作成は完了です。Javaパッケージを作成したら、「state.form」パッケージ配下に以下の.javaファイル(StateForm.java)を作成します。

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

 「state」パッケージ配下に、以下の.javaファイル(State01Action.java、State02Action.java)と.propertiesファイル(State_ja.properties)を作成します。

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

 最後に、WEB-INFフォルダのstruts-config.xmlを以下の内容に編集します。

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

 これで、サンプルプログラムの作成は完了です。Eclipseで[プロジェクト]の[クリーン]を選択してHelloプロジェクトをコンパイルします。

 コンパイルが終わったら、Eclipse上から「Tomcat起動」アイコン(猫マーク)を押して、起動してみてください。コンソールが何やら動き出しましたね。早速確認してみましょう。WebブラウザからURL「http://localhost:8080/hello/pages/State01.jsp」を参照してみてください。すると、下記の画面が表示されたかと思います。

図7 入力画面
図7 入力画面

 入力画面に、「名前」「メールアドレス」「年齢」を入力して「NEXT」ボタンを押してください。すると、下記のような画面が表示されると思います。これは、入力画面(State01.jsp)で入力した情報(StateForm)をState01Action.javaでセッションにセットし、出力しています。

図8 確認画面
図8 確認画面

 それでは、「END」ボタンを押してみてください。すると、下記の画面が表示されます。

図9 結果画面
図9 結果画面

 一見、前の画面と変わっていないと思いますが、「END」ボタンを押した際の処理はState02Action.javaを実行しています。

 State02Action.javaでは、画面の遷移の処理です。しかし、State01Action.javaの処理の際、セットされたセッションの情報を保持したままの状態のため、State02Action.javaを経由しても同じ情報を出力することが可能なのです。

 このようにセッションやCookieを利用することで、「ステートフル」を疑似的に実現しているWebアプリケーションを実現できます。

<bean:message>タグ

 <bean:message>タグはメッセージリソースからメッセージを読み込みます。今回は入力画面のボタン「NEXT」の値や「END」の値を定義ファイル(State_ja.properties)の情報を取り出し、属性「key」で指定して出力しています。

<bean:include>タグ

 <bean:include>タグはほかのページを動的に読み込むためのものです。<jsp:include>と同様の使い方です。今回は、ヘッダー部分(Header.jsp)を動的に読み込んでいます。ヘッダー部分を共通で使用する場合、この仕組みを使えば1つのJSPを編集するだけで済みます。

次回は、バリデーションとテンプレート

 このように、今回はセッションやCookieの仕組みを利用したWebアプリケーションにおけるステートについて説明しましたが、いかがでしたでしょうか。[戻る]ボタンや2度押し、[F5]キー連打の問題の根底にあるものが理解できたかと思います。Webアプリケーション開発にぜひ生かしていただければ幸いです。

 次回は、Webアプリケーションにおけるバリデーションやテンプレートエンジンについて説明していきたいと思います。

 今回のサンプルは、こちらからダウンロードできます。

プロフィール

眞野 寿彦(まの としひこ)
株式会社メセナ・ネットコム所属

SEとして充実した日々を送っている。現在はStrutsを使ったWebアプリケーション開発を担当中。「信頼されるプロジェクトマネジャー」を目指し、自分に必要なことを常に考え、行動し、「真の技術者」として日々成長している。

趣味はボウリング、ビリヤード、ダーツ
尊敬する人はティム・バーナーズ=リー



前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る