Java webにおけるFilterとサーブレットの理解について

1133 ワード

Java web開発をするには、初心者でもベテランでもfilterやservletに触れることは避けられません.多くの場合、filterやservletをカスタマイズする必要があります.彼らはライフサイクルの基本的な初期化方法や破棄方法に似ています.
filterは、クライアントが要求を開始するときに要求情報がrequestオブジェクトの方法でウェブ上に伝達されることを意味するブロックフィルタである.xmlでは、多くのfilter webコンテナをカスタマイズして、ロックチェーンのようなものに組織してリクエストをブロックすることができます.スプリングのaop部分のProxyFactoryBeanのソースコードを見たら、中のモードはfilterとほぼ同じです
invocation = new ReflectiveMethodInvocation(proxy, target, method, args, targetClass, chain);
// Proceed to the joinpoint through the interceptor chain.
retVal = invocation.proceed();

この中のchainはチェーンが現在のオブジェクトメソッドを呼び出すのに対応するブロックです
でもjavaxではservlet.Filterにはdispatcherパラメータがあります.このパラメータの値はREQUEST、FOrWARD、INCLUDE、ERRORです.この要求方式はデフォルトでREQUEST、すなわちブラウザによって開始された要求であることを示します.他の方法としてはrequest.getRequestDispatcher("xx").forward(request, response);このようにフィルタはブロックされません.他のいくつかも似ています.
servletは、servlet-mappingのurl-patternを介して要求パスを処理する処理動作として理解できます.これはfilterのdispatcherパラメータに似ていません.
我々が現在接触している比較的多くのfilterにはCharacterEncodingFilter:要求内容を統一的に符号化するFilterDispatcher:struts 2のコアコントローラがある
サーブレットは比較的有名なspringMVCの中のDispatcherサーブレットは標準的なきれいなMVCフレームワークです