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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
