Пример перехватчика Struts 2 execAndWait

Пример перехватчика Struts 2 execAndWait

Скачать -Struts2-ExecAndWait-Interceptor-Example.zip

Struts 2 поставляется с очень интересным перехватчиком «Execute and Wait» под названием «execAndWait», это очень удобный перехватчик для длительных действий в фоновом режиме, показывая пользователю настраиваемую страницу ожидания. В этом руководстве показан полный пример использования перехватчика 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

Создайте две страницы:

  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
        

    


В этом случае он будет задерживать 1 секунду, чтобы отобразитьwait.jsp, и каждые 500 миллисекунд проверять, выполняется ли уже фоновый процесс. Даже если процесс завершен, все равно нужно дождаться метаобновленияwait.jsp, чтобы запустить перезагрузку страницы.

4. Demo

Задержите 1 секунду и покажитеwait.jsp.

Struts 2 ExecAndWait interceptor example

Когда процесс будет завершен, автоматически отобразитеsuccess.jsp.

Struts 2 ExecAndWait interceptor example