2003年度 データベース論

Webアプリケーションの方向性
データベース論
第13回
きょうの内容




JDBC を使った Servlet について学ぶ。
タグライブラリについて学ぶ。
「MVCモデル2」について学ぶ。
「MVCモデル2」を用いた開発技法について学ぶ。
JDBC を使った Servlet のコンパイル

次のパッケージはJ2SEには入っていない。
–
–

javax.servlet パッケージ
javax.servlet.http パッケージ
Tomcat にはこのパッケージが含まれているので、
classpath に含めてコンパイル
Java –classpath
“%CATALINA_HOME%\common\lib\servlet.jar;
%HSQLDB_HOME%\lib\hsqldb.jar”
JDBCTestServlet.java
TomcatにWebアプリケーションを置く


%CATALINA_HOME/webapps/ に配置
ひとつのファイル (war ファイル) にまとめても良い。
test/
|
|-- WEB-INF/ --- web.xml  必須
|
|- classes/
 Servlet ・Beanなどの
クラス
|
|- lib/
 使用するライブラリ
|-- loop.jsp
 JSP
Tomcat への配置


Servlet はコンパイルして、WEB-INF/classes に
置く。
JDBCドライバを WEB-INF/lib に置く。
WEB-INF/ --- web.xml
|- classes/ --- LoopServlet.class
|- lib/
--- hsqldb.jar
 JDBCドライバ
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が検索結果を表示する。
JavaBeans

この例では2つのBeanを用意している。
–
–

複数の図書データを格納する BookList
1冊の図書データを格納する BookData
Bean には setter, getter を用意する。
Servlet の処理
// データベースから検索して、結果をBeanに格納
BookList 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 の処理
// HttpSession で登録した JavaBeans
<jsp:useBean id="bookList"
class="jp.ac.wakhok.library.BookList"
scope="session" />
// タグライブラリの利用を宣言
<%@ taglib prefix="c"
uri="http://java.sun.com/jstl/core" %>
タグライブラリ


JSPの中で定義できる独自のタグ。
スクリプトレットを減らすことができる。
タグライブラリの例
<ul>
<c:forEach var="book" items="${bookList.iterator}" >
<li>
<c:out value="${book.title}" />
/
<c:out value="${book.author}" />
</li>
</c:forEach>
</ul>
Struts

このプログラムに1冊の本の詳細を表示させるとし
たら、どう改造したらよいのか?
–

Servlet を増やす?
Struts
–
–
WebアプリケーションのController と View を担当する
フレームワーク
Controller がはじめから1つだけ用意されており、デー
タの流れをXMLで記述する。