Servlet J2EE I (データベース論) 第12回 / 2004-07-14
お知らせ 7/17 (土) に予定していた補講は中止します。 第3回レポート課題を出しています。 提出は 7/30 (金) まで。
ここでの内容 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 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 に含めてコンパイル javac –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