Servletは、JavaプログラムにHtml文書を埋め込む形で記述します。そのため、ロジックを重視したプログラムが書きやすくなっています。
ServletはHttpServletクラスを継承して使用します。このクラスは次のようなメンバを持っています。
メソッド名 | 説明 |
---|---|
doGet(HttpServletRequest, HttpServletResponse) | サーブレットがGET要求を処理する際に呼び出される。 |
doPost(HttpServletRequest, HttpServletResponse) | サーブレットがPOST要求を処理する際に呼び出される。 |
この節では、Servletを使ってGET送信を処理する方法を見てみましょう。
○ ファイル
プロジェクトに次のようなServletを追加してください。
パッケージ名 | test.servlet |
---|---|
クラス名 | GetServlet |
スーパークラス名 | javax.servlet.http.HttpServlet |
○ プログラム
doGetメソッドを追加したクラスに記述します。doGetメソッドの仕様に従って記述することができますが、Eclipseの機能を使って追加するメソッドを選択して記述させることもできます。エディターを右クリックして表示されるメニューより、「ソース(S)」―「メソッドのオーバーライド/実装(V)...」をクリックしてください。すると、次の図のようなダイアログボックスが表示されるので、「doGet(…)」メソッドにチェックを入れ、「OK」ボタンをクリックします。すると、ソースが追加されるので、追加されたメソッド内にプログラムを記述します。
次のように追加したメソッドにプログラムを記述してください。
〇 Webアプリケーション設定ファイルの編集
web.xmlに次の内容を追加してください。
〇 実行結果
http://localhost:8080/WebApp/getservlet
○ 解説
今回のサンプルはGET要求に対する処理をServletで行っています。URLに入力して要求をするとGET送信されるので、サーバーはServletからdoGetメソッドを呼び出します。doGetメソッドは引数にクライアントからの要求を表すHttpServletRequestオブジェクトと、クライアントへの応答を表すHttpServletRequestオブジェクトがセットされます。それらのオブジェクトを使ってクライアントから送られてきたデータを取得したり、クライアントにデータを送信したりします。
HttpServletRequestインタフェースには主に次のようなメソッドが用意されています。
メソッド名 | 説明 |
---|---|
getCookies | クライアントから送られてきた崛起オブジェクトの配列を取得する |
getHeader | リクエストヘッダーをString値として取得する |
getMethod | GET、POST、PUTのような、リクエストを生成したHTTPメソッド名を取得する |
getQueryString | リクエストのURLのパスの後ろに含まれているクエリ文字列を取得する |
getSession | リクエストに関連付けられているセッションオブジェクトを取得する |
HttpServletResponseインタフェースには主に次のようなメソッドが用意されています。
メソッド名 | 説明 |
---|---|
addCookie | レスポンスに指定されたクッキーを追加する |
getWriter | 文字データをクライアントに送り返すのに使用するPrintWriterオブジェクトを取得する |
setContentType | クライアントに送るコンテントタイプをセットする。getWriterメソッドを呼び出す前にこのメソッドを呼び出した場合のみ、指定したコンテントタイプが設定される |
Servletでは作成したファイルを呼び出すには、Webサーバーにクラスファイルを登録する必要があります。そのために「web.xml」ファイルで指定します。次のようなタグを使います。
タグ名 | 説明 |
---|---|
servlet | Servlet名、Servletのクラス名を指定する |
servlet-name | サーバー内で扱うServlet名を指定する |
servlet-class | サーバー内で扱うServlet名に対するServletクラスを指定する |
servlet-mapping | クライアントからの要求と、サーバー内のServletのマッピング名を指定する |
url-pattern | クライアントが指定する要求の内容を指定する |
今回作成したファイルを再び確認しましょう。16行目では、HttpServletResponseインタフェースのsetContentTypeメソッドを呼び出しています。ここでコンテントタイプとしてHtmlファイル、文字コードはUTF-8を指定しています。
17行目ではHttpServletResposeインタフェースのgetWriterメソッドを呼び出しています。結果としてUTF-8で書き込みのできるPrintWriterオブジェクトが取得でき、このオブジェクトのメソッドを使ってクライアントに送りたい情報を設定します。
20行目では、PrintWriterクラスのprintlnメソッドを使って、Html情報を書き出しています。これによりクライアント側のWebブラウザーに書き出した内容が表示されるようになります。