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,
HttpServletRequest と HttpServletResponse 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> <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/tokuron2003/ を参照のこと。