Servlet学習ノート


もっと読む
一、何がservletですか?
     ServletはJavaで作成されたServerエンドプログラムで、プロトコルとプラットフォームとは無関係です。ServletはJava-enabled Web Serverで動作します。Java ServletはServerの能力を動的に拡張し、要求−応答モードを用いてWebサービスを提供することができる。
     Java servletはWebサーバに対してJava appleがWebブラウザに対しているようです。ServletはWebサーバにロードしてWebサーバ内で実行し、appleはWebブラウザにロードしてWebブラウザ内で実行する。
二、Servletの特徴
    ServletはJava技術のCGIプログラミングに対する答えです。Servletプログラムはサーバ端で動作し、Webページを動的に生成する。伝統的なCGIと多くの他のCGIのような技術と比べて、Java Servletはより高い効率を持ち、より使いやすく、機能がより強く、より良い移植性を持ち、投資を節約します。
効果的
従来のCGIでは、要求ごとに新しいプロセスが起動されます。CGIプログラム自体の実行時間が短いと、起動プロセスに必要なオーバーヘッドが実際の実行時間を超える可能性があります。Servletでは、各要求は、ヘビー級のオペレーティングシステムプロセスではなく、軽量級のJavaスレッドによって処理される。従来のCGIでは、N個の同時の同一のCGIプログラムに対する要求があれば、このCGIプログラムのコードはメモリにN回重複して搭載されています。Servletに対しては、処理要求はNスレッドであり、Servletクラスのコードのみが必要である。性能の最適化においても、ServletはCGIよりも多くの選択を持っています。例えば、以前の計算結果をバッファリングし、データベース接続の活動を維持するなどです。
便利です
Servletは、HTMLフォームデータを自動的に解析し、復号し、HTTPヘッダを読み取り、設定し、Cookieを処理し、セッション状態を追跡するなど、多くの実用的なツールルーチンを提供する。
機能が強い
Servletでは、伝統的なCGIプログラムを使用して完成しにくいタスクがたくさんあります。例えば、Servletは直接Webサーバと対話することができ、普通のCGIプログラムはできない。Servletはまた、データベース接続プールなどの機能が容易に実現できるように、各プログラム間でデータを共有することができる。
移植性がいい
ServletはJavaで作成され、Servlet APIは完璧な標準を持っている。そのため、I-Plant Enterprise Serverのために書いたServletは、実質的な変更を必要とせずにApache、Microsoft IISまたはWebStarに移植することができます。ほとんどの主流サーバは直接またはプラグインでServletをサポートします。
投資を節約する
安価で無料のWebサーバーが多く、個人や小規模なウェブサイトでも利用できるほか、既存のサーバーに対してServletがサポートされていない場合は、この機能を加えると無料になりがちです。
三、Servletの主要機能
Servletの主な機能は、データを対話的に閲覧し、修正し、動的なWebコンテンツを生成することである。このプロセスは:
1)クライアントがサーバに要求を送信する。
2)サーバは要求情報をServletに送信する。
3)Servletは応答コンテンツを生成し、Serverに伝達する。応答コンテンツの動的生成は、通常、クライアントの要求に依存する。
4)サーバは応答をクライアントに返す。
     Servletは通常のJavaプログラムのように見えます。Servletは、特定のJava Servlet APIに属するパケットを導入する。対象バイトコードなので、動的にネットワークからロードできます。Servlet対Servletは、Apple対Clientのようですが、ServletはServerの中で実行されていますので、グラフィカルユーザーインターフェースは必要ないと言えます。この角度から、ServletはFacess Objectとも呼ばれています。
四、JAVA Servletの優勢
1)Servletは、クライアントに返信する応答コンテンツを生成するために、他のリソース(ファイル、データベース、Apple、Javaアプリケーションなど)と対話することができる。必要であれば、要求−応答中の情報を保存することもできる。
2)Servletを採用すると、サーバはデータベースなどのローカルリソースへのアクセスを完全に許可し、Servlet自身は外部ユーザのアクセス数とアクセス特性を制御することができる。
3)Servletは、他のサービスのクライアントプログラムとすることができ、例えば、分散アプリケーションシステムにおいて、ローカルハードディスクから、またはネットワークを介してリモートハードディスクからServletを起動することができる。
4)Servletは、リンクされてもよい。一つのServletは、他のServletまたは一連のServletを呼び出すことができ、すなわち、そのクライアントとなる。
5)Servlet Tag技術を採用し、HTMLページでServletを動的に起動することができます。
6)Servlet APIはプロトコルと無関係である。それはそのプロトコルを伝えないという仮定があります。
7)すべてのJavaプログラムのように、Servletは対象Java言語に向けたすべての利点を持っています。
8)ServletはJavaアプリケーションのすべての利点を提供しています。移植可能、ロバスト、易開発。ServletのTag技術を使用して、Servletは静的なHTMLページに埋め込まれた動的コンテンツを生成することができる。
9)一つのServletは、クライアントから送信された最初の要求によってアクティブ化され、その後、バックグラウンドで動作し、以降の要求を待つ。各要求は、完全なプロセスではなく、新しいスレッドを生成する。複数のお客様は同じプロセスで同時にサービスを受けることができます。一般的には、ServletプロセスはWeb Serverをアンインストールするときだけアンインストールされます。
五、Servletライフサイクル
1)Servletを搭載する。この操作は一般に動的に行われる。しかし、Serverは通常、Server起動時に特定のServletを強制的にロードし、初期化するための管理オプションを提供する。
2)ServerがServletを作成した例
3)Server Servletのinitを呼び出す()方法
4)一つのクライアントの要求がServerに到達した。
5)Serverは要求対象を作成します。
6)Serverは応答オブジェクトを作成します。
7)ServerはServletのserviceをアクティブにし、パラメータとして要求と応答オブジェクトを送る。
8)service()方法は、要求対象に関する情報を取得し、処理要求を行い、他のリソースにアクセスし、必要な情報を得る。
9)service()方法は応答オブジェクトの方法を用いて、Serverに応答を送り、最終的にクライアントに到達する。service()方法は、要求を処理するために、doGet()またはdoPost()またはプログラマ自身が開発した新しい方法のような他の方法を活性化することができる。
10)より多くのクライアント要求に対して、Serverは新しい要求と応答オブジェクトを作成し、このServletのservice()方法をアクティブにして、この2つのオブジェクトをパラメータとしてそれに渡す。
以上のサイクルを繰り返しますが、init()メソッドを再度呼び出す必要はありません。一般的なServletは一回だけ初期化され、ServerがServletを必要としなくなった時(一般的にServerがオフになった時)、ServerはServletのDestroy()方法を呼び出します。
六、ServletとGeneraicServlet、HttpServletの違い
Servletはhttpプロトコルしか処理できないわけではありません。
HttpServletはhttp側の要求と応答を処理するために専用です。
javax.servlet.Servletはインターフェースです。
avax.servlet.GeneraicServletは、javax.servlet.HttpServletは、Servletを実現する2つのクラスであり、プロトコルを横断する必要があるならば、GenericServletを継承する。HTTP要求のservletを処理する必要があれば、HttpServletを引き継ぐ。
具体的な関係は以下のとおり一目瞭然です。
public interface Serializable

public interface Servlet 

public interface ServletConfig

public abstract class GenericServlet extends Object 
implements Servlet, ServletConfig, Serializable

public abstract class HttpServlet extends GenericServlet 
implements Serializable
七、Servlet RequestとHttpServlet Request
具体的な関係は次のように分かります。Servlet ResonseはHttpServlet Servlet Resonseと同じです。
public interface ServletRequest

public interface HttpServletRequest extends ServletRequest 

public class ServletRequestWrapper extends Object 
implements ServletRequest

public class HttpServletRequestWrapper extends ServletRequestWrapper 
implements HttpServletRequest
八、JSPとはどういうことですか?
     JSPの利点は、業務ロジック処理とWEB UI作業を別々に行うことです。JSPページは普通のウェブページにJSP要素をいくつか挿入しています。これらのJSP要素は要求に応じて動的テキストを出力します。
     JSP容器はJSPファイルをServlet実現類に翻訳しています。翻訳動作は通常、最初の要求が来た時に、すべてのJSP元素がJAVAコードに変わります。次にコンテナをコンパイルし、必要に応じてServletを呼び出してクラスを実現します。後の仕事は実はServletの働き方と同じです。業務ロジックとWEBページの静止)コードを混ぜる必要はないです。JSPの仕組みです。