Struts1.3.5のクイックスタートメモ
Strutsを使う時に、どこに何があるのかなどを情報をまとめる。
前提条件として、Struts、Tiles、Validatorは動く状態になっているとする。
- Struts
- Webアプリケーションのプレゼンテーション層を得意とするフレームワーク。
- Tiles
- 画面レイアウトを設定で簡単に行えるフレームワーク。
- Validator
- エラーチェックを設定で簡単に行えるフレームワーク。
登場人物
- JSP
- 画面を表現する。
- ActionServlet
- Strutsのコントローラ。ActionやFormなどを管理する人。
- Actionクラス
- ボタンを押した時などのアクションに対応したクラス。
- Formクラス
- JSPとStrutsの間でパラメタなどの受け渡しをするクラス。
- web.xml
- Webアプリケーションの設定を記述するファイル。
- struts-config.xml
- StrutsのActionやFormの設定を記述するファイル。
- tiles-def.xml
- Strutsと連携して動作するTilesの設定ファイル。画面定義やレイアウト、配置などを設定できる。
- validation.xml
- Strutsと連携して動作するvalidationの設定ファイル。妥当性チェックの定義などを設定できる。
手順の概要
- tiles-def.xmlで画面を定義する
- 作成する画面に対応したActionクラス、Formクラスをstruts-config.xmlに記述する
- Actionクラス、Formクラスを実装する
- Strutsのタグリブ(htmlタグ)を利用してJSPを記述する
- ブラウザから動作を確認する
tiles-defs.xml
画面を定義してStrutsとTilesで使う「画面名」を定義する。
<definition name="layout" path="/WEB-INF/jsp/layout.jsp"> <put name="header" value="/WEB-INF/jsp/header.jsp" /> <put name="menu" value="/WEB-INF/jsp/menu.jsp" /> <put name="content" value="" /> <put name="footer" value="/WEB-INF/jsp/footer.jsp" /></definition><definition name="login" extends="layout"> <put name="content" value="/WEB-INF/jsp/login.jsp" /></definition>
上記例の場合、「layout」という名前の基本となる画面を定義している。さらに、「login」という名前の画面は、layoutを継承し、content部分だけ「login.jsp」に摩り替えて定義している。
//layoutheaderにheader.jspmenuにmenu.jspcontentは定義せずfopoterにfooter.jsp
//loginheaderはlayoutと同じmenuはlayoutと同じcontentはTop.jspfooterはlayoutと同じ
こうすることで、layoutで定義したレイアウトを使いまわして、似通ったレイアウトのページを定義することができる。
struts-config.xml
画面の製造で使用するActionクラスとFormクラスをまずは設定する。
例としてLogin画面を考えてみる。
ログイン画面には2つのテキストボックスと1つのログインボタンがあるものとする。この画面に対してStrutsを使って設計を行うとすると・・・
- ログインボタンはログインAcitonになりそう
- 画面からの入力は2項目なので、Formに2項目作ればよさそう
- ログインに成功したら次のページに遷移して、エラーの場合はログイン画面に戻ってエラーメッセージをだせばいいかも
では、上記3点を踏まえて、必要そうなものをstruts-config.xmlに記述してみる。まずはForm。
<form-beans> <form-bean name="LoginForm" type="com.daipresents.LoginForm" /></form-beans>
LoginFormというものに2つの項目(ログイン名、パスワード)をStrutsに入れてもらうようにする。続いてAction。
<action path="/LoginAction" type="com.daipresetns.LoginAction" name="LoginForm" scope="request"> <description>ログイン処理のアクション</description> <forward name="success" path="top" /> <forward name="error" path="login" /></action>
ログインボタンが押されるとLoginActionが動作して、LoginAction内でログイン処理を行うとする。LoginAction内でLoginFormを使いたいので、LoginFormも定義しておく。scopeにはFormのスコープを定義するのだけど、これはまた別の機会に説明する。
ログイン後の処理として、成功(success)の場合はトップ画面に遷移、失敗(error)の場合はログイン画面に戻るようにforward要素で定義する。pathには上記Tilesの画面定義で定義した画面名(login、topなど)を記述する。
Actionクラス、Formクラスの実装
Struts1.3.5でログイン処理を作るをみてください。
Strutsのタグリブ(htmlタグ)を利用してJSPを記述する
<html:form action="/LoginAction"> <html:text name="LoginForm" property="loginID" /><br /> <html:password name="LoginForm" property="password" /><br /> <html:submit property="submit" value="送信"/></html:form>
htmlタグを使ってすべて記述していることがわかる。こうすることによって、「処理」と「ページデザイン(レイアウト)」を分離することができる。
ブラウザから動作を確認する
ここまでくれば作業は完了。デプロイしてブラウザから確認すれば、動作確認を行うことができる。
以上の流れを繰り返し、画面の設計&製造を行う。




