□技術メモ - Struts
※管理人の個人的な技術メモです。このページの内容の実行結果について
管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。
-----------------------------------------------------------
○MVC2モデル
・「Control」がHttpリクエストを受け付ける。
このとき、DBにアクセスするなら「Model」を呼び出す。
・「Model」がデータにアクセスする。
多くの場合、SQLの発行によりDBにアクセスして、データの取得、更新等を行い、
JavaBeansにデータを保持する。
・「View」が取得したデータを表示形式に加工するなどして、画面を生成する。
JSPなどのように、ViewからModelを呼び出してデータを取得する場合もありえる。
・MVCモデルは、デザインパターンの1つとされているが、もっと大きな枠組み、
つまりソフトウェアアーキテクチャとも考えられる。MVCモデルをWebアプリケーション開発に適用
したものが、MVC2モデル。MVCモデルとの違いとしては、状態遷移の度にModelを作り直す点などがある。
○Struts
・StrutsとはWebアプリケーションの開発フレームワークの1つ。
・Java Servletと、JavaBeansを採用している。
・Viewの実現にはJSP以外にも、Jakarta Velocity, XSLTなどを使用することもできる。
〇上記以外の特徴
・全ての処理をActionServletクラスが受け取り、実際の処理はActionクラスで行われる。
・formの入力情報は自動でActionFormクラスに格納される。
・・・
○環境構築
・JavaによるWebアプリケーション開発環境は構築されているものとする。
・以下のサイトから jakarta-struts-1.1-rc2.zip をダウンロードする(2017/05/08記)
http://struts.apache.org/index.html
・以下のファイルを「WEB-INF/LIB」ディレクトリに配置する。
ほかにも.jarファイルがあるので、必要に応じてLIBに配置する。
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
struts.jar
○web.xmlの設定
・「WEB-INF/web.xml」は以下のように設定する。
・url-pattern は、拡張子.do が推奨されている。
・servlet-nameは特に規定はない。
・servlet-classは、org.apache.struts.action.ActionServlet を指定する。
全ての処理をActionServletクラスが受け取り、
実際の処理はActionクラスで行われる。
・init-param で初期値を設定する。
設定可能なパラメータは以下の通り。
(1)debug
debug出力のレベルを0〜6の数値で設定する。デフォルト値は0(出力なし)
(2)config
ActionServletの振る舞いを記述した設定ファイルを、
アプリケーションルートからの位置で指定する。
デフォルト値は、WEB-INF/struts-config.xml になる。
このファイルを、Struts設定ファイル と呼ぶこともある。
--------
...
Action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml --ここでStruts設定ファイルのパスを指定する
...
...
Action
*.do
...
--------
○Struts設定ファイルについて
・ActionServlet は呼び出されると、Struts設定ファイルに基づいて
実行するActionクラスを決定する。
・action-mappingsタグ において、URLに対応するアクションクラスを設定する。
(1)actionタグについて
・actionタグ において、URLに対応して呼び出す個々のアクションクラスの指定を行う。
・path属性は、URLを指定する。
・type属性は、クラスを指定する。
・つまり、以下のURLが指定された場合は、shori.CheckActionクラスが実行されることになる。
http://(サーバ名)/(ルートpath)/shori/check.do
(2)実行後の画面表示について
・Actionクラスは自身では表示を行わず、フォワード先で表示を行う。
・この場合は、forwordタグのpath属性を参照して、shori/check.jsp が呼び出されて表示を行うことがわかる。
・name属性は、複数のforwordが指定されている場合に1つを選択する際のkeyとして使用する。
struts-config.xml
--------
--URLで、/shori/check.doが指定された場合はここを参照する
--実行後の表示は、/shori/check.jspが行う。
--------
○Actionクラスの実装
・以下はActionクラスの実装例。
・org.apache.struts.action.Action の拡張クラスとして定義する。
・引数の意味は以下のとおり。
ActionMapping は、主にタグとタグの情報を取得する。
ActionForm はHTMLの