Apache Struts – 画面遷移の定義
画面遷移の基本
例として、before.jspからafter.jspに移動します。
before.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>移動前</title> </head> <body> <form> <input type="submit" value="移動" /> </form> </body> </html>
after.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>移動先</title> </head> <body> 移動先 </body> </html>
上記二つのファイルを使用して、画面遷移を行います。ファイルをStrutsプロジェクトの任意の位置に保存します。(pagesディレクトリがビュー保存用に用意されています。)
これから、before.jspのボタンをクリックすることでafter.jspに移動させるように修正します。
カスタムタグライブラリ
※カスタムタグライブラリについては、JSP(634-JSP)のtaglibを参照してください。
Strutsには、5つのカスタムタグライブラリ(HTML, Logic, Beans, Nested, Tiles)が用意されています。Strutsでは、htmlの記述にもカスタムタグライブラリを使用するので、現在のhtmlタグをStrutsのHTMLカスタムタグに書き直します。
※各タグライブラリについては、別途解説します。
before.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <head> <title>移動前>/title> </head> <body> <html:form action="/Move"> <html:submit property="submit" value="移動" /> </html:form> </body> </html:html>
after.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <head> <title>移動先</title> </head> <body> 移動先 </body> </html:html>
HTMLタグライブラリを使用するために、<%@ taglib uri="/tags/struts-html" prefix="html" %>という宣言を追加して、<html>→<html:html>、<form>→<html:form>のような変更を加えました。
アクションの定義
/Moveというアクションはまだ定義していないので、これを定義してみましょう。
アクションの定義には、クラスの作成と定義ファイルの編集を行います。
アクションクラス(Move.java)
Apache Struts – 他ページの読み込み(bean:include)
他ページの読み込み
jsp:includeなどのインクルードタグが、指定場所にファイル内容を展開するのに対し、bean:includeは指定した変数に対象ファイルの内容を設定します。
サンプルコード
<bean:include id="inc" page="/include.jsp" />
上記のコードによりincという名称の変数が暗黙的に定義・生成され、page属性で指定したファイルの内容が設定されます。page属性の値はアプリケーションのルートからの相対パスを/(スラッシュ)から始まる内容で指定します。
JSP
<bean:include id="inc" href="http://634.ayumu-baby.com/" />
このコードでは、href属性に指定したURIの内容を変数incに設定します。hrefはhttp://から始まらなければいけません。
Apache Struts
Strutsとは何か
Apache StrutsはMVCに基づくフレームワークです。
※参考:MVCパターン(634-デザインパターン)
StrutsはJ2EEの仕組みを利用して動作します。MVCを実現するために提供されているServletやBeansに加えて、カスタムタグ、Validatorなどのユーティリティーを利用することができます。

