2003年度 データベース論

Servlet
ソフトウェア特論
第7回
ここでの内容


Servlet の概要について学ぶ。特に、HTTPの要
求と応答との関係に着目する。
Servlet の動かし方を学ぶ。
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の「応答」に対応する
HTMLの出力

HttpServletResponse 型のオブジェクトである
response から PrintWriter オブジェクトを取り出す。
–

HTTPの応答で、HTMLの出力を行うから
PrintWriter オブジェクトの println() あるいは
print() メソッドで HTML を書き出す
PrintWriter out = response.getWriter();
out.println(“<html>”);
ヘッダ情報の取得

HttpServletRequest 型のオブジェクトである
request から ヘッダ情報の Enumeration を取り
出す。
Enumeration e = request.getHeaderNames();
Enumeration について

オブジェクトを「つぎつぎと」処理していくためのオブジェクト
Enumeration e = request.getHeaderNames();
while (enum.hasMoreElements()) {
String name = (String)enum.nextElement();
out.print(name + ": ");
}
クエリーの処理


HttpServletRequest 型のオブジェクトである
request を取得する。
request.getParameter(“familyName”) を実行。
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
第1回レポート課題について


12月5日(金)まで。
詳しくは
http://www.wakhok.ac.jp/~tomoharu/tokuron20
03/ を参照のこと。