2 つの別々のサーブレットに 2 つのフィルターを使用したいと考えています。1 番目のフィルターは 1 番目のサーブレット:foodtypeServlet
用で、2 番目のフィルターは 2 番目のサーブレット: 用menuServlet
です。2nd フィルターで、エラーが発生した場合に に転送したいfoodtypeServlet
。しかし、問題は、に転送するとfoodtypeServlet
、このサーブレットのフィルターも実行されることです。私はそれを実行したくありません。どうすれば達成できますか?
質問する
223 次
1 に答える
1
これは、フィルターが次のようにマップされていると仮定した場合の既定の動作ではありません。
<filter-mapping>
<filter-name>foodtypeFilter</filter-name>
<servlet-name>foodtypeServlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>menuFilter</filter-name>
<servlet-name>menuServlet</servlet-name>
</filter-mapping>
デフォルトでは、フィルターはREQUEST
ディスパッチャーでのみ呼び出され、 onFORWARD
やINCLUDE
norでは呼び出されませんERROR
。<dispatcher>
そのためには、フィルター マッピングでエントリを明示的に指定する必要があります。
サーブレット 2.3 を使用している可能性がありますか? その古いバージョンでは、どのフィルターもデフォルトで転送時に呼び出されます。少なくとも Servlet 2.4 にアップグレードするか、フィルターにjavax.servlet.forward.request_uri
属性の存在をチェックさせ、存在する場合は、単に呼び出してフィルター呼び出しをバイパスする必要がありますchain.doFilter(request, response)
。
それとも、実際に転送ではなくリダイレクトしているのでしょうか? その場合、redirectの代わりに実際のforwardを実行する必要があります。
于 2012-11-09T14:07:00.070 に答える