2003年度 データベース論

MVCモデル2による
Webアプリケーション
ソフトウェア特論
第9回
ここでの内容



Servlet と JSP の使い分けについて学ぶ。
「MVCモデル2」について学ぶ。
「MVCモデル2」を用いた開発技法について学ぶ。
Servlet と JSP の使い分け

Servlet
–

Servlet から HTML を出力させると、プログラムの見通
しが悪くなる。
 Servlet ではプログラムに専念するのがよい。
JSP
–
–
JSP でスクリプトレットを使うと、読みにくい。
スクリプトレットに間違いがあると、デバッグがしにくい。
 JSP では、できる限りタグを使うのがよい。
MVCモデル2 (1)
概要

Webアプリケーションを構
成する要素を3つに分ける。
–
–
–
Model
View
Controller
MVCモデル2 (2)
Model


アプリケーションのデータと必
要な処理(=ビジネスロジッ
ク)をまとめたもの
JavaBeans(あるいはそのコレ
クション)を使う
MVCモデル2 (3)
View


Model を表示させる部分
JSPを使う
MVCモデル2 (4)
Controller


Model と View を制御す
る
Servletを使う
MVCモデル2 (5)
処理の流れ

Servlet がHTTPから要求を受け取り、必要な処理をする。
–



データベースへのアクセスなど
処理した結果を JavaBeans にまとめる。
Servlet は JavaBeans (または、Beans をまとめたコレク
ション) を JSP に渡す。
JSP はタグライブラリを駆使して処理結果を出力する。
–
Bean のプロパティを出力する
サンプルプログラム




図書の検索を行うプログラム
まずユーザがWebブラウザに検索したい本の情
報を入力する。
その情報をもとに Servlet が検索処理をする。
JSPが検索結果を表示する。
Model の準備

Model は JavaBeans、あるいはそのコレクション
–
–

1冊の図書データはBookData に格納
複数の図書データは java.util.List に格納
Bean には setter, getter を用意する。
Servlet の処理
// データベースから検索して、結果をBeanに格納
List list = search(ndc, tyosya_hyouji, id,
title, author, publisher);
// HttpSession を取り出し、Beanを登録
HttpSession session = request.getSession();
session.setAttribute("bookList", list);
// 後の処理をJSPに任せる
context.getRequestDispatcher(jspFile)
.forward(request, response);
JSP の処理
// タグライブラリの利用を宣言
<%@ taglib prefix="c"
uri="http://java.sun.com/jstl/core" %>
// HttpSession から Model であるコレクションを取り
出す
<c:forEach var="book" items="${sessionScope.bookList}" >
タグライブラリを使ったループ処理
<ul>
<c:forEach var="book" items="${sessionScope.bookList}" >
<li>
<c:out value="${book.title}" />
/
<c:out value="${book.author}" />
</li>
</c:forEach>
</ul>