MVCモデル2による Webアプリケーション Javaによる Webアプリケーション入門 第10回
ここでの内容 Servlet と JSP の使い分けについて学ぶ。 「MVCモデル2」について学ぶ。
Servlet と JSP の使い分け Servlet JSP 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、あるいはそのコレクション Bean には setter, getter を用意する。 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/jsp/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>