Java Servlet

■サーブレットの生い立ち

Java Servlet
Webサーバ(HTTPサーバ)をJavaアプリケーション・サーバに変身させるJavaテクノロジである
そのため
Java Servletは必ずといってよいほどCGIと比較される


CGIプログラムは
基本的に1つのプロセスで動作する
入力として環境変数(GET方式/PUT方式)または標準入力(PUT方式)を使い
結果として標準出力を使う
コマンドプロンプトで動作確認もできる
開発言語は Perl である


CGIの欠点
1. プロセス起動のためパフォーマンスが悪い
2. ステートレス(複数のリクエストにまたがってメモリ上でデータを維持できない)
3. コンピュータの機種によってPerlの互換性がない



Java Servletが登場


Java Servletの開発手順
ユーザー・プログラムを作成するときに
HttpServletクラスを継承したクラス(ユーザー・サーブレット)を作成する

ユーザー・サーブレットは
サーバ・プロセスである「サーブレット・エンジン」に
ユーザー・クラスとしてロードされ
基本的には1つの共通インスタンスを生成される
サーブレット・エンジンはそれ自身がJavaのプログラムである
該当サーブレットに対するHTTPリクエストは
このインスタンスに対してのスレッドとしてリダイレクトされる
これによって
HTTPリクエストの処理がユーザー・プログラムによって処理され結果がブラウザに送られる

この方法だと
プロセスの起動や終了処理がなく
スレッドであるため高速で
使用するリソースも少ない
さらに
インスタンスは一度ロードされるとメモリ上に維持されるため
アプリケーションの状態を維持することも可能である
これによりステートフルな技術であるといわれている
また
Javaで非常に高い移植性を発揮する

サーバ・プロセスであるサーブレット・エンジンがユーザー・サーブレットを呼び出すルール
1. リクエストに対するサービス・メソッドが定義されているか確認する
GETリクエストに対してはdoGetメソッド
POSTに対してはdoPostメソッドといった具合
2. doXXXメソッドが1つでも定義されるのに
リクエストに合致するメソッドがない場合
そのリクエストはServletが処理できないことを意味する
3. doXXXメソッドが1つもなく
serviceメソッドがあれば それが呼ばれる

ユーザー・サーブレットは
サーバに呼び込まれた時
生成されたインスタンスが共通に使われるため
スレッド間で共有できるものはインスタンス生成時にinitメソッドで初期化しておく
initメソッドは
ServletConfigオブジェクトを引数にもらう
RDBにアクセスするときのJDBC-URLなど外部データは ServletConfigに詰めて サーブレットに渡す
ServletConfigは
サーブレットのクラスファイルと同じディレクトリにクラス名「.servlet」というファイル名でXML形式にて置く

終了処理はdestroyメソッドで行う


サンプル

import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;public class EasyServlet extends

HttpServlet {
public void init( ServletConfig config ) throws ServletException {
super.init( config ); // 初期化処理
}

public void destroy() {
super.destroy(); // 終了処理
}

public void service( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.println( "<'HTML>" );
out.println( " <'BODY>" );
out.println( " サーブレット!" );
out.println( " <'/BODY>" );
out.println( "<'/HTML>" );
}
}

旧来のJavaアプリケーション・サーバでは
サーブレットのクラスファイルはアプリケーション・サーバの特定のクラスパスに
JSP/HTML/JPG/GIFのようなコンテンツ・データは
HTTPサーバのドキュメント・ルートに置かれる
のがルール


J2EE対応サーバでは
これらのファイルはすべて*.WAR(Web Application Archive)といわれるJARファイルに入れる
のがルール


■セッション管理
Java Servlet にはセッション管理機能がある
ステートフルのからくりもコレ

Java Servlet の仕様は
Sun Microsystems社のJavaWebServer(JWS)で提供され
その後分離した仕様として公開された後
J2EEに吸収された
セッション管理は
JWS 1.1 alpha時代に追加された概念

XXX

tag : Java Servlet XXX

2009-10-28 23:50 : j2ee : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud