私はこれを調査して、インタビューでよりよく対応できるようにしています。私は明確で簡潔な答えを探し回っています。
これまでのところ、私が間違っているか詳細が不足している場合は、必ず私を修正してください:
これは正確で完全な答えのように見えますか?何かを追加または修正する必要がありますか?スレッドの問題/違いはどうですか?
最初のポイントは答えだと思いますが、おそらくあなたはただ以上のことを言うことができるはずです
インターセプターはStruts2にあり、フィルターはサーブレットAPIの一部です。
実際、インタビュアーとして、ServeltAPIとStruts2のようなWebアプリケーションフレームワークの違いを正確に説明することを期待し、期待しています。これは実際には、Java Webアプリのエコシステムとインフラストラクチャ全体についての理解を示すチャンスです。
良い答えが触れるかもしれません:
Struts2フレームワークがサーブレットフィルター内でどのように実装されているか。
Struts 2の外部で、同じWebアプリケーション内でサーブレットフィルターを必要とする特定のユースケースは何ですか?
実際、サーブレットAPI、Webアプリケーション、Webアプリケーションフレームワークなどとは何ですか?
これらすべてのトピックについてのあなたの理解を示した方法で答えることは、そこに求められていることだと思います。
フィルタはサーブレットAPIからのものであり、インターセプターはStruts 2からのものです。違いは、Webアプリケーションとエンタープライズアプリについて話すときに発生します。フィルターはWebアプリケーションでのみ使用されますが、インターセプターはWebとエンタープライズアプリケーションで使用できます。両方のライフサイクル方法も異なります。
インターセプタースタックは、リクエストごとに起動します。フィルタは、それらが定義されているURLにのみ適用されます。必要に応じてどちらか一方を使用します。すべてのリクエストにCookieが存在することを確認する必要があるとします。インターセプターを使用します。一部のリクエスト(URLによって駆動される)で外部アプリをポップアップする必要があるとしましょう。フィルターを使用します。
インタビューの1つで、私はこの質問に次のように答えました。
インターセプターはstruts2の概念であり、アプリケーション開発者がそれを制御できます。また、struts2アプリケーションの境界で動作し、Struts2グッズとともにActions、ValueStack、その他のオブジェクトにアクセスできます。
フィルタは展開時間の構成に適しています。アプリケーションへのアクセスが制限されており、ほとんどの場合、サーバーにデプロイされているほとんどのWebアプリの汎用です。
コード内のロジックがアプリケーションとより結合されている場合、インターセプターに適している場合、またはインフラストラクチャの場合は、サーブレットフィルターに配置できます。
フィルター:
インターセプター:
excludeMethods
またはincludeMethods
を使用して実行するかどうかを構成できます。