2.1.3 HTTPメソッドに対応するHttpServletメソッドRFC2616 にて記述されている、HTTPメソッドを使用して、通常ブラウザは データを要求します。 HttpServlet は抽象クラスであり、開発者はHTTPメソッドに対応するHttpServletクラスのメソッドを オーバーライドすることにより、その要求に対するレスポンスを生成します。 HttpServletクラスのメソッド名は、do + Httpメソッド名 となっています。
それぞれのHttpServletのメソッドは、以下のようなシグネチャを持っています。
protected void doXxx(ServletRequest request, ServletResponse response) HttpServletクラスは、service()メソッドで、HTTPメソッドの種類により、クライアントからの要求を、 上記のHttpServletメソッドを呼び出します。
service() メソッドのソースを確認すると、リクエストから HTTPメソッド名を取得して、
HTTPメソッド名によって、doXxx メソッドを呼び出しているところを確認できます。 ![]() ソースコード上で、Ctrl + o を押下することで、メソッドをインクリメンタルに検索できます。 ![]() 2.1.4 doGetメソッドを拡張するServlet試しに、doGetメソッドを拡張する簡単なサーブレットを作成して見ようと思います。 (1) servlet パッケージの作成パッケージの作成は必須ではありませんが、ここでは、「servlet」というパッケージを作成し、 そこにテストServletを格納していきます。 「WEB-INF/src」を選択し、コンテキストメニューから、New > Package にて、あらたに servlet パッケージを作成します。 ![]() (2) 拡張Servletクラスの作成作成した servlet パッケージを選択し、コンテキストメニューから、New > Class を選択します。 ![]() Name に "HelloServlet" を設定し、SuperClass にて、Browse ボタンを押下し、 java.servlet.http.HttpServlet を選択するか、直接入力し Finish ボタンを押下します。 ![]() 作成した HelloServletクラスを開き、以下の手順にて doGet()メソッドをオーバーライドします。 ソースコード上でコンテキストメニュー > Source > Override/Implement Method を選択 ![]() オーバーライド、または実装可能なメソッドの一覧がダイアログに表示されますので、 その中から、doGet メソッドにチェックを入れ、OK を押下します。 ![]()
以下のコードを実装します。 package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet { private static final long serialVersionUID = -930386857509367419L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Test Servlet 1</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello Servlet World.</h1>"); out.println("</body>"); out.println("</html>"); } } (3) Tomcat の設定Tomcatのインストールディレクトリの conf ディレクトリ C:\Program Files\Apache Software Foundation\Tomcat 5.5\confの web.xml ファイルを開き以下の編集を行います。 ![]() <!-- 以下のブロックのコメントアウトをはずす --> <servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.InvokerServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- ここまで --> : <!-- 以下のブロックのコメントアウトをはずす --> <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> <!-- ここまで --> (4) scwcd アプリケーション の設定今回は、Eclpseを利用して、Tomcat プロジェクト "scwcd" を作成していますが、 この、"scwcd" が Webアプリケーションとなります。 アプリケーションの設定用に以下の内容の、web.xml を作成し、C:\Program Files\eclipse 3.1\workspace\scwcd\WEB-INF に配置します。 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class> servlet.HelloServlet </servlet-class> </servlet> </web-app> ![]() プロジェクト scwcd を選択しコンテキストメニューから、Tomcat プロジェクト > Tomcatのコンテキストを更新する を選択します。 ![]() (5) Servletの実行以上でEclipse上から、作成した HelloServletを実行する準備が整いましたので、 Tomcatの起動アイコンを押下し、Tomcatを起動します。 ![]() ブラウザを起動し、次のアドレスを開き、作成したServletが実行されることを確認します。 ![]() (6) Servletのデバッグソースコード、たとえば HttpServletのservece メソッドの行を選択し、Shift + Ctrl + b を押下することで、 指定の行にブレークポイントを設定することができます。 この状態で、サーブレットを呼び出すと該当コードにて実行が一旦停止し、各種デバッグを行うことができます。 ![]() |