JSPページの作成
では、表示するページとなるJSPを作成しましょう。ここでは、最初に表示するhelo.jspと、待ち状態時に表示される「wait.jsp」の2つのファイルを作成します。
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<%@ taglib prefix="stripes"
uri="http://stripes.sourceforge.net/stripes.tld"%>
<stripes:layout-render name="/layout/default.jsp">
<stripes:layout-component name="html_head">
<title>Helo Sample</title>
</stripes:layout-component>
<stripes:layout-component name="contents">
※これは、レイアウトを使ったページの表示です。
<stripes:form beanclass="jp.codezine.HeloActionBean">
<stripes:submit name="longEvent" value="longEvent" />
</stripes:form>
</stripes:layout-component>
</stripes:layout-render>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="stripes"
uri="http://stripes.sourceforge.net/stripes.tld"%>
<stripes:useActionBean var="helo" beanclass="jp.codezine.HeloActionBean" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="refresh" content="0"/>
<title>Helo</title>
</head>
<body>
<h1>Waiting...</h1>
<p>counter: ${helo.counter}</p>
</body>
</html>

これで完成です。実際にhelo.jspにアクセスし、「longEvent」ボタンをクリックしてみましょう。wait.jspに移動し、ページをリロードしてはカウンタの数字を更新する、といったことを繰り返します。そしてカウンタが9より大きくなると、自動的にhelo.jspに戻ります。
ここでは、まずhelo.jspにはフォームを用意し、<stripes:submit name="longEvent">と指定した送信ボタンを1つだけ用意しておきます。これでlongEventのイベントが発生し、これに対応するハンドルイベントが処理を行うようになります。
wait.jsp側では、<stripes:useActionBean>でActionBeanを利用できるようにしておき、${helo.counter}を埋め込んでcounterが表示されるようにしています。また、<meta http-equiv="refresh" content="0"/>タグを用意し、ページを更新するようにしておきます。これでページのリロードを繰り返すと、一定間隔でカウンタの値が増えて表示されるわけです。
見たところ、ロングイベントのための特有の記述はありません。ActionBeanにアノテーションを1つ用意しただけで、後はStripesとプラグインがすべて自動的に処理してくれます。また、ここではページをリロードして表示を更新されるようにしましたが、Ajaxを利用すれば更にスマートに表示できるでしょう。
まとめ
今回は、Stripesと拡張用プラグイン・ライブラリを使った機能の中からいくつかピックアップして紹介しました。3回の記事を見ても、まだまだ足りない機能はあると感じることでしょう。例えば、データベースアクセスや、ユーザー認証関係などです。こうしたものは、実はStripesにはありません。データベースについては「HybernateやJDOを利用してください」という態度で、ユーザー認証も別途実装するサンプルコードが配布されているだけです。
Stripesは、昨今の巨大化したフレームワークなどと比べると、恐ろしくシンプルです。そのため、使い始めは「あれもない、これもない」と不満を感じることでしょう。しかし、シンプルであるということは、これをベースに、自分なりのフレームワークを組み立てていく土台として使えるということでもあります。
データベースアクセスならO/Rマッピングや永続化のためのライブラリが既にいろいろとあります。その他の機能にしても、Javaでは大抵いくつかのライブラリやフレームワークがすぐに見つかるはずです。もっとも基本となる「全体をコントロールする部分」さえあれば、それに必要に応じて使いやすいフレームワークやライブラリを付け足していくことで、自分なりのシステムを構築できることでしょう。
