エンタープライズ:特集 | 2003/11/28 15:30:00 更新 |
特集:第2回 実用サンプルコードで理解する「Struts」の基礎 (3/15)
入力フォームを構成するJSPページの作成
それでは実際に、ソースコードを作っていくことにしよう。まずは、投稿用入力フォームの個所から解説する。
通常、入力フォームを構成するには、<FORM>、<INPUT>などのHTML要素を用いるが、Strutsを使う場合にはHTML要素は使わず、Strutsで用意されるHTMLタグライブラリを用いる。HTMLタグライブラリを用いると、StrutsのActionServletが呼び出す入力フォームが構成される。先に示したFig.2の投稿用フォームを構成するKeijiWrite.jspファイルは、次のList 2の通りだ。
List 2■投稿用のフォームを構成するKeijiWrite.jspファイル
1: <%@ page contentType="text/html; charset=EUC_JP" %> 2: <%@ taglib uri="/tags/struts-html" prefix="html" %> 3: <html> 4: <body> 5: <div align="center"> 6: <h1>掲示板投稿</h1> 7: <html:form action="/Write"> 8: <table border="1"> 9: <tr> 10: <th>お名前</th> 11: <td><html:text name="KeijiWriteForm" property="username" size="40"/></td> 12: </tr> 13: <tr> 14: <th>メールアドレス</th> 15: <td><html:text name="KeijiWriteForm" property="email" size="40"/></td> 16: </tr> 17: <tr> 18: <th>タイトル</th> 19: <td><html:text name="KeijiWriteForm" property="title" size="40"/></td> 20: </tr> 21: <tr> 22: <th>本文</th> 23: <td><html:textarea name="KeijiWriteForm" property="msg" rows="10" cols="40"/></td> 24: </tr> 25: </table> 26: <html:submit value="投稿"/> 27: <html:reset value="元に戻す"/> 28: </html:form> 29: </div> 30: </body> 31: </html> |
List 2で入力フォームを定義しているのは、7行目にある次の個所である。
7: <html:form action="/Write"> |
ここでは、action属性として「/Write」を指定している。この<html:form>は、クライアントに送信される際に次のform要素に置き換わる。
<form name="KeijiWriteForm" method="post" action="/[Webアプリケーションのパス名]/Write.do"> |
ここでの指定により、ユーザーがSUBMITボタンを押すと、Write.doアクションが実行されるのだ。
|
Strutsは、<html:form>を用いた際、action属性に指定されているパスをsturts-config.xmlファイルから探し出し、必要な情報構成をする。そのため、<html:form>を用いる場合には、struts-config.xmlファイルに対して、「1. 入力フォームの内容を受け取るActionFormサブクラス」、「2. 実際の処理を行なうActionサブクラス」の2つを定義しておかなければならない。前者は「form-beans」、後者は「action-mappings」要素で設定する。
List 2の入力フォームを使うために必要なstruts-config.xmlファイルの定義は、List 3のようになる。
List 3■struts-config.xmlファイルの抜粋
1: <!-- ======================================== Form Bean Definitions --> 2: <form-beans> 3: <form-bean name="KeijiWriteForm" type="sample.keiji.KeijiWriteForm"/> 4: 〜略〜 5: </form-beans> 6: 7: <!-- =================================== Action Mapping Definitions --> 8: <action-mappings> 9: <action path="/Write" type="sample.keiji.KeijiWriteAction" 10: name="KeijiWriteForm" scope="request" validate="false"> 11: <forward name="success" path="/pages/KeijiWriteSuccess.jsp"/> 12: </action> 13: 〜略〜 14: </action-mappings> |
まずは、9〜12行目にあるaction要素を見てみよう。ここでは、action要素を使った「/Write」に関する定義が行われている。
9: <action path="/Write" type="sample.keiji.KeijiWriteAction" 10: name="KeijiWriteForm" scope="request" validate="false"> 11: <forward name="success" path="/pages/KeijiWriteSuccess.jsp"/> 12: </action> |
前回説明したように、action要素は、「任意名.do」というURLが要求された時に実行するActionサブクラスを定義するためのものだ。9行目では、「type="sample.keiji.KeijiWriteAction"」と記述している。このため、ユーザーが「Write.do」を要求した場合には、sample.keiji.KeijiWriteActionクラスのexecuteメソッドが実行される。sample.keiji.KeijiWriteActionは、投稿データをデータベースに書き込む処理をするよう、すぐあとに実装する。
11行目で指定されているforwardの要素は、sample.keiji.KeijiWriteActionが何か処理をした後、その結果を返すためのJSPページだ。このページも後に作成する。そして、10行目では、「name="KeijiWriteForm"」が指定されている。この項目は、3行目にあるform-bean要素への参照である。3行目では次のように定義している。
3: <form-bean name="KeijiWriteForm" type="sample.keiji.KeijiWriteForm"/> |
ここで指定されているsample.keiji.KeijiWriteFormが、入力フォームに入力されたデータを扱うクラスとなる。
前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 次のページ
[大澤文孝,ITmedia]