2003年度 データベース論

Servlet
Javaによる
Webアプリケーション入門
第6回
1
ここでの内容


Servlet の概要について学ぶ。特に、HTTP
の要求と応答との関係に着目する。
Servlet の動かし方を学ぶ。
2
Servletの基本
3
Servlet とは (1)


JSPと同じく、Webブラウザからのリクエスト
を処理して動的なページを作成するための
もの。
JSPと同じく、Tomcat などの Webコンテナ
の内部で動く。
4
Servlet とは (2)



HttpServlet というクラスを継承したクラス。
必要なメソッドをオーバーライドする。
CGIと同じように、プログラムの中から
HTML を出力できる。
JSPも、Tomcatの内部では Servlet に変換
される。
5
Servlet のメソッド


HTTPのGETメソッドに対して  doGet
public void doGet(
HttpServletRequest req,
HttpServletResponse res)
HTTPのPOSTメソッドに対して  doPost
public void doPost(
HttpServletRequest req,
HttpServletResponse res)
6
HttpServletRequest と
HttpServletResponse

HttpServletRequest


HTTPの「要求」に対応する
HttpServletResponse

HTTPの「応答」に対応する
7
HTMLの出力

HttpServletResponse 型のオブジェクトで
ある response から PrintWriter オブジェク
トを取り出す。


HTTPの応答で、HTMLの出力を行うから
PrintWriter オブジェクトの println() ある
いは print() メソッドで HTML を書き出す
PrintWriter out = response.getWriter();
out.println(“<html>”);
8
Servletでの要求・応答の処理
9
HttpServletRequest と
HttpServletResponse

HttpServletRequest


HTTPの「要求」に対応する
HttpServletResponse

HTTPの「応答」に対応する
10
要求のヘッダ情報の取得

HttpServletRequest 型のオブジェクトであ
る request から ヘッダ情報の
Enumeration を取り出す。
Enumeration e =
request.getHeaderNames();
11
Enumeration について

オブジェクトを「つぎつぎと」処理していくためのオ
ブジェクト
Enumeration e = request.getHeaderNames();
while (enum.hasMoreElements()) {
String name =
(String)enum.nextElement();
out.print(name + ": ");
}
12
クエリーの処理


HttpServletRequest 型のオブジェクトであ
る request を取得する。
request.getParameter(“familyName”) を
実行。
13
Tomcat で Servlet を動かす
14
Servlet のコンパイル

次のパッケージはJ2SEには入っていない。



javax.servlet パッケージ
javax.servlet.http パッケージ
Tomcat 中のjarファイルにこのパッケージが含まれ
ているので、classpath に含めてコンパイル
javac –classpath
“%CATALINA_HOME%\common\lib\servlet-api.jar”
LoopServlet.java
15
Tomcat への配置


Servlet はコンパイルしておくこと。
WEB-INF/classes フォルダに置く。
WEB-INF/ --- web.xml
|- classes/ --- LoopServlet.class
|
|- DateServlet.class
|- lib/
16
web.xml の編集


Servlet を置いただけでは動かない。
web.xml を編集する必要あり。
17
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>
18
Servlet へのアクセス

web.xml の url-pattern 要素で指定した
URL にアクセスする。
http://localhost:8080/test/loop
http://localhost:8080/test/date
19