Relógio em JSP

Preciso mostar um relógio em uma página jsp(jsf), e depois recuperar esse valor e armazenar em um banco. Alguém tem alguma dica ou tutorial que faça isso?

Att,

Ricardo

Um relógio tipo HH:mm:ss?
Se for isso, o server side só vai servir para prover a hora inicial, pois para o resto terá que usar JavaScript.

Isso mesmo, não tem uma forma do formulario ficar com a mesma hora(HH:mm:ss) do servidor?

Att,

Ricardo

Para mostrar o relógio:

new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date())

Jogue esse valor em um campo hidden e pega ele via “request.getAttribute” e salva no banco

:wink:

O problema não é pegar a data/hora, e sim mostar a hora para os usuários. Eu estou fazendo um ponto eletrônico onde os usuários irão fazer um login e caso tenha sucesso irá para uma outra página onde eu quero mostar um relógio por durante + ou - 30 segudos, depois disso o formulário será fechado. Pelo que eu andei pesquisado a solução é sincronizar o relógio da estação com o servidor quando ele fizer o login na rede. Mas o meu problema é que tem alguns “espiritos de porco” que ficam fuçando e elteram a data/hora e depois falam q não mexeram em nada. Se alguém tiver uma outra solução bem vinda!!!

Att,

Ricardo

Tive exatamente esse problema e resolvi mais ou menos assim:

// com velocity pego o valor de uma variavel no 
// servlet contendo um valor long indicando a data.
// Por exemplo new Date().getTime()
var now = new Date( $time );
window.setInterval( printTime, 1000 ); // chama essa função a cada 1 segundo

function printTime() {
    now.setSeconds( now.getSeconds() + 1 );

    var time = document.getElementById( 'time' );
    time.innerHTML = now.getHour() + ":" + now.getMinutes() + ":" + now.getSeconds();
}

...

<p id="time"/>

O form da um refresh a cada um segundo? Será que você poderá explicar mais detalhadamente? Na camada view estou utilizando jsf.

Att,

Ricardo

Não há refreshs envolvidos.

Ao fazer isso

window.setInterval( printTime, 1000 );

estamos dizendo ao browser executar a função printTime() a cada 1 segundo.
Por sua vez, esta função incrementa a data enviada pelo servidor em 1 segundo e imprime dentro do paragrafo HTML.

Agora, para pegar a data do servidor utilizando JSF não sei como faz. O que é necessário fazer é inserir no objeto HttpServletResponse um long indicando a data do server ( new Date().getTime() ), e atribuir isso à variavel em javascript, como fiz aqui

var now = new Date( $time ); // $time é o valor enviado pelo server

Se não me engano, o equivalente em JSP seria

var now = new Date( &lt;%= new Date().getTime() %&gt; );

Valeu pela dica, eu me viro aqui!!!

Att,

Ricardo

E essa parada funcionou mesmo?
Pq não estou conseguindo aki