Struts2 の動作原理:
1. サーブレット コンテナを指すリクエストを初期化します。
2. リクエストは web.xml で構成されたフィルターによってフィルターされ、FilterDispatcher (struts2 コントローラーのコア) は、リクエストを処理するために Action を呼び出す必要があるかどうかを ActionMapper に尋ねます。 ActionMapper が Action を呼び出す必要があると判断した場合、FilterDispatcher はリクエストの処理を ActionProxy に引き渡します。
3.ActionProxy は、構成ファイル Struts.xml 構成ファイルを通じて呼び出す必要がある Action クラスを見つけます。
4.ActionProxy は ActionInvocation インスタンスを作成し、ActionInvocation はプロキシ モードを通じて Action を呼び出します。ただし、呼び出す前に、ActionInvocation は設定に従ってすべてのアクション関連のインターセプター (インターセプター) をロードします。
5. アクションが実行された後、ActionInvocation は、struts.xml 内の構成に基づいて、対応する戻り結果を検索します。
関連する推奨事項: "FAQ"
つまり、開発者は http リクエストを送信します。このリクエストは web.xml フィルターでフィルターされ、特定のアクションが実行されるかどうかが確認されます。存在する場合は、Struts.xml 内のリクエストによって実装されたメソッドを見つけて、実行結果を返します。図に示すように:
#Hibernate の動作原理: #1. 設定ファイルを読み取り、解析します
2. マッピング情報の読み取りと解析、SessionFactory の作成
3. セッションを開く
4. トランザクション Transation の作成
5. 永続化操作
6.トランザクションを送信
7. セッションを閉じる
8. SesstionFactory を閉じる
つまり、Spring によって管理される Hibernate が初期化されるときに、xxx.hbm.xml がロードされ、解析が行われます。マッピング情報が読み取られて作成されます。
次に、セッションを開き、セッションを通じて操作して送信します。最後にセッションを閉じて、SessionFactory を閉じます。図に示すように:
Hibernate の Bean の 3 つの状態Hibernate オブジェクトは 3 つの状態に分けられます。 一時状態(新規出力)、またはインスタンス化時にセッションから独立)、永続状態 (セッションに関連付けられている)、およびフリー状態 (セッションに関連付けられていた)。このうち、永続オブジェクトは PO、一時オブジェクトと管理オブジェクトは VO として使用できます。 (PO を直接 v 層として使用しないでください) したがって、使用時には 3 つの状態の変換に注意する必要があります。
例:
一連のデータ操作では、save または saveorupdate 操作は一時オブジェクトまたは解放オブジェクトを永続オブジェクトに変換できますが、
delete または close などの操作は、セッションのフラッシュは、セッションに関連付けられた永続状態オブジェクトを自由状態に変換します。
Hibernate オブジェクトの状態とライフサイクルnew 演算子を使用して初期化されたオブジェクトは一時的 (Transient) です (データベース テーブルに関連付けられた動作はありません) ); アプリケーションがこれらのオブジェクトを参照しない限り、それらのステータスは失われ、ガベージ コレクション メカニズムによってリサイクルされます);
一時オブジェクトが save() を渡した後、saveOrUpdate は永続オブジェクトに変換されます。状態はセッションによって均一に管理されます。永続オブジェクトの操作はデータベースと同期されます。
永続オブジェクトは、evict()、close()、clear() などの後に自由状態に変換されます。このとき、永続化されていますが、セッションキャッシュには存在しないため、lock()、
update()、saveOrUpdate は永続化されます。 get()、load()、find()、および iterate() を通じて取得されたオブジェクトは直接永続的です。
Spring の仕組み:SSH フレームワークでは、Spring はコンテナを管理する役割を果たします。 Hibernate は JDBC を適切にカプセル化しているため、永続化レイヤーとして使用されていることは誰もが知っています。
プログラマは、データベースと対話するときに大量の SQL ステートメントを作成する必要はありません。 Struts はアプリケーション層として使用され、ビジネス ロジック サービス層の呼び出しを担当します。
つまり、SSH フレームワークのプロセスは大まかに次のとおりです。 Jsp ページ----Struts----サービス (ビジネス ロジック処理クラス)---Hibernate (左から右)
struts Service (ビジネスロジック処理クラス) の制御を担当し、Service のライフサイクルを制御する このように、レイヤー間の依存関係は非常に強く、結合しています。
現時点では Spring Framework を利用することで、Action オブジェクト(Strus 内)と Service クラスを制御する役割を果たしていますが、両者の関係は緩やかです Spring の Ioc 機構 (制御の反転と依存性注入)ここでは が使われています。 Spring の Ioc (制御の反転と依存関係の注入):
制御の反転: コンテナーは、従来の実装ではプログラム コードによって直接制御されるのではなく、プログラム間の (依存) 関係を制御します。
依存関係の注入: コンポーネント間の依存関係は実行時にコンテナーによって決定され、コンテナーは特定の依存関係をコンポーネントに動的に注入します。
Spring (AOP アプリケーション) を使用する 2 番目の利点:
トランザクション処理:過去の JDBCTemplate では、トランザクションは正常に送信され、例外が発生しました。この処理は Spring の Try/Catch を通じて行われます。
Spring コンテナは、例外発生時のトランザクション ロールバック、操作成功時のデータ送信、その他の複雑なビジネス機能を含む、すべてのトランザクション処理機能をカプセル化する TransactionTemplate を統合します。これはすべて Spring コンテナーによって管理され、プログラマーのコード量が大幅に削減され、トランザクションの適切な管理と制御が提供されます。
Hibernate にはトランザクション管理もあります。Hibernate でのトランザクション管理は、SessionFactory を通じてセッションを作成および維持することによって実現されます。 Spring には SessionFactory 設定も統合されているため、hibernate.cfg.xml を通じて SessionaFactory を設定する必要はありません。
このようにして、Sping の強力なトランザクション管理機能を有効に活用できます。
データを操作するたびに、トランザクションを開始/送信/ロールバックするためにセッション インスタンスを取得したり、面倒な Try/Catch 操作を行う必要がなくなります。
これらは、Spring の AOP (アスペクト指向プログラミング) メカニズムの優れたアプリケーションです。一方で、ビジネス ロジックの開発がより明確になり、専門的な分業が容易になります。
一方、Spirng AOP 分離を適用するとプログラムの結合が軽減され、異なるアプリケーションのさまざまな側面を組み合わせることができるため、コードの再利用が大幅に向上します。
以上がSSHフレームワークの原理とプロセスは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。