Jakarta Struts (2) ソフトウェア特論 第11回 ここでの内容 Struts でのプログラミング手法について復習する。 Struts を使ったプログラムのコンパイル方法と実 行方法について学ぶ。 「図書検索アプリケーション」に機能を追加する。 Struts でのプログラミング(復習) 1. 2. 3. 4. 5. Webブラウザからの要求は、すべて 「ActionServlet」が受け取る。(用意されている) パラメータは「ActionForm Bean」へ (作成する) ビジネスロジックは「Actionクラス」で (作成する)。 処理結果は Model に格納。 表示は JSP で。Strutsのタグライブラリを使う。 Action クラスやJSPを呼び出す順序やタイミング は「アクションコンフィグレーションファイル」で。 図書検索アプリケーションから (1) 検索語入力画面 タグライブラリを使って、 JSP で記述する。 検索したい言葉を入力し て、ボタンを押すと、 “/searchBook” に処理が 移る。 <html:form action="/searchBook"> <html:text property="ndc" size="20“ /> <html:submit property=“submit” value=“Go” /> </html:form> 図書検索アプリケーションから (2) 検索処理の呼び出し “/searchBook” では、ま ず “ActionServlet” に。 入力フィールドにある検索 語は、ActionFormBean である searchForm に入 る。 検索処理は SearchBookAction という Actionクラスに。 <action-mappings> <action path="/searchBook" type="SearchBookAction" name="searchForm" scope="request"> <forward name="success" path="/list.jsp"/> </action> </action-mappings> 図書検索アプリケーションから (3) 検索処理の実行 Actionクラスの execute メ ソッドで検索を実行 結果は Bean に格納して HttpSession に このメソッドの返値によっ て、list.jsp への遷移が決 まる。 return( mapping.findForward(“success”)); <action-mappings> <action path="/searchBook" type="SearchBookAction" name="searchForm" scope="request"> <forward name="success" path="/list.jsp"/> </action> </action-mappings> 図書検索アプリケーションから (4) 検索結果の表示 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> Struts と Ant Struts を動かしたり、コンパイルしたりするには、 たくさんのライブラリや設定ファイルが必要になる。 そこで、Ant というツールを使うと楽になる。 Ant Java でできているビルドツール。Unix で言えば makeのようなもの。 Javaでできているので、環境に依存しない。 標準で多くの処理が組み込みに。コンパイル、パッ ケージングなどが手軽に行える。 処理内容の記述は “build.xml” というXMLファイ ルに。 Ant の使い方 Ant の zip ファイルを開く。 環境変数 ANT_HOME を設定する。 %ANT_HOME%\bin にパスを通す。 build.xml があるフォルダに移動して、次のコマン ドを実行する。 – ant compile あるいは ant war 図書検索アプリケーションを動かす (1) library-struts1.jar という Jar ファイルを取得する。 このファイルには、必要なソースファイルやライブ ラリが入っている。 Jar ファイルを開く – jar xvf library-struts1.jar Ant を実行 – – ant compile ant war 図書検索アプリケーションを動かす (2) Ant の実行によって、build.xml があるフォルダの 1つ上の階層に、 library-struts1.war というファイ ルができる。 このファイルに、必要なクラスやライブラリが含ま れている。 このファイルを Tomcat (%CATALINA_HOME%\webapps) に置く。 Tomcat を起動すると、自動的に librarystruts1.war が展開され、Webアプリケーションが 使えるようになる。 レポート課題 1月31日まで 2題のうちから、1題を選択して解答してください。 「図書検索アプリケーション」に 詳細表示機能を追加する どのようなプログラムを追 加する必要があるのか? 特に、どのようにリンクを 貼ればよいのか? Struts でのページ遷移の考え方 ページ遷移 = あるページ 他のページ ページ遷移の2つの方法 – – リンクをクリック フォームのボタンを押す (前回やりました) Struts では、すべてActionクラスを通してから画面 の遷移を行う – それによって、遷移の情報を struts-config.xml に記述 できるから。 追加するプログラム リスト表示をする JSP (list.jsp) から、詳細表示を するプログラムに処理を移す。 まず、詳細表示をするための JSP が必要 list.jsp からの要求を処理するための Action クラ スが必要 追加する設定 プログラムを追加したら、struts-config.xml の記述が必要 Action クラスを追加するので、action 要素の追加が必要 JSP上のリンクから Action クラスを呼ぶには、globalforwards 要素の追加が必要 <global-forwards> <forward name=“search/detail” path=“/searchBookDetail.do” /> </global-forwards> リンクの方法 (1) 本の特定 リンクのクリックによって、どの本の詳細データを 表示するか Web サーバ側に伝える必要あり。 どの本をクリックしたか特定できる情報をパラメー タとして設定する必要がある。 この場合、テーブルの主キーは id であるので、パ ラメータに id を追加 /searchBookDetail.do?id=12345 リンクの方法 (2) モデルの変更 モデルには、mapping と いうプロパティを用意する。 mapping では、本の特定 に必要なパラメータの情報 を格納する。 – – Name = “id” Value = “12345” public class BookData { private Map mapping; public void setId(String id) { this.id = id; setMapping(); } public Map getMapping() { return mapping; } public void setMapping() { mapping.put(“id”, id); } java.util.Map (1) 「キー」と「値」がペアになって いるコレクション キーの重複はない。 実装クラスには – – – java.util.HashMap java.util.WeakHashMap java.util.Hashtable HashMap や WeakHashMap は同期化さ れていない。 java.util.Map (2) // 生成 Map map = new HashMap(); // 登録 (“1000” がキー、“夏目漱石” が値) map.put(“1000”, “夏目漱石”); // キーから値を取得 String value = (String)map.get(“1000”); リンクの方法 (3) リンクの作成 mapping の指定によって、この部分をクリックすると、自動 的に id=12345 といったパラメータが付加される。 <html:link forward="search/detail" name="book" property="mapping"> <bean:write name="book" property="title" /> / <bean:write name="book" property="author" /> </html:link>
© Copyright 2024 ExpyDoc