PowerPoint ファイル

Download Report

Transcript PowerPoint ファイル

Servlet
J2EE I
第8回 / 2005-07-15
1
ここでの内容


Servlet の概要について学ぶ。特に、HTTP
の要求と応答との関係に着目する。
Servlet の動かし方を学ぶ。
2
Servletの基本
3
Servlet とは (1)



JSPと同じく、Webブラウザからのリクエスト
を処理して動的なページを作成するための
もの。
CGIと同じように、プログラムの中から
HTMLを出力できる。
JSPと同じく、Tomcat などの Webコンテナ
の内部で動く。
4
Servlet とは (2)

HttpServlet というクラスを継承したクラス。必要
なメソッドをオーバーライドする。
public class HogeServlet
extends HttpServlet {
}
5
Servletの起動

Servletと結びついているURLにアクセスが
あると、Servletのメソッドが実行される。
6
Servlet のメソッド


HTTPのGETメソッドからServletが呼ばれたら
 doGet
public void doGet(
HttpServletRequest req,
HttpServletResponse res)
HTTPのPOSTメソッドからServletが呼ばれたら
 doPost
public void doPost(
HttpServletRequest req,
HttpServletResponse res)
7
HttpServletRequest と
HttpServletResponse
8
HttpServletRequest と
HttpServletResponse

HttpServletRequest


HTTPの「要求」に対応するオブジェクト
HttpServletResponse

HTTPの「応答」に対応するオブジェクト
9
要求のヘッダ情報の取得

HttpServletRequest 型のオブジェクトであ
る request から ヘッダ情報の
Enumeration を取り出す。
Enumeration e =
request.getHeaderNames();
10
Enumeration の考え方



Enumeration には複数のオブジェクトが含
まれている。
これらのオブジェクトを while 文で次々と
処理していく。
while文1回のループで、1つのオブジェク
トを処理
11
Enumeration を使った処理
// e には(HTTPの)要求のヘッダの名前が複数ある
Enumeration e = request.getHeaderNames();
// まだ未処理のヘッダが残っているかどうか
while (e.hasMoreElements()) {
// 次に処理するオブジェクト (=ヘッダ)を取り出す
String name = (String)e.nextElement();
out.print(name + ": ");
}
12
クエリーの処理


HttpServletRequest 型のオブジェクトであ
る request を取得する。
request.getParameter(“familyName”) を
実行。
13
HTMLの出力

HttpServletResponse 型のオブジェクトで
ある response から PrintWriter オブジェク
トを取り出す。


HTTPの応答で、HTMLの出力を行うから
PrintWriter オブジェクトの println() ある
いは print() メソッドで HTML を書き出す
PrintWriter out = response.getWriter();
out.println(“<html>”);
14
TomcatでServletを動かす
15
Jarファイル


J2SEに含まれていないJavaのプログラム
(=クラスファイル)は「Jarファイル」にまとめ
られている。
Jarファイル


拡張子は “.jar”
Zip とほとんど同じフォーマット。つまり圧縮+
アーカイブの機能を持っている。
16
Jarファイルの取り扱い (1)


J2SE 添付の jar コマンドを使う
Jarファイルを作る



jar cvf sample.jar sample¥
sampleフォルダ以下を sample.jar にまとめる
Jarファイルを展開


jar xvf sample.jar
sample.jar を展開(解凍)する
17
Jarファイルの取り扱い (2)

Jarファイルの中身を見てみる



jar tvf sample.jar
sample.jar の中身を見てみる
jar コマンドのオプションは、Unix の tar コ
マンドとほとんど同じ
18
クラスパス


あるプログラムをコンパイル・実行するとき、
J2SE以外のjarファイルを必要とする場合、
classpath オプションで jar ファイルを指定
する
コンパイル


Javac -classpath hoge.jar Test.java
実行

java -classpath hoge.jar;. Test
19
Servlet のコンパイル

次のパッケージはJ2SEには入っていない。



javax.servlet パッケージ
javax.servlet.http パッケージ
Tomcat 中のjarファイルにこのパッケージが含まれ
ているので、classpath に含めてコンパイル
javac –classpath
“%CATALINA_HOME%\common\lib\servlet-api.jar”
LoopServlet.java
20
Tomcat への配置


Servlet はコンパイルしておくこと。
WEB-INF/classes フォルダに置く。
WEB-INF/ --- web.xml
|- classes/ --- LoopServlet.class
|
|- DateServlet.class
|- lib/
21
web.xml の編集


Servlet を置いただけでは動かない。
web.xml を編集する必要あり。
22
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>
23
Servlet へのアクセス

web.xml の url-pattern 要素で指定した
URL にアクセスする。
http://localhost:8080/test/loop
http://localhost:8080/test/date
24