Sessão WEB

7 respostas
R

Feras

tem um sistema que o usuario faz o upload de um arquivo eu preciso setar na sessão o momento em que ele fez esse upload

e em um outro ponto do sistema ele faz o envio desse arquivo, no momento em que ele faz o envio preciso pegar o valor que foi

setado anteriormente e calcular para ver se e maior que um valor determinado (valor estatico) se for maior a sessão do usuário vai expirar

fiz isso aqui

GerenciadorSessao sessao = GerenciadorSessao.getInstancia(request.getSession(true));			
sessao.setAtributo("HORA_ENVIO", System.currentTimeMillis());

mais o valor do System.currentTimeMillis() e = 1276883380302 se for calcular isso em horas e muito e acredito que não seja essa propriedade que tenho que pegar

porque o tempo em que deve expirar a sessão nesse caso e de no maximo 15 minutos

7 Respostas

E

System.currentTimeMillis não serve para você saber a hora atual. Serve para você determinar um espaço de tempo. Por exemplo:

long t = System.currentTimeMillis();
// Faça alguma coisa que leve, por exemplo, 2 segundos;
t = System.currentTimeMillis() - t; 
// O valor de t deve ser de cerca de 2000, que é 2 segundos.
maior_abandonado

você pode usar esse método para pegar os milisegundos nas duas vezes e subtraindo você tem a diferença em milisegundos… ai você pode dividir por 1000 e ter o valor em segundos, divide denovo por 60 e terá em minutos, etc…

Se você quiser obter a data/hora, você pode passar esse long ai que você tem no construtor de um Date, a partir dai você pode conseguir esses dados, ou setar num Calendar e usar o Calendar…etc…

F

Para pegar a data/Hora atual

new java.util.Date();

Para transformar um Date em String com a formatação que quiser use o java.text.SimpleDateFormat.
Exemplo:

Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
String dataHoraFormatada = sdf.format(d);

Para pegar os campos da Date use o java.util.Calendar:

Calendar c = Calendar.getInstance();
c.setTime(d); // d é a sua Date
int hora = c.get(Calendar.HOUR_OF_DAY);
int dia = c.get(Calendar.DAY_OF_MONTH);
int mes = c.get(Calendar.MONTH);
R

entanglement

mais e exatamente isso que eu quero um espaço de tempo que o cara fez o upload do arquivo até o momento que ele enviou acontece que

o valor do System.currentTimeMillis() e = 1276883380302 esse valor e quando ele carrega o arquivo

se eu dividir isso por 100000 vou ter o minutos mais e um valor muito alto de sessão concorda que tem algo errado o que eu posso fazer ?

F

Dividir por 100000 não te dá os minutos.

O valor que você tem antes das divisões é o tempo decorrido em milisegundos entre a primeira marcação da hora e a segunda.
Divida por 1000 para ter os segundos decorridos.
Depois por 60 para ter os minutos.
Faça como o maior_abandonado sugeriu.
Se a data/hora estiver correta no sistema do computador onde o programa roda, vai funcionar.

CarvalR2

na hora que o cara faz o upload:

Long h = System.currentTimeMillis();
sessao.set … (“HORARIO”, h);

na hora que o cara envia o arquivo:

Long h = (Long) sessao.get(HORARIO);

Long diff = System.currentTimeMillis() - h;

Diferença em minutos: (diff / 1000) / 60

R

feras consegui e irei postar para futuras duvidas

aqui e onde setei o valor ao fazer o upload do arquivo

sessao.setAtributo("Hora_envio", System.currentTimeMillis());

aqui onde eu recuperei o valor antes de enviar o arquivo subtraio o intervalo da hora que o usuário fez o upload do arquivo

e quando ele vai enviar pego a diferença e /1000 para obter os segundos.

Long horaEnvio = (Long)sessao.getAtributo("Hora_envio");
			Calendar horaAtual = Calendar.getInstance();		
			Date dt = new Date (horaEnvio.longValue());  
	        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss.SSS");  
	       
	        System.out.println ("Fomatado data da Sessão: " + df.format (dt));		
			System.out.println("Hora Atual: " + horaAtual.getTime());
			
			long diferencaHorario = horaAtual.getTimeInMillis() - df.getCalendar().getTimeInMillis();
			long diferecaSegundos =	diferencaHorario / 1000;
			System.out.println(diferecaSegundos);

valeu a todos

Criado 18 de junho de 2010
Ultima resposta 21 de jun. de 2010
Respostas 7
Participantes 5