PowerPoint ファイル

Jakarta Struts (1)
ソフトウェア特論
第10回
ここでの内容

Struts での基本的なプログラミングについて学ぶ。
Struts とは



Jakarta Project が作成している、Webアプリケー
ション用のフレームワーク
MVCモデル2を用いている。
Struts は View と Controller を担当
Struts でのプログラミング
1.
2.
3.
4.
5.
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>
<servlet-name>action</servlet-name> *.do というパター
ンのアクションは、
<url-pattern>*.do</url-pattern>
ActionServlet で
</servlet-mapping>
処理をする
Tomcat への配置



StrutsのアーカイブのlibフォルダにあるJarファイ
ルを、WEB-INF/libにコピー。
タグライブラリの設定を記述している*.tldファイル
をWEB-INFにコピー。
struts-config.xml は WEB-INF に置く。