シリーズJavaの画面表示のつづきです。今、Strutsを具体的な例をあげてやってます。手順は、以下のとおりです。
1.画面遷移を考える。
2.(別にやんなくてもいいけど)それを以下のように図にしておくと、あとで楽です
3.画面のJSPを作成します
4.Strutsタグをいれて、JSPを修正します
5.画面に対応するActionFormを作ります
6.Submitでサーバーで処理するところに対応する、Actionを作ります
7.struts-config.xmlを設定します
8.モデルを作って、Actionから呼び出します
前回6まできたので、今回は「7.struts-config.xmlを設定します」です。
■具体例について
今回はいつもと違い、先に具体例、struts-config.xmlを示して、そのあとで、内容を書きます。
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="inputForm" type="pac1.inputForm" /> <form-bean name="kekkaForm" type="pac1.kekkaForm" /> <form-bean name="errorForm" type="pac1.errorForm" /> </form-beans> <action-mappings> <action path="/shori" type="pac1.ShoriCtrl" name="inputForm" scope="request" validate="false"> <forward name="success" path="/jsp/kekka.jsp" /> <forward name="error" path="/jsp/error.jsp" /> </action> </action-mappings> </struts-config> |
(上記 < > は、本当は半角です)
ここで、画面のイベントやフォワードの名前とJSPの関係は、以下のとおりです
(この設定ファイルを書きやすくするため、上記の図を作っています)
また、ActionFromのクラスと画面の関係は、以下のとおりです
input.jsp inputForm(ただし、error.jspのフォーム部分と同じ)
error.jsp errorForm(出力用)
kekka.jsp kekkaForm(JSP自体が、画面出力しかない)
さて、上記のXMLは、おおきく3つの部分に分かれます。
・DOCTYPE部分
・画面のActionForm定義:form-beans
・画面のAction定義:action-mappings
以下、それぞれについて説明します
■DOCTYPE部分
決まり文句です。なお、これは1.3用です。
1.1は、1.3と書いてあるところが違うのですが、
1.3で1.1を使わないほうがいいと思います(つまり、バージョンを直したほうがいいと思います。form-beanとaction-mappingsだけなら、たぶん、それでOKそう。。)
■画面のActionForm定義:form-beans
form-beansタグの中に、form-beanタグを書き、1ActionFormクラス1form-beanで書きます。こんなかんじ
<form-bean name="名前" type="パッケージ名.アクションクラス名" />
名前は、あとで使うaction-mappingsのところで使います。
テキトーに付けてください(というか、クラス名と同じにするとか、なんか決まりをつくったほうがいいです)。
■画面のAction定義:action-mappings
action-mappingsタグの中に、actionタグを書き、1Actionクラス1actionで書きます。こんなかんじ
<action path="JSPで書いたaction" type="パッケージ名.クラス名"
name="入力画面の名前" scope="request" validate="false">
<forward name="フォワード名" path="フォワードするJSP" />
:
</action>
”JSPで書いたaction”とは、JSPファイルのhtml:formタグのaction属性で指定したものです。
”入力画面の名前”とは、このActionの入力画面に対応する、ActionFormの名前なのですが、その名前は、上記「画面のActionForm定義:form-beans」で書いた、名前のことです。
”フォワード名”とは、Actionクラスで
return map.findForward("success");
でsuccessとか書いた、あのmap.findForwardの引数として指定したものです。
”フォワードするJSP”は、JSP名を書いてください(このアプリの下から書きます。なので、/jsp/kekka.jspとか、書くことになります)。
これだけ書けば、動きます。
で、このシリーズの次回では、「8.モデルを作って、Actionから呼び出します」なんですけど、モデル部分は、Javaの画面表示-その4:JSPで表示、JavaBeanで処理(その2:ソース) で示したShori.javaと同じですので、それは軽く触れる程度にして、中心的な話題は、配置について書こうと思います。