SSMフレームワークおよび関連インタビューの質問について解決

SSMフレームワークが導入します

(1)持続性(MyBatisの):ダオ層(マッパー)

DAO層は:DAO層が主に行われた作業データの永続化層である、いくつかの連絡タスクは、このデータベースの中にカプセル化されている責任があります。

DAO層は、第1設計し、何よりもDAOインタフェースを設計されています。

そして、春の構成ファイルで、このインタフェースを実装するクラスを定義します。

そして、あなたは、この特定のインターフェイスの実装クラスを心配することなく、処理データトラフィックのため、このインタフェースモジュールを呼び出すことができ、それは非常に明確な構造であるクラスです。

DAOソース構成データ層、およびデータベース接続に関連するパラメータはSpring構成ファイルで構成されています。

(2)ビジネス層(春):サービス・レイヤー

サービス層:サービス層は、アプリケーションの設計、ビジネス・ロジック・モジュールを担当しています。

まず、その実装のインターフェイスデザイン、再デザインクラス。

[設定Spring構成ファイルでの実装に関連付けられています。だから我々は、ビジネスプロセスへのサービス・インターフェース・アプリケーションを呼び出すことができるという。

ビジネスサービス層の実装は、特定のインターフェイスのDAO層はに呼ばれるように定義されています。

共通のビジネスロジックと再利用性の独立を支持するサービスパッケージビジネスロジック層は、プログラムは非常に簡単です。

(3)プレゼンテーション層(springMVC)コントローラ層(ハンドラ層)

コントローラレイヤ:コントローラ層は、制御モジュール、特定のビジネスプロセスを担当しています。

ビジネスプロセスを制御するためのサービスコールインタフェースを層に、この層の内部。

コンフィギュレーション・コントロールも異なるコントローラを持って、特定のビジネスプロセスのためにどのSpring構成ファイル内で行われ、プロセスは、当社の設計プロセスの詳細は、設計プロセスのモジュールを再利用サブユニットも抽象的に要約することができますので、プログラムのだけでなく、構造が明らかになったこと、また、大幅にコードの量を減らします。

(4)ビュー層:表示層

ビュー層:より密接に制御層と合わせビュー層は、二つの共同作業の髪を組み合わせることが必要です。ビュー層は、表現の受信JSPページの主な原因です。

SSMフレームワークの顔の質問

1、どのように春を理解するには?

2、物事管理の春を教えて

3、SSMの長所と短所、使用シナリオ?

4、MyBatisの使用#と$書き込みプレースホルダの違いは何ですか?

5. MyBatisの名前空間(名前空間)の役割を説明します。

6.のIoCとDIとは何ですか?DIは、どのように達成することですか?

7、何AOP(アスペクト指向プログラミング)を説明?

8.どのようにして、「横断的関心事、」概念を理解していますか?

9.どのように接続ポイント(ジョインポイント)AOPでのカットポイント(ポイントカット)、強化(助言)、セクション(アスペクト)、(ウィービング)織り、(はじめに)これらの概念を導入を理解していますか?

10、Springのトランザクション管理のサポートはどのタイプ?あなたのプロジェクトで使用どっち?

11、Spring MVCの作品は似ているのですか?

12. XSS攻撃とは何ですか?

13、SQLインジェクション攻撃?

14. CSRF攻撃とは何ですか?

15、簡単MyBatisの、二次キャッシュ

16、MyBatisのは、これらの問題を解決する方法をどのような欠点、JDBCプログラミング?

顔の質問を解析フレームSSM

1、どのように春を理解するには?

具体的に春は、ビジネス関連のオブジェクトを管理するための軽量コンテナです。主にコア機能:IOC、AOP、MVC。

IOC:コントロール、コンテナにオブジェクトの作成の反転ので、容器のライフサイクル管理を作成、初期化、破壊等などのオブジェクトこと。

AOP:アスペクト指向プログラミング、モジュラー上の焦点は、そのようなログとして、特徴点をプログラムすることによって、多くのクラスがあり、プロキシメソッドが作成されたログ記録、記録する方法をログに記録する必要がある、あなたは、この関数を呼び出す必要がありますちょうどAOPでプロキシメソッドを呼び出します。

MVC:今のWebフレームワークSpringMvc、MVCパターン設計に基づいて、春の提供、比較的人気のあるフレームワークの1つ。

2、物事管理の春を教えて

トランザクションがあなたの場合はそこに例外の真ん中があるので、すべての操作のロールバックの前にあれば、一緒に、成功INSERT、コミットまたはロールバック統一(例えば、複数のデータの挿入など)のデータベース操作のシリーズです。これは、問題を防ぐためにダーティ・データ、データベースのデータを防ぐことができます。

一般的にトランザクション管理をこの開発を避けるために。春はまた、独自のトランザクション管理メカニズムを持っている一般的TransactionMananger管理を使用して、この機能は、Springの注入によって行うことができます。

春のトランザクション管理は、次の2つの方法をサポートしています。

プログラムによるトランザクション管理:あなたは大きな柔軟性をもたらすことができる。この手段は、プログラムで、このように業務を管理し、それを維持することは困難です。

宣言型トランザクション管理:あなたはトランザクション管理とビジネスコードを分離できることをこのアプローチ手段。あなただけの注釈やXML構成管理業務を必要としています。

このように、より少ないアプリケーションに関連付けられているため、通常、宣言的トランザクション管理を選択します。

3、SSMの長所と短所、使用シナリオ?

異なる(1)MyBatisのとMyBatisのは、自分のSQL文を書くためにプログラマーを必要とするので、それは、正確にORMフレームワークではありません、休止状態が、MyBatisのは柔軟にXMLまたは注釈、およびJavaオブジェクトとマッピングSQL文を経由して、SQLステートメントを実行するように設定することができます生成SQLは最後に実行され、最終的な結果は、世代をマッピングするSQL Javaオブジェクトを行います。

(2)MyBatisの学習しきい値は、インターネット・ソフトウェア・ビジネス・オペレーションクラスとして、以下のソフトウェア開発のリレーショナルデータモデルに厳しいのための理想的な、プログラマは、元の生態SQLに直接書き込み、SQLの実行性能を厳密に制御、高い柔軟性することができ、学習が容易に低いですソフトウェアは、ソフトウェア要件として頻繁に変更はなく、出力に必要な成果の急激な変化の必要性。しかし、その柔軟性はMyBatisのデータベースに依存しないが、ソフトウェアでは、SQLマッピングファイル、重いワークロードのセットをカスタマイズする必要がある場合は、複数のデータベースを実装する必要がサポートしていることを前提に行うことはできません。

(3)のHibernateオブジェクト/リレーショナルマッピング機能の強力な、データベースの独立した高リレーショナルモデルに適して休止状態の開発者がコードを大幅に節約し、効率を向上させることができる場合(そのようなソフトウェアをカスタマイズし、固定要求として)ソフトウェアを必要とします。しかし、パフォーマンスとオブジェクトモデル、およびどのように仕事に強力な経験と能力を持っているHibernateの必要性を十分に活用するとの間でバランスを取る方法を、Hibernateは高いしきい値、マスターに高いしきい値、およびどのように設計O / Rマッピングを学習。

(4)要約すると、リソースが制限された設定で、ユーザーのニーズに合わせてメンテナンス限り、行うことができ、拡張性の優れたソフトウェアアーキテクチャは、それだけで、適切なフレームワークが最高です、良いアーキテクチャです。

4、MyBatisの使用#と$書き込みプレースホルダの違いは何ですか?

A:文字列として#着信データ、入ってくるデータは自動的に引用符を追加します。$入ってくる表示データを直接生成されたSQL。

注:使用KaTeX解析エラー:「EOF」予想されるが 、21位に「#」を得た:... 使用することができます#を置かないでください、SQLインジェクション攻撃につながる、句によって書かれた順番ではなく、$#よりも使用する必要があります。

5. MyBatisの名前空間(名前空間)の役割を説明します。

A:大規模なプロジェクトでは、SQL文が多数存在することができ、各SQL文の固有の識別(ID)から今回は容易ではないとなります。この問題を解決するには、MyBatisの中で、あなたは、各SQL文がマップファイルで定義されているように、それぞれのマッピングファイルの一意の名前空間を再生することができ、この名前空間のIDの定義となっています。限り、我々はすべての名前空間は、このIDが同じであっても、ステートメントID異なるマッピングファイルでは、それは競合を生成しません、一意であることを確認することができますよう。

6.のIoCとDIとは何ですか?DIは、どのように達成することですか?

A:IoCの制御の反転と呼ばれる、コントロールの反転が略称である、DI(依存性注入)は、依存性注入と呼ばれる、IOCは単純な解釈です。呼制御権反転は、伝統的に容器に直接プログラムのオブジェクトコードによって制御され、アセンブリは、コンテナ管理オブジェクトアセンブリによって達成されます。いわゆる「制御の反転」は、容器の外側にプログラムコード自体から転送されたコンポーネントオブジェクトの制御の転送は、コンテナは、オブジェクトを作成し、オブジェクト間の依存関係を管理します。IOCはハリウッドの原則を体現 - "Don'tcallme、我々はwillcallyou"。基本的な原理は、依存性注入のアプリケーションコンポーネントは、リソースまたはその他のコラボレーションオブジェクトが依存を見つけるための責任を負うべきではないということです。Configurationオブジェクト作業が容器の責任である必要があり、ロジックは、コンテナが行われるように、コードのアプリケーションコンポーネントから抽出されたリソースを探す必要があります。DIは、動的コンポーネントへの容器の特定の依存性の画像、すなわち、注射のために、コンテナによって決定実行時にコンポーネント間の依存関係、即ち、のIoCのより正確な説明です。

7、何AOP(アスペクト指向プログラミング)を説明?

A:AOP(アスペクト指向プログラミング)を基準としてファセット(アスペクト)と呼ばれる言語パラダイムで構成されているプログラミングパラダイムを指し、新しいセクションは、分散的に説明するためのモジュール式機構であります横断的関心事のオブジェクト、クラスやメソッド(懸念を横断的)。

8.どのようにして、「横断的関心事、」概念を理解していますか?

:「横断的関心事」は、当該アプリケーション全体の機能に影響を与えるだろう、それは通常のビジネスロジックであることは必ずしもリンクされていない、直交、ほとんどすべてのビジネスロジック機能のこれらの懸念に関連しているです。一般的に、懸念を横断的トランザクションログ、および安全上の懸念は、アプリケーションの機能です。

9.どのように接続ポイント(ジョインポイント)AOPでのカットポイント(ポイントカット)、強化(助言)、セクション(アスペクト)、(ウィービング)織り、(はじめに)これらの概念を導入を理解していますか?

A :.接続点(ジョインポイント):(:メソッド呼び出しの前に、呼び出しの後に、方法の後に例外をスローするような)プログラム実行の特定の位置。クラスまたはプログラムコードの特定のセクションが特性を有する境界点を有し、特定のポイントコード、結合点です。春は唯一の接続ポイントメソッドをサポートしています。

B接点(ポイントカット):.接続点はレコードデータに対応する場合には、検索条件に対応する接線の点は、カットポイントは、接続ポイントの複数と一致してもよいです。エンジンのクエリを解析春AOPルールは、対応する接続​​ポイントを見つけ、カットオフポイントセットを解析するための責任があります。

。強化C(情報):エンハンスメントは、ターゲットクラスの接続点上のプログラムコードに織り込まれています。そうでBeforeAdvice、AfterReturningAdvice、ThrowsAdviceと:スプリングは拡張インターフェースのような名前の向きであり提供します。情報の多くは、多くのプログラマは、長い時間のために混乱して、これは明らかに、翻訳に嘘をついている「通知」と訳さ強化します。

説明:国の書き込まれた情報の多くでアドバイスは、「通知」として翻訳されていますが、この翻訳は、その性質を表現することはできません「強化」という単語の翻訳のための材料を読んで、少量を持っていることは明らかである、この翻訳は、より正確なアドバイスです例外強化復帰後の解釈は、我々は独自のビジネス・ロジックに追加された機能AOPによって懸念を横断的、これはビジネスを既存の論理的な拡張機能です。この拡張機能を向上させることができ、フロント、リア強化、とき向上とサラウンド型エンハンスメント。

紹介D(はじめに):.クラスのいくつかのプロパティとメソッドを追加し、特殊な強化を導入します。このようにして、1つは、何のビジネスクラスの実装にインタフェースを持っていない場合でも、機能を導入することで、あなたはビジネスクラスが実装するインタフェースというクラスになることができ、動的なクラスが実装にビジネス・ロジック・インターフェースを追加することはできません。

。E織り(ウィービング):織りAOPは、三つの方法を織る、添付のプロセスベースのターゲット特定ポイントに追加された補強。

①コンパイル時織り:(そのようAspectJののAJCなど)特殊なJavaのコンパイル時間の必要性。

②織りのロード:クラスをロードする際、クラスが強化され、特別なクラスローダが必要です。

③ランタイムを織り:実行時に強化され、ターゲットクラスのエージェントを生成します。スプリングは、製織を達成するために、動的プロキシ・アプローチを使用し、コンパイルAspectJの織りを使用して、ローディングの方法を織ります。

F部(アスペクト):.タンジェントポイントとカットが結合点の定義を含む、関心が機能横断的の定義を含む(導入)組成物を、増強されます。

10、Springのトランザクション管理のサポートはどのタイプ?あなたのプロジェクトで使用どっち?

A:春はプログラムによるトランザクション管理と宣言的トランザクション管理をサポートしています。春のフレームワークの多くのユーザーは、このように少ないアプリケーションに関連付けられているため、宣言的トランザクション管理を選択し、したがって、より軽量コンテナの概念に沿っインチ それは、柔軟性プログラムによるトランザクション管理の面でより弱かったものの、プログラムによるトランザクションを使用すると、コードを通過するトラフィックを制御することができますので、宣言的トランザクション管理は、より良いプログラムによるトランザクション管理を超えています。

11、Spring MVCの作品は似ているのですか?

(1)すべてのクライアント要求を扱うために、フロントコントローラのDispatcherServletに引き渡され、それは実際にユーザの要求に対処するために、システムの他のモジュールを呼び出すための責任を負うことになります。

(2)のDispatcherServlet、要求を受信した情報要求に応じて(等URL、HTTPプロトコルメソッド、要求ヘッダー、要求パラメータ、クッキーを含む)、及びHandlerMappingハンドラは、要求を処理見つけるために配置された後(任意のオブジェクトを要求として使用することができますハンドラ)。

(3)スプリングHandlerAdapterこの代わりに、プロセッサによってカプセル化されます。

(4)HandlerAdapterは、統一されたインタフェースを持つハンドラの様々な方法を求めるアダプタです。

(5)ハンドラが処理を完了するためにユーザによって要求された後、のDispatcherServletのModelAndViewオブジェクトへ戻り、

ModelAndView名は、示唆情報モデルとそれに対応するビューのデータが含まれています。

ビューの(6)のModelAndViewは、DispatcherServletの論理ビューであるだけでなく、論理的な観点からViewResolver完全な仕事を持つオブジェクトの実際のビューを解決します。

実際のビューオブジェクトは、DispatcherServletのモデルデータは、ビュー・オブジェクトを使用してレンダリングされるときに(7)が得られます。

(8)クライアントが応答を取得し、それは通常のHTMLページであってもよいし、XMLやJSON文字列には、画像やPDFファイルにすることができます。

12. XSS攻撃とは何ですか?

A:XSS(クロスサイトスクリプト、クロスサイトスクリプティング攻撃)は、ユーザーがWebページを閲覧する際、ユーザーのブラウザに悪意のあるスクリプト実行攻撃に悪質なスクリプトを注入することです。二つの形式に分け、クロスサイトスクリプティング攻撃:反射型攻撃(誘惑のユーザーが攻撃のターゲットを達成するために、悪質なスクリプトに埋め込まれたリンクをクリックして、多くの攻撃者が悪意のあるスクリプトがこれに属し含む公開URLをマイクロブログ、フォーラムを使用してありますデータベースモード)と耐久性のあるタイプの攻撃(攻撃サイトに悪質なスクリプトを提出する、ユーザーがウェブを閲覧する際、悪意のあるスクリプトは、耐久性に優れたタイプ、クロスサイトスクリプティングとして使用されたら、ページの実行にデータベースからQQメールの以前のバージョンをロードプラットフォームの攻撃)。消毒(危険な文字をエスケープする)とHttpOnlyの(クッキー防止XSS攻撃は、データを盗むために):XSSは新しいものではありませんが、攻撃は刻々と変化して仕方が防止XSSには2つの主要な側面があります。

13、SQLインジェクション攻撃?

:SQLインジェクション攻撃は、SQL文を使用して、サーバーのリクエストパラメータが構築され、(2リスクの高い脆弱性が原因OS OGNLインジェクション攻撃の実装)を介してであるOSインジェクション攻撃(Strutsのに加えて)インジェクション攻撃の最も一般的な形態であり、悪質なSQL実行するSQLデータベースに埋め込まれています。SQLインジェクション攻撃は、データベースの構造を理解するために実行するために、攻撃者が必要で、攻撃者は、テーブル構造にいくつかの方法を取得したいです:

(1)あなたは、オープンソースのシステムを使用してWebサイトを構築する場合、データベース構造が開いている(リスクは便利ですが、慎重に評価する必要がありますが、多くの既製のシステムがあるが、直接、フォーラム、電気のウェブサイトをセットアップすることができます)。

(2)エコー・エラー(エラーメッセージサーバーがページに直接表示された場合、攻撃者は、エラーメッセージによってデータベースの構造を理解するために違法なパラメータでページフォールトを引き起こす可能性が、Webアプリケーションは、一方の出会いで、フレンドリーエラーページを設定する必要がある最小の驚き原則的に、一方ではエコー情報システムに潜在的に危険なエラー)をブロックアウト。

(3)ブラインド。また加えて、また、このような悪質なSQLのような手段を、結合の良好なパラメータである、リクエストパラメータを検証するために、正規表現で使用できるSQLインジェクション攻撃の消毒方法を防ぐためにでJDBC、コマンドが実行されるのではなく、SQLのパラメータであります声明は、パフォーマンスとセキュリティからはるかに優れ声明よりも、パラメータバインディングPreparedStatementオブジェクトがサポートしています。

14. CSRF攻撃とは何ですか?

:CSRF攻撃(クロスサイトリクエストフォージェリ、CSRF)が攻撃者によるクロスサイトリクエストで、正当な利用者で(たとえば、転送や掲示など)不正な操作。CSRF原理は、セッションCookieのブラウザやサーバ、個人情報の盗難、以下に示す原理を使用することです。CSRFの防止は、主に以下の方法で、要求者の識別の主要な手段です。

形態(1)トークン(トークン)。

(2)コード。

(3)確認要求ヘッダーのReferer。

トークンと認証機能は、原則的にはそれほど一貫した消費者を、持っていますが、コードは、ユーザーエクスペリエンスの低下で、このコードを使用していない状況下では必要ありません、現在の慣行は、短期であれば多くのサイトであること多くの時間はタイムコード内で成功しない申請フォームを提出する前に、あなたはより良いユーザーエクスペリエンスを取得します。

15 MyBatisの簡単な、2つのキャッシュ

1)キャッシュ:セッションの範囲を格納HashMapのベースPerpetualCacheローカルキャッシュ、セッションはフラッシュまたは終了後に、キャッシュのすべてのセッションにクリアされます。

2)二次キャッシュとは、同じメカニズムをキャッシュするだけでなく)デフォルトPerpetualCache、ハッシュマップは、格納されたそれはマッパー(名前空間などの異なるスコープに格納されている使用して、そのようなEhcacheのようなカスタム・ストレージ・ソースであってもよいです。二次キャッシュを有効にするには、お使いのSQLマッピングファイルに1行を追加する必要があります。

3)データキャッシュの更新メカニズムのため、デフォルトの後に一定の範囲(キャッシュセッション/二次キャッシュ名前空間)のC / U / D動作を行うときに、すべてのキャッシュの範囲を選択明らかであろう。

16、MyBatisのは、これらの問題を解決する方法をどのような欠点、JDBCプログラミング?

あなたはこの問題を解決するプールのデータベース接続を使用する場合(1)データベース・リンクを作成して、頻繁にシステムリソースの解放は、システムのパフォーマンスに影響を与えるので、無駄にしています。

解決策:設定データリンクSqlMapConfig.xmlプールは、接続プール管理データベース・リンクを使用しています。

コードで記述された(2)SQL文はコードを引き起こしやすい維持することではなく、実用的なアプリケーションのSQL変化が大きくてもよい、SQLの変更はJavaコードを変更する必要があります。

解決策:設定したJavaコードXXXXmapper.xmlファイルとは別のSQLステートメント。

(3)の条件は必ずしもSQLステートメントではない場合ので、トラブルのSQLステートメントにパラメータを渡す多かれ少なかれプレースホルダと必要なパラメータを一つずつであってもよいです。

解決:MyBatisのは、自動的にSQL文にJavaオブジェクトをマップします。

(4)分析結果セットトラブル、変化SQL構文解析コード変更の結果、データベースレコードがオブジェクトを解決できる場合、トラバーサルを解決する必要が便利にパッケージPOJO。

解決:MyBatisのは、自動的にSQL Javaオブジェクトに結果をマップします。

追加の参照の答え

SqlMapConfig.xmlで頻繁データベース接続プールを使用してこの問題を解決するために、ライブラリ接続プールのデータを使用して、パフォーマンス低下をもたらす、近いリソース、データ接続を作成する。C3P0 DBCPデータベース接続プールの構成

JDBCプログラミングSQL Server保守性は高くありません。MyBatisの使用した設定は、問題のSQLの保守性を解決する方法をファイル

Mapper.xmlはに配置され、保守コードSQLの増加であります

JDBCは、パラメータの面倒を渡す。時々、マルチパラメータ、パラメータとプレースホルダに一対一に対応。

の入力文を定義するタイプparemterType MyBatisのパラメータ

分析結果はあまりにも面倒です。自動的にPOJOにマッピングされMyBatisの使用resultTypeとは、分析結果JDBCのトラブルに対処しました

公開された38元の記事 ウォン称賛28 ビュー50000 +

おすすめ

転載: blog.csdn.net/xb565517830/article/details/104407535