Javaによる Webアプリケーション入門 第11回 Jakarta Struts (1) Javaによる Webアプリケーション入門 第11回
ここでの内容 Struts での基本的なプログラミングについて学ぶ。
Struts とは Jakarta Project が作成している、Webアプリケーション用のフレームワーク MVCモデル2を用いている。 Struts は View と Controller を担当
Struts でのプログラミング Webブラウザからの要求は、すべて「ActionServlet」が受け取る。(用意されている) パラメータは「ActionForm Bean」へ (作成する) ビジネスロジックは「Actionクラス」で (作成する)。処理結果は Model に格納。 表示は JSP で。Strutsのタグライブラリを使う。 Action クラスやJSPを呼び出す順序やタイミングは「アクションコンフィグレーションファイル」で。
入力フォームの作成 JSP で作成する。 タグライブラリを利用する。 <html:form action="/searchBook"> <td>分類番号</td> <td><html:text property="ndc" maxlength="20“ size="20“ /></td> <html:submit property=“submit” value=“検索” /> <html:reset value="reset" /> </html>
ActionForm Bean の作成 (1) Webブラウザからの要求のときに、クエリーとして与えられたパラメータを格納する。 ActionFrom を継承 JavaBeans のプロパティのネーミングルールに従ってメソッドを作成 入力フォームのパラメータ名と ActionForm Bean のプロパティが一致していなければならない。
ActionForm Bean の作成 (2) public class SearchForm extends ActionForm { public String getTitle() { return title; } public void setTitle(String title) { this.title = title;
ActionForm Bean の作成 (3) // このメソッドは、プロパティに値が設定される前に呼ばれる public void reset(ActionMapping mapping, HttpServletRequest req) { try { req.setCharacterEncoding("Shift_JIS"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
Action クラスの作成 (1) org.apache.struts.action.Action クラスを継承 ビジネスロジックを処理する 入力フォームのデータ処理なども execute メソッドをオーバーライド 最後に、この後でどのプログラムに処理を任せるか指定するための文字列を指定する。
Action クラスの作成 (2) // ActionForm Bean から ndc プロパティを // 取得 SearchForm form = (SearchForm)f; String ndc = form.getNdc();
Action クラスの作成 (3) // データベースの検索を行い、 // その結果を HttpSession に登録 List list = search(ndc, tyosya_hyouji, id, title, author,publisher); HttpSession session = request.getSession(); session.setAttribute("bookList", list);
Action クラスの作成 (4) // “success” は、この後でどのプログラムに // 処理を任せるか指定するための文字列 // (アクションコンフィグレーションファイルに // 記述) return(mapping.findForward("success"));
JSP <ul> <logic:iterate id="book" name="bookList" scope="session"> <li> <bean:write name="book" property="title" /> / <bean:write name="book" property="author" /> </li> </logic:iterate> </ul>
アクションコンフィグレーションファイル(1) Action クラスやJSPを呼び出す順序やタイミングなど、Struts の働きを定める。 struts-config.xml という名前のファイル
アクションコンフィグレーションファイル(2) ActionForm Bean を定義 type 属性はクラス名、name 属性は名前 <form-beans> <form-bean name="searchForm" type="SearchForm" /> </form-beans>
アクションコンフィグレーションファイル(3) <action-mappings> <action path="/searchBook" type="SearchBookAction" name="searchForm" scope="request"> <forward name="success" path="/list.jsp"/> </action> </action-mappings>
アクションコンフィグレーションファイル(4) <action path="/searchBook" type="SearchBookAction" 「アクション(URLで区別される処理内容)」を定義 type 属性が Action クラス名 path がパス名。実際は “/searchBook.do” というパス名になる。
アクションコンフィグレーションファイル(5) name="searchForm" scope="request"> このアクションで利用される ActionForm Bean scope 属性は、ActionForm Bean のスコープ。“session” か “request”
アクションコンフィグレーションファイル(6) <forward name="success" path="/list.jsp"/> Action クラスのこの部分に対応 return(mapping.findForward("success")); list.jsp にこの後の処理を任せる
web.xml <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> ...... <servlet-mapping> <url-pattern>*.do</url-pattern> </servlet-mapping> *.do というパターンのアクションは、ActionServlet で処理をする
Tomcat への配置 StrutsのアーカイブのlibフォルダにあるJarファイルを、WEB-INF/libにコピー。 タグライブラリの設定を記述している*.tldファイルをWEB-INFにコピー。 struts-config.xml は WEB-INF に置く。