簡體   English   中英

JSP:倒數計時器不起作用?

[英]JSP: Countdown timer not working?

獲取方法:

 protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // Writes to htmlPage
        final PrintWriter writer = response.getWriter();
        // init CountDownTimer TODO: Understand why this doesn't work
        CountdownTimer timer = new CountdownTimer(CountdownTimer.toMili(5));
        timer.start(new OnWaiting() {

            @Override
            public void onFinished() {
                writer.println("Timer Finished");
            }
        });
        // getting params from url '?'
        final String userName = request.getParameter(USER_NAME);
        final String passWord = request.getParameter(PASS_WORD);
        // authentication step
        if (isValidUser(userName, passWord)) {
            writer.println(VALID);
        } else {
            writer.println(INVALID_USER_NAME + " or " + INVALID_PASS_WORD);
        }
    }

特別是這部分:

CountdownTimer timer = new CountdownTimer(CountdownTimer.toMili(5));
        timer.start(new OnWaiting() {

            @Override
            public void onFinished() {
                writer.println("Timer Finished");
            }
        });

倒數班:

public class CountdownTimer {
    private final int mili;

    public CountdownTimer(int mili) {
        this.mili = mili;
    }

    public void start(final OnWaiting waiting) {
        final Thread thread = new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(mili);
                    waiting.onFinished();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        thread.start();
    }

    public static final int toMili(int seconds) {
        return seconds * 1000;
    }
}

和界面:

public interface OnWaiting {
    public void onFinished();

}

為什么這在JSP中不起作用? 它在常規的Java項目下工作。 我想通過Java而不是JSP中的javascript來做到這一點。

它不起作用,因為一旦Servlet Get方法完成與客戶端的通信,它就會關閉。 HTTP通常是請求-響應協議, Websockets除外,因此,一旦響應完成,將任何內容發送到響應都將無效。

頁面加載后,您可以嘗試ajax請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM