Java はじめてのサーブレット




WebサイトやWebサービスを作る場合、Javaではサーブレットを使用します。
サーブレットを使うと、通信処理を考えることなく、サーバーで必要な処理だけを書くことができます。

サーブレットとは・・?

サーバーで動作するプログラムです。
主に、ブラウザでアクセスされたときに動作。記述した処理を行って、ブラウザに処理結果を返します。
ブラウザからアクセスされることをリクエスト(要求)、ブラウザへ処理結果を返すことをレスポンス(応答)と呼びます。

どうやってサーブレットは動くの?

サーブレットは、コンテナ(Webコンテナ、サーブレットコンテナとも呼ばれます)の中で動作します。
コンテナはサーバーで動作していて、ブラウザからアクセスが来るのを待っています。
ブラウザからアクセスが来ると、アクセスされたURLに応じて、あらかじめ指定したサーブレットを呼び出してくれます。
よって、サーブレットを使うには、なんらかのコンテナが必要になります。
代表的なコンテナには、次のようなものがあります。

  • Apache Tomcat
  • JBoss
  • WebSphere Application Server

足し算するサーブレットのサンプル

ここでは、ローカルホストにインストールされたTomcatを前提に進めます。
最初にブラウザでアクセスされたときは、2つのテキストフィールドを持つ画面を表示。
2つのテキストフィールドに数字を入れて、「send」ボタンを押したときは、2つの数字を足し算した結果を表示します。

web.xml

次のテキストを入れたweb.xmlファイルを配置します。
配置先:<Tomcatをインストールしたディレクトリ>/webapps/TestWeb/WEB-INF/web.xml

TestServlet.java

TestServlet.javaをコンパイルしたTestServlet.classファイルを配置します。
配置先:<Tomcatをインストールしたディレクトリ>/webapps/TestWeb/WEB-INF/classes/TestServlet.class

実行結果

「http://localhost:8080/TestWeb/test」にアクセスしたとき

「http://localhost:8080/TestWeb/test」で、テキストに「1」と「2」を入れて「send」ボタンを押したとき

サンプルの解説

大きく、doGetメソッドとdoPostメソッドの2つがあります。

doGetメソッド

ブラウザのURLに「http://localhost:8080/TestWeb/test」を入れてアクセスしたときに動作します。
ブラウザに返すHTML(文字列)を、HttpServletResponse#getWriter()に追加していきます。

doPostメソッド

「http://localhost:8080/TestWeb/test」で、「send」ボタンを押したときに動作します。
ブラウザで入力されたパラメータは、HttpServletRequest#getParameter(String)で取得します。
パラメータを取得するには、フォームのテキストフィールドの名前「param_x」、または、「param_y」を指定します。
計算が終わったら、doGetと同じように、ブラウザへ返すHTMLを記述します。