ストラットでアクションクラスがアクセスされた回数を見つけることは可能ですか?インタビューの質問?
2 に答える
はい、そうです。コンテナーのアクセス ログを解析します。
これは、最も一般的で、最も柔軟で、最も一般的なソリューションであり、これを行うためのツールがたくさんあります。
それが受け入れられる答えでない場合 (そして、そうでない場合、それがインタビューである場合は、恐れてください)、実際にはフィルターまたはインターセプターを使用してそれを実行し、同期された書き込みアクセスで URL をキーとするマップを保持し、リクエストごとの URL のカウント (存在する場合はクエリ文字列を除く)。永続化する必要がある場合は、永続化できます。
これと S2 構成を組み合わせることで、リクエストの統計をかなり正確に把握できます。
考えられる解決策の 1 つは、データベース/アプリケーション コンテキストまたはファイルに格納することです。Struts2 アクションはデータ オブジェクトとしても機能するため、フレームワークはリクエストごとにアクションの一意のインスタンスを作成してスレッド セーフにするためです。アクションメソッド呼び出しの前に呼び出される準備メソッドにカウンターロジックを追加できます。
それでも、その前に答えなければならない多くの点があります。
- 実際のアクションが呼び出されず、インターセプターがフローを送り返す場合がよくあります。
- アクション呼び出しとは、アクションの特定のメソッド呼び出しまたはアクション インスタンスの作成のみを意味します。
インターセプターはリクエストごとに作成されず、アクション固有のデータをインターセプターに保存するのは安全ではないため、ロジックをインターセプターに入れることはできません。