講義で使用した PowerPoint ファイル
Download
Report
Transcript 講義で使用した PowerPoint ファイル
WebアプリケーションとTomcat
― これまでの復習とこれからの予習 ―
データベース論
第9回
きょうの内容
Servlet の概要について学ぶ。特に、HTTPの要
求と応答との関係に着目する。
Servlet の動かし方を学ぶ。
Webアプリケーションの仕組み (1)
3層モデル
Webアプリケーション (J2EE) の基本パターン
Webアプリケーションの仕組み (2)
Servlet と JSP
Servlet
–
–
JSP
–
–
HttpServlet を継承する Javaプログラム。
HTML を埋め込める (あまり使わないけど)
ほとんどHTML
Javaプログラムを埋め込める (あまり使わないけど)
どちらも「Webコンテナ」で動く。
普通は Servlet と JSP を組み合わせて使う。
Webアプリケーションの仕組み (3)
データベースの必要性
Webアプリケーションは「データ」を処理する。
–
–
–
図書データ
在庫リスト
掲示板の記事
「データ」は保存される (= 永続性を持つ)
データベースを使うと面倒がなくて良い。
–
データをただのファイルで保存しておくと、遅いし面倒。
Tomcat
Jakarta Project が作成している Webコンテナ
オープンソース
Servlet や JSP を動かすために必要
Apache に組み込んで使える
Tomcat 単独でも Webサーバとして使える
Tomcat をインストールするときの
注意点
環境変数はセットしましたか?
–
–
JAVA_HOME と CATALINA_HOME
それぞれ、Java と Tomcat がインストールされている
フォルダを指定する
ポート番号は変更しましたか? (実習室の場合)
インストール時に「NTサービス」にチェックを入れ
ておくとはまりやすいかも。
TomcatにWebアプリケーションを置く
%CATALINA_HOME/webapps/ に配置
ひとつのファイル (war ファイル) にまとめても良い。
test/
|
|-- WEB-INF/ --- web.xml 必須
|
|- classes/
Servlet ・Beanなどの
クラス
|
|- lib/
使用するライブラリ
|-- loop.jsp
JSP
Webアプリケーションへのアクセス
どこのホストで動いている?
どのポートで動いている?
どのWebアプリケーションを動かす?
この例では
http://localhost:8080/test/loop.jsp
JSP のサンプルから (1)
特殊なタグとJavaのプログラム
<%
for (int I = 1; I <=5; I++) {
%>
<p>サンプル <%= I %></p>
<%
}
%>
JSP のサンプルから (2)
for 文の対応関係
<%
for (int I = 1; I <=5; I++) {
%>
<p>サンプル <%= I %></p>
<%
}
%>
出力例)
サンプル 1
サンプル 2
サンプル 3
サンプル 4
サンプル 5
HTTP
JSPと要求・応答
要求の処理には、request という変数を使う。
–
–
–
–
request.getMethod()
request.getRequstURI()
request.getProtocol()
request.getRemoteAddr()
応答の処理には、response という変数を使う。
JSPを使ったクエリーの処理
<%= request.getParameter("familyName") %>
getParameter というメソッドを使う。
GET でも POST でも利用できる。
JavaBeansのルール
プロパティ
Bean の持つ「属性」のこと
本をあらわす Bean であれば、次のものがプロパ
ティ
–
–
–
–
タイトル
著者
出版社
など
「本」を表す Bean
public class Book implements Serializable {
private String title;
public Book() { …..}
public String getTitle() { return title;}
public void setTitle(String t) { title = t; }
…..
}
メソッドのネーミングルールとプロパティ
title というプロパティがある
–
–
setTitle() や getTitle() というメソッドがある
–
setTitle() や getTitle() というメソッドがある。
title というフィールドがあることを意味しない。
title というプロパティがある。
メソッドがあるから、プロパティが存在する
setter と getter
setter
–
–
getter
–
–
setTitle() というスタイルのメソッド
プロパティに値をセットする
getTitle() というスタイルのメソッド
プロパティの値を得る
どちらかが存在するだけでプロパティになりうる
setter と getter とプロパティ
setter setTitle()
–
Getter getTitle()
–
title というプロパティに値が設定できることを示す
title というプロパティの値を取得できることを示す
プロパティは “title”
–
–
setter と getter では、先頭が大文字になる
プロパティ名では、先頭が小文字
JSP から JavaBeans を呼び出す
JSPで3つのタグを使う
–
–
–
<jsp:useBean ….. />
<jsp:getProperty ….. />
<jsp:setProperty ….. />
タグだけで書けるので、スクリプトレットの量を減ら
せる。
Servlet とは
HttpServlet というクラスを継承したクラス。必要な
メソッドをオーバーライドする。
CGIと同じように、プログラムの中から HTML を出
力できる。
JSPも、Tomcatの内部では Servlet に変換される。
Servlet のメソッド
HTTPのGETメソッドに対して doGet
public void doGet(HttpServletRequest req,
HttpServletResponse
res)
HTTPのPOSTメソッドに対して doPost
public void doPost(HttpServletRequest req,
HttpServletResponse
res)
HttpServletRequest と
HttpServletResponse
HttpServletRequest
–
HTTPの「要求」に対応する
HttpServletResponse
–
HTTPの「応答」に対応する
Servlet のコンパイル
次のパッケージはJ2SEには入っていない。
–
–
javax.servlet パッケージ
javax.servlet.http パッケージ
Tomcat にはこのパッケージが含まれているので、
classpath に含めてコンパイル
Java –classpath
“%CATALINA_HOME%”\common\lib\servlet.jar”
LoopServlet.java
Tomcat への配置
Servlet はコンパイルしておくこと。
WEB-INF/classes フォルダに置く。
WEB-INF/ --- web.xml
|- classes/ --- LoopServlet.class
|
|- DateServlet.class
|- lib/
web.xml の編集
Servlet を置いただけでは動かない。
web.xml を編集する必要あり。
web.xml の例 (抜粋)
<servlet>
<servlet-name>loop</servlet-name>
<servlet-class>LoopServlet</servlet-class>
</servlet>
(中略)
<servlet-mapping>
<servlet-name>loop</servlet-name>
<url-pattern>/loop</url-pattern>
</servlet-mapping>
Servlet へのアクセス
web.xml の url-pattern 要素で指定した URL に
アクセスする。
http://localhost:8080/test/loop
http://localhost:8080/test/date
Servlet と JSP の使い分け
Servlet
–
Servlet から HTML を出力させると、プログラムの見通
しが悪くなる。 Servlet ではプログラムに専念するの
がよい。
JSP
–
JSP でスクリプトレットを使うと、読みにくい。 JSP で
は、できる限りタグを出力するのがよい。
タグライブラリ
JSPの中で定義できる独自のタグ。
スクリプトレットを減らすことができる。
タグライブラリの例
<ul>
<c:forEach var="book" items="${bookList.iterator}" >
<li>
<c:out value="${book.title}" />
/
<c:out value="${book.author}" />
</li>
</c:forEach>
</ul>
MVCモデル2
Servlet がHTTPの要求を処理する。
–
データベースへのアクセスなど
処理した結果を JavaBeans にまとめる。
Servlet は JavaBeans (または、Beans をまとめ
たコレクション) を JSP に渡す。
JSP はタグライブラリを駆使して処理結果を出力
する。
–
Bean のプロパティを出力する