3

お支払いフォームがあります。ユーザーがフォームを送信すると、支払いプロセスは正常に実行されますが、[戻る]ボタンをクリックすると、ユーザーは同じフォームに移動します。ユーザーが複数回の支払いを行わないようにするために、送信が成功した後にフォームを期限切れにしたい(ユーザーが戻ってフォームを送信した場合)。「ユーザーがチュートリアルに戻らないようにする」に続いて、フィルターを追加しましたが、機能しません。私は何が間違っているのですか?これが私がフィルタリングのために追加したものです。

<filter>
    <filter-name>paymentFilter</filter-name>
    <filter-class>path to PaymentFilter class</filter-class>
</filter>
<filter-mapping>
    <filter-name>paymentFilter</filter-name>
    <url-pattern>/order/*/payment</url-pattern>
</filter-mapping>

私のフィルタークラスは

public class PaymentFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub          
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
        httpServletResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        httpServletResponse.setDateHeader("Expires", 0); // Proxies.
        System.out.println("In filter");            
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub          
    }

}

追加しましたSystem.out.println("In filter")が、ページを実行した後、コンソールにその出力(「フィルター内」)が表示されません。

コンソール/*のプリントとしてURLパターンを使用すると、System.out

<url-pattern>/*</url-pattern> (it works as expected)

しかし、URLパターンをに変更すると/order/*/payment(*は注文IDであり、注文ごとに変更されます)。その後System.out、コンソールには何も印刷されません。

<url-pattern>/order/*/payment</url-pattern> (it doesn't work)

私はspringmvc、apache、tomcat7.0を使用しています

4

4 に答える 4

2

すでにわかっているように、* は URL パターンのプレフィックスまたはサフィックスにのみ使用できます。これの理由は、それが別の方法で定義されると、多くのあいまいさが生じるからです。

さらに、GET を使用してフォームを送信すると、ユーザーはいつでも戻るボタンを押して結果の画面に移動できます。POST を使用すると、ブラウザーはこれが不可能である可能性があると表示します。

于 2012-12-11T17:20:25.937 に答える
2

あなたの問題に対する別の解決策があります。javascript または jquery を試して、戻るボタンまたは進むボタンを無効にすることができます。

于 2012-12-11T18:20:17.760 に答える
1

追加してみる

chain.doFilter(request, response);  

doFilter メソッドの最後の行として。

于 2012-11-24T18:45:19.860 に答える
1

私の問題の解決策を私に与えたのは、フィルターマッピングのurl-patterでユーザー正規表現を「できない」ことです。* 接尾辞または接頭辞としてのみ使用できます。

于 2012-12-05T07:38:59.900 に答える