Servletに必要なインターフェースクラス
javax.servlet.Servlet インターフェース
直接的、もしくは間接的に必ず、このインターフェースを実装している必要がある。
このインターフェースには、Servletプログラムが必ず実装していなければいけない
メソッドが定義されている。
javax.servlet.GenericServlet クラス
javax.servlet.Servletインターフェースを実装したクラスで、
プロトコルに依存しないServletプログラムを作成する際に使用。
javax.servlet.http.HttpServet クラス
javax.servlet.GenericServletクラスを継承したクラスで、Httpプロトコルベースの
Servletプログラムを作成する際に使用。
通常このクラスを継承してServletプログラムを作成する。
HttpServletクラスは抽象クラスのため、このクラスを継承したServletプログラムは
必ず1つのメソッドをオーバーライドする必要がある。
Servletのライフサイクル
init()メソッドの呼び出し
Servletプログラムに初めてリクエストが会ったときにサーブレットコンテナ(Tomcat)は、
Servletプログラムを初期化する。その際にinitメソッドが呼び出される。
そのため、データベースの接続などServletプログラムを実行する前に事前設定が必要な
処理をinitメソッドに記述しておく。
initメソッドは初めてリクエストが会ったときに一度だけ呼び出される。
service(HttpServletRequest,HttpServletResponse)メソッドの呼び出し
Servletプログラムにリクエストがある度にserviceメソッドが呼び出される。
serviceメソッドはリクエストのHttpメソッドを解析し、対応するdoXxxメソッドを呼び出す。
HttpメソッドとはGETメソッドやPOSTメソッドのこと。
doXxx(HttpServletRequest,HttpServletResponse)メソッドの呼び出し
HttpServletクラスには以下のdoXxxメソッドが定義されている。
HttpServletクラスを継承したServletプログラムは通常いずれかの
doXxxメソッドをオーバーライドする。通常はdoGetメソッドか、doPostメソッドをオーバーライドする。
※serviceメソッドをオーバーライドした場合は、doXxxメソッドは呼び出されない。
呼び出す場合は、serviceメソッド内で意識的にdoXxxメソッドを呼び出す必要がある。
doGetとdoPost
doGet→URLからキーワード(変数)を扱う方法。
doPost→ページからキーワードを扱う方法
クライアントからのデータ取得
データの取得にはHttpServletRequestインターフェースを使用
☆各メソッドについて
【戻り型】【メソッド】【解説】
- public String/getParameter(String<パラメータ名を指定>)/パラメータがなければnullが返る。
- public String[]/getParameterValues(String<パラメータが複数ある場合>)/パラメータがなければnullが返る。
- public Emumeration/getParameterNames()/クライアントから送信される全てのパラメータのパラメータ名を取得
- public void/setCharacterEncoding(String)/エンコード方式を引数に指定したエンコード方式に置き換える。
パラメータを取得する前に指定。
スコープについて
データの有効範囲のこと。Servletのスコープは3つある。
【Session】→Httpセッション間でデータを共有したい場合
【application】→webアプリケーション間でデータを共有したい場合
【request】→リクエスト間でデータを共有したい場合
☆各スコープのデータ操作方法
【戻り型】【メソッド】【解説】
- object/getAttribute(String)/引数に指定されたデータ名に該当するデータ値を返す。
- Emumeration/getAttributeNames()/スコープで利用可能な全てのデータ名を返す
- void/removeAttibute(String)/引数に指定されたデータ名をスコープから削除する。
- void/setAttribute(String,Object)/第一引数にデータ名、第二引数にデータ値を指定し、スコープにデータを登録する。
セッション管理
異なるページ間で同一のクライアントを認識する方法。
Servletプログラムはセッション管理にクライアントごとに割り当てる。
セッションIDを使用。
セッションIDは、不規則な英数字の組み合わせを10数桁以上の組み合わせで作成され、
このセッションIDをサーバは初回アクセス時にクライアントに送信し、クライアントは受け取ったセッションIDをリクエスト時に
一緒に送信する。
これで、サーバはクライアントを一意に識別することができ、1セッションの間、クライアントの情報を保持することができる。
通常、セッションIDはクッキーに保存される。
クライアントのクッキーが利用できない場合、URLリライティング(URLにセッションIDを含める)を行う。
☆セッションタイムアウトを適切に設定する。
⇒一定時間リクエストが無かったセッションは切断する必要がある。
☆使用済みのセッションは必ず破棄する。
⇒ログアウトなどの操作をユーザが行った場合、セキュリティ的な観点からも必ず、セッションの破棄を行う。
最終更新:2009年11月26日 14:38