サーブレットの基礎
はじめに
一昔前は、利用者のコンピュータに直接アプリケーションをインストールして利用する「デスクトップアプリケーション」なるものが主流でしたが、インターネット環境の向上と拡大に伴い、アプリケーションの形態も大きく変わりました。
現在は「デスクトップアプリケーション」に代わり、インストール不要、しかもWebブラウザ上で利用できる「Webアプリケーション」が主流となっています。SNSだったりショッピングサイトなどがそれにあたります。その「Webアプリケーション」を開発するために必要な技術の一つがサーブレットです。
サーブレットクラスについて
Java言語を使ってサーバサイドプログラムを作るためのサーブレットは、サーブレットクラスというクラスを開発することでアプリケーションサーバ上でそれらを実行することができます。
ブラウザからサーブレットクラスに対しリクエストが行われることで、JSPだったりJava beansだったり、実行結果を出力するために必要なプログラムへ命令をだします。出力された結果はアプリケーションサーバからブラウザにレスポンスされます。
サーブレットクラスの定義方法は、通常のクラスと同様にクラス定義を行います。ただ、サーブレットクラス特有のルールが存在します。基本的なサーブレットクラスのコードを例に見てみましょう。
① import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRespose;
② public class HelloServlet extends HttpServlet{
③ protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
}
}
サーブレットクラス定義のルール
①サーブレット関係のクラスをインポートする
サーブレット関係のクラスは、主に「javax.servlet」と「javax.servlet.http」の両パッケージに入っており、最低限必要なものは上記の5つです。
②javax.servlet.http.HttpServletクラスを継承する
親クラスであるHttpServletクラスを継承することによって、サーブレットクラスという特別なクラスを一から作成する必要がなくなります。
③doGet()メソッドをオーバーライドする
doGet()メソッドはサーブレットクラスがブラウザからリクエストされる際に実行されるメソッドで、通常のクラスのmainメソッドに該当します。
見慣れない文がほぼ全てですが、上記のルールは統合開発環境eclipseを使用すれば自動で書いてくれます。
サーブレットクラスの実行方法
サーブレットクラスの実行方法は
http://<サーバ名>/<アプリケーション名>/<URLパターン>
で実行できます。
サーバ名はアプリケーションサーバを起動して作成したサーバの名前(localhost:8080等)、アプリケーション名はeclipseでいうプロジェクト名を入力します。URLパターンは開発者が「@WebServletアノテーション」と呼ばれる機能を使い自由に決めることができます。
アノテーションはJava5から追加された機能で、アプリケーションサーバに「ApacheTomcat」を使用しているならば7以上でないと利用することができません。
アノテーションはサーブレットクラスに
@WebServlet(“任意のURLパターン”)
を加えることでURLパターンの設定を行うことができます。
ですが、eclipseを使って開発を行う場合、URLパターンはクラス名と同じものを自動で設定してくれます。
あとはアプリケーションサーバを起動した状態でブラウザを起動し、サーブレットクラスのURLを入力してリクエストするか、eclipseの実行機能を利用しeclipse内のブラウザでリクエストすることで実行することができます。
調べるときの注意点
HttpServletResponse等のサーブレットのAPIドキュメントはJava SEのAPIドキュメントには存在せず、Java EEのドキュメントに掲載されています。理由は単純で、サーブレットはJava SEの技術ではなくJava EEの技術だからです。
まとめ
- 「Webアプリケーション」を開発するために必要な技術の一つがサーブレット
- サーブレットクラスの定義にはルールが存在する
- http://<サーバ名>/<アプリケーション名>/<URLパターン>で実行
- サーブレットはJava EEの技術
お疲れさまでした。
簡単ではありますが、サーブレットについてご理解いただけたでしょうか。少しでも役に立てたのでしたら幸いです。
本稿を最後までお読みいただきありがとうございました。