記事の紹介
この記事ではサーブレットの作成方法と基礎に対して扱います。
サーブレットとは
サーブレットはJavaを使ってサーバサイドプログラムを作るための技術です。私たちはサーブレットの文法に従い、サーブレットクラスというくらすを開発し、アプリケーションサーバ上で実行することが出来るようになります。サーブレットクラスはブラウザからのリクエストによって実行され、その実行結果をHTMLで出力できます。出力されたHTMLは、アプリケーションサーバによってブラウザにレスポンスされます 。
サーブレットクラスは、通常のクラスと同様にクラス定義を行って作成します。
サーブレットクラスの作成
- まず、「ファイル」-「新規」-「サーブレット」を選択します。
- サーブレットクラスの名前を決めて完了を押せば自動的にサーブレットが生成されます。
- 最後にStudy/srcにサーブレットが生成されたことが確認できます。
サーブレットクラスの作成ルール
まず、サーブレットクラスを定義ために、守るべきのルールを説明します。
サーブレットクラスは、通常のクラスと同様にクラス定義を行って作成します。ただし、サーブレットクラスを定義するには、いくつか守らなければならないルールがあります。どのようにクラス定義をするか、基本的なサーブレットクラスの例をみせながら説明しましょ。
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } }
サーブレットえは以下の三つのルールに従ってクラスを定義します。ちなみに、Eclipseを使えば、これらの「ルール」はEclipseから「自動的」に書いてくれますので、細かく覚える必要はありません。
- ルール①(7行目) javax.servlet.http.HttpServletクラスを継承する
- HttpServletクラスはサーブレットクラスの「もと」となるクラスです。このクラスを継承することで、サーブレットクラスという特別なクラスを簡単に作ることができます。
- ルール②(9~12行目)doGet()メソッドをオーバーライドする。
- doGet()メソッドは、サーブレットクラスがリクエストされると実行されるメソッドです。いわば、サーブレッドクラスのメインメソッドといえるものです。
- ルール③(1~5行目)サーブレット関係のクラスをインポートする
- サーブレット関係のクラスは、主に「javax.servlet」と「javax.servlet.http」の両パッケージに入ってます。上記のコードでインポートしているクラスは、サーブレットクラスを作成するために最低限インポートする必要があります。
HttpServletRequestとHttpServletResponse
ブラウザからリクエストが届くと、アプリケーションサーバはサーブレットクラスのdoGet()を呼び出します。このとき引数として渡されるHttpServletRequestはブラウザから届いた「リクエスト」、HttpServletResponseはサーバから送り出す「レスポンス」に関係する情報と機能を持つインスタンスです。
サーブレットクラスでは、基本的にHttpServletRequestインスタンスに格納されているリクエストの詳細情報を処理して、結果画面のHTML情報をHttpServletResponseインスタンスを用いて送り返します。
Webアプリケーション特有の処理のほとんどは、 HttpServletRequest と HttpServletResponse でじつげんされます。
アプリケーションサーバ

アプリケーションサーバ
HTMLを出力
doGet()メソッド内には、HttpServletRequestによる処理を記述します。どのような処理を要求されるかはアプリケーションそれぞれですが、常に必要となるのがHTMLを出力する処理です。HTMLの出力はHttpServletResponseインスタンスを使用して、以下のように記述します。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<iframe style="width:100%;height:600px" src="www.dripcoke.com"></iframe>"); out.println("</html>"); }
Content-Typeヘッダの設定(3行目)
HttpServletResponseのsetContentType()メソッドを使用して、レスポンスのContent-Typeヘッダ(リクエストとレスポンス参照)を指定します。指定する内容はサーブレットクラスの出力によって違いますが、今回はHTMLを出力しますので「”text/html; charset=HTMLの文字コード”」とします。上記のソースの場合の文字コードはUTF-8となります。
HTMLの出力(5~8行目)
実行結果のHTMLを出力する処理です。この処理はContent-Typeヘッダの設定後に行わなければなりません。レスポンスされたgetWriter()メソッドで取得できるjava.io.PrintWriterインスタンのprintln()メソッドを行います。
サーブレットクラスのコンパイルとインスタンス化
作成したサーブレットクラスを実行するには、通常のクラスみたいにコンパイルとインスタンス化が必要です。
コンパイルは、Eclipseを使用している場合「上書き保存」時に自動的にほぞんされます。
また、サーブレットクラスをリクエストするとアプリケーションサーバが自動的にインスタンスを行いますので、いずれも開発者が手動で行う必要はありません。

入門JSP – サーブレットの基礎
- サーブレットの基礎-(1)-サーブレットの作成方法と基礎
- サーブレットの基礎-(2)-サーブレットクラスの実行方法
- サーブレットの基礎-(3)-サーブレットクラスを作成して実行する
- サーブレットの基礎-(4)-サーブレットの注意事項