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で記述する。
© Copyright 2024 ExpyDoc