Java 浏览器到Web服务器的通信:使用JSF的倒计时页面

Java 浏览器到Web服务器的通信:使用JSF的倒计时页面,java,jsf,timer,countdowntimer,Java,Jsf,Timer,Countdowntimer,我是新手,所以对我放松点:D 我对java很在行,并编写了一些从输入开始倒计时的代码: import java.util.Scanner; import java.util.Timer; import java.util.TimerTask; public class Stopwatch { static int interval; static Timer timer; public static void main(String[] args) {

我是新手,所以对我放松点:D

我对java很在行,并编写了一些从输入开始倒计时的代码:

import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

public class Stopwatch {

    static int interval;
    static Timer timer;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Input seconds => : ");
        String secs = sc.nextLine();
        int delay = 1000;
        int period = 1000;
        timer = new Timer();
        interval = Integer.parseInt(secs);
        System.out.println(secs);
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                System.out.println(setInterval());

            }
        }, delay, period);
    }

    private static final int setInterval() {
        if (interval == 1) {
            timer.cancel();
        }
        return --interval;
    }
}
因此,无论用户输入什么,它都会在控制台中每秒倒计时

但是我现在正在尝试制作一个jsf web应用程序,让用户输入一个输入,这个值被传递到上面的java代码,一旦计时器完成,就会出现一个弹出窗口

这可能与JSF有关吗?我这样做是正确的吗?如果不是,我应该如何编辑我的java以使其工作


非常感谢:)

基本上,HTTP是一种无状态协议,但是,要实现您想要的,您必须保持浏览器和服务器之间的通信打开。不完全是
JSF
,但是,您可以看看
Comet
是如何工作的。您将了解如何在JSF中实现这一点。或者,如果您使用的是现代浏览器(支持HTMl 5)和web服务器,请查看新的WebSocket编程。

此代码将在web服务器上执行,但您必须在客户端的web浏览器上显示弹出窗口。您必须维护浏览器和web服务器之间的HTTP连接才能推动事件完成。否则,浏览器可以定期从服务器中提取信息。或者,您可以用javascript实现倒计时,它将在brwoser中执行,并使用一些AJAX回调来更新服务器。谢谢,是的,我希望这段代码在服务器上执行,后面的原因是我想让这个倒计时调用serverPrimeFaces上的另一个函数已经有了一个在幕后使用Comet的push组件。遗憾的是,示例页面不可用。好的,谢谢。当PrimeFaces上线时,我会看看它,我的java代码做对了吗?一旦我可以保持连接打开,这会起作用吗?@user2054949您可以检查样本(当样本可用时)。否则,如果您不想等待,您可以下载showcase并自己测试它。它仍然处于关闭状态,您能否发布一些示例代码让我开始,因为这需要尽快完成:)@user2054949,您也可以从Richfaces获得完全相同的功能,