0

安全なアプリにサーブレットフィルターを使用していますが、

<filter>
    <filter-name>HelloFilter</filter-name>
    <filter-class>com.sarp.filter.HelloFilter</filter-class>
    <init-param>
        <param-name>login_form</param-name>
        <param-value>/loginForm.jsp</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>HelloFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping> 

しかし、私のサーブレットがjspファイルを使用している場合、それらをキャッチできません

private void execute(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    getServletContext().getRequestDispatcher("/deniz.jsp").forward(request, response);

たとえば、認証なしで deniz.jsp が表示されます。解決策はありますか? ありがとう

4

1 に答える 1

1

FORWARDでディスパッチャ タグを使用して動作を指定します。filter-mapping

<filter-mapping>
    <filter-name>HelloFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

この情報6.2.5は、仕様のセクションにあります。

Java サーブレット仕様のバージョン 2.4 以降の新機能は、リクエスト ディスパッチャの forward() および include() 呼び出しの下で呼び出されるフィルタを構成する機能です。

展開記述子で新しい要素を使用することにより、開発者は、次の場合にフィルターを要求に適用するかどうかをフィルター マッピングで示すことができます。

  1. 要求は、一致する Web コンポーネントを表す要求ディスパッチャーの下で、または forward() 呼び出しを使用して処理されています。

これは、値が FORWARD の要素によって示されます。

于 2013-11-09T21:19:05.860 に答える