JSPファイルを作ってみる
では、簡単なWebページを作成してみましょう。Stripesでは、WebページはJSPを使って作成するのが基本です。WebContent内に、「helo.jsp」というファイル名でJSPファイルを作成します。そしてテキストエンコーディングをUTF-8に設定し、次のように記述してください。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%> <!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"> <title>Helo</title> </head> <body> <h1>Helo Stripes.</h1> <p>これはサンプルページです。</p> </body> </html>
Stripesを使うといっても、ここでは<%@ taglib %>を使ってライブラリを読み込んでいるだけで、Stripesの機能は使っていません。作成したらサーバを起動してWebページにアクセスをしてみてください。アドレスは、通常のJSPファイルの場合とまったく変わりません。例えば「helo.jsp」というファイル名であれば、「http://localhost:8080/stripes_app/helo.jsp」といったアドレスにアクセスすればよいわけです。
フォームを生成する
とりあえずJSPが動くことは分かりました。では、Stripesの機能を使ってページを作成していきましょう。まずは簡単なフォームを生成し、送信してみることにしましょう。先ほどの「helo.jsp」を次のように書き直してください。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%> <!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"> <title>Helo</title> </head> <body> <h1>Helo Stripes.</h1> <p>お名前を送信してください。</p> <stripes:form beanclass="jp.codezine.HeloActionBean"> <table> <tr> <td>Result:</td> <td>${actionBean.result}</td> </tr> <tr> <td>input:</td> <td><stripes:text name="input1" /><br> </td> </tr> <tr> <td colspan="2"><stripes:submit name="submit" value="Submit" /> </td> </tr> </table> </stripes:form> </body> </html>
これは、入力フィールドが1つあるだけのごくシンプルなフォームを持ったページです(ただし、まだフォームを送信した時の処理など用意していないためこのままでは動きません)。ここでは、Stripesに用意されているいくつかのタグを使っています。以下に整理しておきましょう。
<stripes:form beanclass="jp.codezine.HeloActionBean"> </stripes:form>
フォームの生成(すなわち、<form>~</form>タグの生成)を行っているのが、この部分です。<stripes:form>が<form>タグ、</stripes:form>が</form>タグを生成します。<stripes:form>では、「beanclass」という属性が1つだけ用意されています。これは、このフォームを扱うためのBeanクラスを指定するものです。Stripesでは、<stripes:form>はそれぞれ対応するBeanを持っており、「クライアント側の表示=<stripes:form>タグ」「サーバ側の処理=Beanクラス」という形で作成されるようになっています。
非常に不思議なのは、通常の<form>には必須のmethodやactionといった属性がまったく用意されないことでしょう。Stripesでは、フォームはただ「どのBeanで処理するか」を指定するだけなのです。
<stripes:text name="input1"/> <stripes:submit name="submit" value="Submit"/>
ここでは入力フィールド(<input type="text">タグ)と送信ボタン(<input type="submit">)を生成しています。これらは<stripes:text>、<stripes:submit>というタグとして用意されています。属性としてnameとvalueを用意してあります。nameは、Bean側でコントロールの値などを扱う際に必要となるので、必ず用意すると考えてください。