Servletは、データJava Webコンポーネントを共有するいくつかの方法を実現する。
Servlet Java Webの3つのコンポーネントは、Servletコンポーネント(要求を受け入れ、データに応答する)、Filterコンポーネント(フィルタ、ブロック要求)、Listenerコンポーネント(モニター)を含み、これらの3つのコンポーネントは、java Webコアコンテンツを構成し、バックエンドとしてもJava Webの最も重要なコンテンツである。
一、Servlet概要
Servletは、sun社が提供する動的なウェブリソースを開発するための技術である。
Sun社はAPIでservletインターフェースを提供しています。ユーザーが動的なウェブリソース(すなわちJavaプログラムを開発してブラウザにデータを出力する)を送信するには、次の2つのステップが必要です。
1、Javaクラスを作成し、servletインターフェースを実現する。
2、開発されたJava類をウェブサーバに配置する。
一般的な呼び方の習慣によって、私達もservletインターフェースを実現したjavaプログラムをServletと呼びます。
二、Servletの運行過程
ServletプログラムはWEBサーバで起動され、ウェブサーバはクライアントのServletアクセス要求を受信した後:
①Webサーバは、まず、Servletをロードし、作成したオブジェクトの例を確認する。もしそうであれば、直接にステップ④を実行し、そうでなければ、ステップ②を実行します。
②Servletの例示的なオブジェクトをロードして作成します。
③Servletインスタンスオブジェクトのinit()メソッドを呼び出します。
④HTTP要求メッセージをカプセル化するためのHttpServletRequestオブジェクトとHTTP応答メッセージを表すHttpServletResonseオブジェクトを作成し、Servletのservice()方法を呼び出し、要求と応答オブジェクトをパラメータとして送る。
⑤WEBアプリケーションが停止または再起動される前に、ServletエンジンはServletをアンインストールし、アンインストールする前にServletのdestroy()メソッドを呼び出します。
Servletコンポーネント:
Servletコンポーネントとは、処理要求と送信応答のプロセスは、Servletというプログラムによって実行され、Servletは、動的ページを実現するために派生されたものである。
全体のプロセス:
クライアントがサーバに要求を送信します。サーバは要求情報をServletに送信します。Servletは応答コンテンツを生成し、サーバに送信する。コンテンツの動的な生成に応答して、クライアントの要求に通常依存する。サーバは応答をクライアントに返します。
複数のServlet間でデータを共有するためのソリューション
Servlet仕様では、4つのデータ共有スキームを提供します。 Servlet Contextインターフェース HttpServletRequestインターフェース HttpSessionインターフェース Cookie類 RequestとReponse
==すべてサーバーによって作成されます。私達はそれらを使います。
==requestオブジェクトは要求メッセージを取得するためのものであり、レスポンスメッセージを設定するためのオブジェクトである。
==requestオブジェクト継承体系構造:
<<継承>>
<<実装>>
(tomcat類)
転送とリダイレクト
第1の
1、転送に属し、サーバジャンプでもあり、方法呼び出しに相当し、現在のファイルを実行する過程で実行対象ファイルに転向し、2つのファイル(現在のファイルとターゲットファイル)は同一の要求に属し、前後のページで一つのrequestを共有し、これを通じて一つのデータまたはsession情報を伝達することができ、
2、前後2回実行した後、アドレスバーは変更されません。まだ現在のファイルの住所です。
3、本ウェブアプリケーション以外のページやウェブサイトに転向できないので、方向転換のスピードが速いです。
4、URLに含まれる「/」は、アプリケーション(項目)の経路を表します。
第二の
1、リダイレクトに属し、クライアントのジャンプでもあり、クライアントがサービス端末に要求を送信した後、サーバーは応答に戻り、クライアントが応答を受信した後にもう一度サービス端末に要求を送信し、合計2回の要求であり、前後のページは一つのrequestを共有しないので、
2、前後2回実行した後、アドレスバーが変更されたのは、対象ファイルの住所です。
3、本ウェブアプリケーション以外のページとウェブサイトに転向できるので、方向転換のスピードは比較的に遅いです。
4、URL種に含まれる「/」はルートディレクトリの経路を表します。
特殊なアプリケーション:データを修正、削除、追加する場合は
どのように第二の方法でデータを転送しますか?
1、sessionは選択できますが、第二のファイルから削除します。
2、要求されたurlにパラメータを持ち込むことができ、
典型的な応用シーン: forward:Servletにアクセスして業務ロジックを処理し、その後forwardからjspまで処理結果を表示し、ブラウザ内のURLは不変です。 redirect:フォームを提出し、処理が成功したら別のjspにredirectを送り、フォームの重複提出を防止し、ブラウザ内のURLが に変わった。
グローバルスコープオブジェクト
6.開発者習慣
7.仕事の原理:各ウェブサイトにはグローバルスコープの対象が存在します。
グローバル作業領域オブジェクトにデータを保存し、現在の他のservletはこのデータをグローバルスコープオブジェクトから入手して使用することができます。
8.ライフサイクル:Httpサーバの起動中に、自動的にメモリにグローバルスコープオブジェクトを作成し、実行中にグローバルスコープオブジェクトが一つしかなく、常に生存しています。Httpサーバがオフになったら、廃棄します。
グローバルスコープオブジェクトライフサイクルは、ウェブサイト全体を通じて実行されます。
は、ドメインオブジェクト である。は、グローバル構成パラメータ を読み取ることができる。は、現在のプロジェクトディレクトリの下のリソースファイル を検索することができます。は現在のプロジェクト名(了解) を取得することができます。
ドメインの対象は以下の3つの方法があります。 を追加します。 。 。
Http Sessionサービスエンドの技術
サーバは、各ユーザのために独立した
Http Sessionの原理
ユーザがServletに初めてアクセスすると、サーバ端はユーザに独立したSessionを作成します。
そして、
あるものは持ち出して使う。なしでSessionを作成しました。
ドメインの範囲:
Conteextドメイン>Sessionドメイン>Requestドメイン
セッションが終了しない限り、セッションは存在しますが、セッションにはデフォルトの生存時間があります(30分)
Cookie
クライアントセッション技術は、データをクライアントに保存します。快速入門を使う: は、Cookieオブジェクトを作成し、データ をバインディングする。
1.デフォルトはブラウザのクローズによって破棄されます。
2.手動設定の場合、Cookieの生存時間を設定し、ブラウザを閉じてCookieを削除しない;
サーバー側セッション技術
Servletの場合:
Servletがクライアントアクセスの最初のWEBアプリケーションのリソースである場合は、request.get Session()またはrequest.get Session(true)を呼び出してこそ、HttpSessionオブジェクトを作成することができます。
1)ServletでHttpSessionオブジェクトをどう取得しますか?
もしtrue createに戻ることがあれば、必ずHTTPSessionのオブジェクトに戻ります。エン前JSPページに関連するHttpSessionオブジェクトがない場合、サーバは新しいHttpSessionオブジェクトを作成して戻ってきます。あれば、直接に関連に戻ります。
2.HttpSessionの対象をいつ廃棄しますか?
1)直接HttpSessionを呼び出すinvalidate()方法:HttpSessionを無効にする
2)サーバが現在のWebアプリケーションをアンインストールしました。
3)HttpSessionの期限を超過しました。
HttpSessionの期限切れを設定します。単位はSです。
Sessionには以下の特徴があります。
(1)Sessionのデータはサーバ端に保存されます。
(2)Sessionでは任意の種類のデータを保存できます。
(3)Sessionデフォルトのライフサイクルは30分で、手動でより長い時間またはより短い時間を設定できます。
ここでは、Servletがデータを共有するJava Webコンポーネントを実現するいくつかの方法についての記事を紹介します。Servletに関する詳細な共有データの内容は、以前の記事を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。
一、Servlet概要
Servletは、sun社が提供する動的なウェブリソースを開発するための技術である。
Sun社はAPIでservletインターフェースを提供しています。ユーザーが動的なウェブリソース(すなわちJavaプログラムを開発してブラウザにデータを出力する)を送信するには、次の2つのステップが必要です。
1、Javaクラスを作成し、servletインターフェースを実現する。
2、開発されたJava類をウェブサーバに配置する。
一般的な呼び方の習慣によって、私達もservletインターフェースを実現したjavaプログラムをServletと呼びます。
二、Servletの運行過程
ServletプログラムはWEBサーバで起動され、ウェブサーバはクライアントのServletアクセス要求を受信した後:
①Webサーバは、まず、Servletをロードし、作成したオブジェクトの例を確認する。もしそうであれば、直接にステップ④を実行し、そうでなければ、ステップ②を実行します。
②Servletの例示的なオブジェクトをロードして作成します。
③Servletインスタンスオブジェクトのinit()メソッドを呼び出します。
④HTTP要求メッセージをカプセル化するためのHttpServletRequestオブジェクトとHTTP応答メッセージを表すHttpServletResonseオブジェクトを作成し、Servletのservice()方法を呼び出し、要求と応答オブジェクトをパラメータとして送る。
⑤WEBアプリケーションが停止または再起動される前に、ServletエンジンはServletをアンインストールし、アンインストールする前にServletのdestroy()メソッドを呼び出します。
Servletコンポーネント:
Servletコンポーネントとは、処理要求と送信応答のプロセスは、Servletというプログラムによって実行され、Servletは、動的ページを実現するために派生されたものである。
全体のプロセス:
クライアントがサーバに要求を送信します。サーバは要求情報をServletに送信します。Servletは応答コンテンツを生成し、サーバに送信する。コンテンツの動的な生成に応答して、クライアントの要求に通常依存する。サーバは応答をクライアントに返します。
複数のServlet間でデータを共有するためのソリューション
Servlet仕様では、4つのデータ共有スキームを提供します。
request
及びresponse
オブジェクトの原理:==すべてサーバーによって作成されます。私達はそれらを使います。
==requestオブジェクトは要求メッセージを取得するためのものであり、レスポンスメッセージを設定するためのオブジェクトである。
==requestオブジェクト継承体系構造:
ServletRequest
インターフェース<<継承>>
HttpServletRequest
インターフェース<<実装>>
(tomcat類)
org.apache.catalina.connector.RequestFacade
転送とリダイレクト
第1の
request.getRequestDispatcher().forward(request,response)
:1、転送に属し、サーバジャンプでもあり、方法呼び出しに相当し、現在のファイルを実行する過程で実行対象ファイルに転向し、2つのファイル(現在のファイルとターゲットファイル)は同一の要求に属し、前後のページで一つのrequestを共有し、これを通じて一つのデータまたはsession情報を伝達することができ、
request.setAttribute()
とrequest.getAttribute()
。2、前後2回実行した後、アドレスバーは変更されません。まだ現在のファイルの住所です。
3、本ウェブアプリケーション以外のページやウェブサイトに転向できないので、方向転換のスピードが速いです。
4、URLに含まれる「/」は、アプリケーション(項目)の経路を表します。
第二の
response.sendRedirect()
:1、リダイレクトに属し、クライアントのジャンプでもあり、クライアントがサービス端末に要求を送信した後、サーバーは応答に戻り、クライアントが応答を受信した後にもう一度サービス端末に要求を送信し、合計2回の要求であり、前後のページは一つのrequestを共有しないので、
request.setAttribute()
で設定された属性値を読み取ることができない。2、前後2回実行した後、アドレスバーが変更されたのは、対象ファイルの住所です。
3、本ウェブアプリケーション以外のページとウェブサイトに転向できるので、方向転換のスピードは比較的に遅いです。
4、URL種に含まれる「/」はルートディレクトリの経路を表します。
特殊なアプリケーション:データを修正、削除、追加する場合は
response.sendRedirect()
を使うべきです。request.getRequestDispatcher().forward(request,response)
を採用すれば、操作前後のアドレス欄は変更されず、依然として修正されたコントローラであり、このとき現在のページを更新すると、再度データの修正を要求する人がいます。つまり、ページを更新すると、データが追加される原因です。どのように第二の方法でデータを転送しますか?
1、sessionは選択できますが、第二のファイルから削除します。
2、要求されたurlにパラメータを持ち込むことができ、
"add.htm?id=122"
のように。典型的な応用シーン:
グローバルスコープオブジェクト
6.開発者習慣
ServletContext
オブジェクトを「グローバルスコープオブジェクト」と呼ぶ。7.仕事の原理:各ウェブサイトにはグローバルスコープの対象が存在します。
グローバル作業領域オブジェクトにデータを保存し、現在の他のservletはこのデータをグローバルスコープオブジェクトから入手して使用することができます。
8.ライフサイクル:Httpサーバの起動中に、自動的にメモリにグローバルスコープオブジェクトを作成し、実行中にグローバルスコープオブジェクトが一つしかなく、常に生存しています。Httpサーバがオフになったら、廃棄します。
グローバルスコープオブジェクトライフサイクルは、ウェブサイト全体を通じて実行されます。
ServletContext
グローバルスコープオブジェクトは、すべてのServletがこのオブジェクトを共有する。ドメインの対象は以下の3つの方法があります。
setAttribute(name,value);
nameはStringタイプで、valueはObjectタイプです。ドメインオブジェクトにデータを追加し、key-valueでgetAttribute(name);
は、指定されたkeyに基づいてドメインオブジェクト内のデータを読み出すremoveAttribute(name);
は、指定されたkeyに従って、ドメインオブジェクトからデータを削除するHttpServletRequest
オブジェクトは、クライアントを代表する要求であり、クライアントがHTTPプロトコルでサーバにアクセスすると、HTTP要求ヘッダのすべての情報がこのオブジェクトにカプセル化され、このオブジェクトが提供する方法により、クライアント要求のすべての情報を得ることができる。Http Sessionサービスエンドの技術
サーバは、各ユーザのために独立した
HttpSession
を作成します。Http Sessionの原理
ユーザがServletに初めてアクセスすると、サーバ端はユーザに独立したSessionを作成します。
そして、
SessionID
が生成され、このSessionIDは、応答ブラウザの際にクッキーにインストールされ、ブラウザに保存され、ユーザが再度Servletにアクセスすると、要求中にクッキーのSessionIDを携帯してアクセスします。サーバは、このSessionIDに基づいて対応するSession
オブジェクトがあるかどうかを確認します。あるものは持ち出して使う。なしでSessionを作成しました。
ドメインの範囲:
Conteextドメイン>Sessionドメイン>Requestドメイン
セッションが終了しない限り、セッションは存在しますが、セッションにはデフォルトの生存時間があります(30分)
Cookie
クライアントセッション技術は、データをクライアントに保存します。
new Cooike(String name,String value)
3.Cookieオブジェクトの送信
response.addCookie(Cookie cookie)
4.Cookieを取得し、データを取得する
Cookie[] request.getCookie()
Cookie廃棄タイミング1.デフォルトはブラウザのクローズによって破棄されます。
2.手動設定の場合、Cookieの生存時間を設定し、ブラウザを閉じてCookieを削除しない;
cookie.setMaxAge(60);// cookie 1
セッションサーバー側セッション技術
Servletの場合:
Servletがクライアントアクセスの最初のWEBアプリケーションのリソースである場合は、request.get Session()またはrequest.get Session(true)を呼び出してこそ、HttpSessionオブジェクトを作成することができます。
1)ServletでHttpSessionオブジェクトをどう取得しますか?
request.getSession(boolean create)
:createはfalseであり、現在のJSPページに関連するHttpSessionオブジェクトがないとnullに戻る。もしtrue createに戻ることがあれば、必ずHTTPSessionのオブジェクトに戻ります。エン前JSPページに関連するHttpSessionオブジェクトがない場合、サーバは新しいHttpSessionオブジェクトを作成して戻ってきます。あれば、直接に関連に戻ります。
request.getSession()
はrequest.getSession(true)
に等しい。2.HttpSessionの対象をいつ廃棄しますか?
1)直接HttpSessionを呼び出すinvalidate()方法:HttpSessionを無効にする
2)サーバが現在のWebアプリケーションをアンインストールしました。
3)HttpSessionの期限を超過しました。
HttpSessionの期限切れを設定します。単位はSです。
session.setMaxInactiveInterval(5);
out.print(session.getMaxInactiveInterval());
<!-- web.xml HttpSession 。 -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<!-- 30 -->
この時間がSessionのタイムアウト時間です。タイムアウト時間を超えてサーバーにアクセスしなかったら、Sessionは自動的に無効になります。Sessionには以下の特徴があります。
(1)Sessionのデータはサーバ端に保存されます。
(2)Sessionでは任意の種類のデータを保存できます。
(3)Sessionデフォルトのライフサイクルは30分で、手動でより長い時間またはより短い時間を設定できます。
ここでは、Servletがデータを共有するJava Webコンポーネントを実現するいくつかの方法についての記事を紹介します。Servletに関する詳細な共有データの内容は、以前の記事を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。