2003年度 データベース論

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