記事の紹介
この記事ではサーブレットクラスの実行方法に対して扱います。
サーブレットクラスのURL
サーブレットクラスを実行するには、ブラウザでサーブレットクラスのURLを指定してリクエストします。ここまではHTMLファイルの実行方法と似てますが、指定するURLが異なります。サーブレットクラスのURLは、次の形式で指定できます。
http://<サーバ名>/<アプリケーション名>/<URLパターン>
サーブレットクラスはファイル名ではなくURLパターンというものをURL中に指定します。URLパターンは、サーブレットクラスをリクエストするときに使用する名前で、開発者が設定する事ができます。
たとえば、「HellowServlet」というクラス名のサーブレットクラスに「MyWorld」というURLパターンを設定した場合、そのクラスをリクエストするときのURLは、
http://<サーバ名>/<アプリケーション名>/hello
になります。
言い換えれば、サーブレットクラスはサーブレットクラスはURLパターンを設定しないとリクエストして実行することが出来ません。したがって、URLパターンの設定方法を理解することが凄く大事です。
URLパターンの設定
サーブレットクラスのURLパターンは「@WebServletアノテーション」で設定します。アノテーションはJava5から追加された機能で、クラスやメソッドなどに関連情報を付加することが出来ます。アノテーションで付加された情報は、外部ツールに読み込ませる事も可能です。
サーブレットクラスに@WebServletアノテーションを追加すると、アプリケーションサーバがそれを読み取り、URLパターンの設定を行います。
@WebServlet アノテーション
@WebServlet(“/URLパターン”)
*URLパターンは「/」から始める。
*Tomcatのバージョンが7以上である必要があります。
*javax.servlet.annotation.WebServletをインポートする必要があります。
URLパターンには文字列を設定することができます。下記のコードでは、サーブレットクラスHelloServletに「hello」というURLパターンを設定している例です。「/servlet/hello」と設定したURLの階層を増やしたり、「hello.html」と設定してHTMLファイルのように見せることもできます。
もちろん、クラス名と同じ名前で設定しても問題ありません。Eclipseでサーブレットクラスを作成した場合、URLパターンはクラス名と同じものが自動的に設定されます(この場合は’http://localhost:8080/Study(アプリ名)/HelloServlet(クラス名)’となります。
URLパターンの設定(ソース型) import javax.servlet.annotation.WebServlet; //... @WebServlet(“/hello”) public class HelloServlet extends HttpServlet { //... } //...
サーブレットの実行
サーブレットクラスにURLパターンを設定したら、ブラウザからリクエストして実行できるようになります。ブラウザからリクエストする方法はHTMLファイルからりくえすとするのと同じく、次の二つの方法があります。
方法① ブラウザを起動してURLを入力
ブラウザを起動した後、サーブレットクラスのURLを入力してリクエストします。(アプリケーションサーバが起動されてなければありません。)
方法② Eclipseの実行機能を利用する
リクエストするサーブレットクラスを選択し、右クリックから「実行」➞「サーバで実行」を選択します。
また、次のような方法もあります。
方法③ サーブレットクラスへのるんをクリックします。
次のように記述したリンクをクリックして、サーブレットクラスをリクエストします。
<a href=”/(アプリケーション名)/(URLパターン)/”>リンク文字列</a>
ex)<a href=”/Study/HelloServlet/”>サーブレットに移動</a>
このようなリクエスト型はよく、ウェブページを作る特に使われます。多くの場合は、Webアプリケーションに最初にリクエストする時に方法①や②によって実行されます。
このリクエストに対するレスポンスのHTMLにはリンクが含まれる事が多く、ユーザは以降のページを利用する時は、方法③を利用してページを移動します。
リクエストメソッドと実行メソッド
URLの入力、またはリンクのクリックでサーブレットクラスをリクエストすると、doGet()メソッドが実行されます。しかし、サーブレットクラスを常にdoGet()メソッドを実行するわけではありません。
サーブレットクラスが実行するメソッドは、リクエストメソッド(webを支える通信の仕組みリクエストとリスポンスを参考)によって決まります。詳細的には、GETリクエストされたらdoGet()メソッドを、POSTリクエストされたらdoPost()メソッドを実行します。リクエストしたとき、ブラウザは自動的にGETリクエストを行うため、doget()メソッドが実行されます。
入門JSP – サーブレットの基礎
- サーブレットの基礎-(1)-サーブレットの作成方法と基礎
- サーブレットの基礎-(2)-サーブレットクラスの実行方法
- サーブレットの基礎-(3)-サーブレットクラスを作成して実行する
- サーブレットの基礎-(4)-サーブレットの注意事項