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の設定ファイル。妥当性チェックの定義などを設定できる。

手順の概要

  1. tiles-def.xmlで画面を定義する
  2. 作成する画面に対応したActionクラス、Formクラスをstruts-config.xmlに記述する
  3. Actionクラス、Formクラスを実装する
  4. Strutsのタグリブ(htmlタグ)を利用してJSPを記述する
  5. ブラウザから動作を確認する

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」に摩り替えて定義している。

//layout
headerにheader.jsp
menuにmenu.jsp
contentは定義せず
fopoterにfooter.jsp
//login
headerはlayoutと同じ
menuはlayoutと同じ
contentはTop.jsp
footerは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タグを使ってすべて記述していることがわかる。こうすることによって、「処理」と「ページデザイン(レイアウト)」を分離することができる。

ブラウザから動作を確認する

ここまでくれば作業は完了。デプロイしてブラウザから確認すれば、動作確認を行うことができる。

以上の流れを繰り返し、画面の設計&製造を行う。