Struts 2 execAndWaitインターセプターの例
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つのページを作成します。
-
wait.jsp-長時間実行されているプロセスの処理中にユーザーに表示します。
-
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パラメーター
-
delay (optional):wait.jspを表示するためのミリ秒単位の初期遅延。 デフォルトは遅延なしです。
-
delaySleepInterval (optional):バックグラウンドプロセスがすでに実行されているかどうかを確認するためのミリ秒単位の間隔。 デフォルトは100ミリ秒です。
struts.xml
1000 500 pages/wait.jsp pages/success.jsp
この場合、wait.jspを表示するのに1秒遅れ、バックグラウンドプロセスが500ミリ秒ごとにすでに実行されているかどうかを確認します。 プロセスが完了したとしても、ページのリロードを起動するには、wait.jspのメタリフレッシュを待つ必要があります。
4. Demo
1秒遅らせて、wait.jspを表示します。
プロセスが完了すると、success.jspが自動的に表示されます。