Struts 2 execAndWaitインターセプタの例

Struts 2 execAndWaitインターセプターの例

ダウンロード–Struts2-ExecAndWait-Interceptor-Example.zip

Struts 2には、「execAndWait」という名前の非常に興味深い「Execute and Wait」インターセプターが付属しています。これは、ユーザーにカスタム待機ページを表示しながら、バックグラウンドで長時間実行されるアクションに非常に便利なインターセプターです。 このチュートリアルでは、Struts 2execAndWaitインターセプターを使用する完全な例を示します。

1. アクション

execAndWait効果を示すために長時間実行されるプロセスを持つ、通常のアクションクラス。

LongProcessAction.java

package com.example.common.action;

import com.opensymphony.xwork2.ActionSupport;

public class LongProcessAction extends ActionSupport{

    public String execute() throws Exception {

        //it should be delay few seconds,
        //unless you have a super powerful computer.
        for(int i =0; i<1000000; i++){
            System.out.println(i);
        }
        return SUCCESS;

    }
}

2. JSPページ

2つのページを作成します。

  1. wait.jsp-長時間実行されているプロセスの処理中にユーザーに表示します。

  2. success.jsp-プロセスが完了した後にユーザーに表示します。

HTML meta refresh
待機ページの上にメタリフレッシュを置くことを忘れないでください。そうしないと、プロセスが完了しても、ページは成功ページにリダイレクトされません。

このwait.jspでは、メタリフレッシュは5秒ごとにリロードするようにページを設定します。プロセスが完了すると、success.jspにリダイレクトされ、それ以外の場合は同じページに留まります。

wait.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>


"/>



Struts 2 execAndWait example

Please wait while we process your request...

success.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>





Struts 2 execAndWait example

Done

3. インターセプターの実行と待機

アクションクラスをリンクし、「execAndWait」インターセプターを宣言しました。

execAndWaitパラメーター

  1. delay (optional):wait.jspを表示するためのミリ秒単位の初期遅延。 デフォルトは遅延なしです。

  2. delaySleepInterval (optional):バックグラウンドプロセスがすでに実行されているかどうかを確認するためのミリ秒単位の間隔。 デフォルトは100ミリ秒です。

struts.xml




    

    

        

            
                1000
                500
            

            pages/wait.jsp
            pages/success.jsp
        

    


この場合、wait.jspを表示するのに1秒遅れ、バックグラウンドプロセスが500ミリ秒ごとにすでに実行されているかどうかを確認します。 プロセスが完了したとしても、ページのリロードを起動するには、wait.jspのメタリフレッシュを待つ必要があります。

4. Demo

1秒遅らせて、wait.jspを表示します。

Struts 2 ExecAndWait interceptor example

プロセスが完了すると、success.jspが自動的に表示されます。

Struts 2 ExecAndWait interceptor example