Jsp acesso do usuario

existe alguma maneira de impedir que um usuario se loga duas vezes
, quero dizer um id e uma senha iguais possam se logar ao mesmo tempo

gostaria de impedir isto, estou usando jsp , sem struts

não sei se é a melhor maneira de fazer isso, mas ja resolvi esse problema assim:

na tabela de login do banco, que armazena login e senha, cria mais um coluna para armazenar true ou false, ou outros valores.

exemplo:

se o usuario tentar se conectar, verifica o valor da coluna, se for false(quer dizer que ele nao esta conectado),entao conecta e atualiza o valor da coluna para true.
mas se for true(quer dizer que ele ja esta conectado), entao ele nao se conecta novamente.

Simples…no momento do login…voce passa alguma variável para o objeto de session…tipo uma "flag"no request de logado e nao logado… depois no jsp vc verifica o valor dela…caso estaja com o status “logado”…vc redireciona pra outra jsp invalidando a sessao

Se o usuario logar em um computador ou browser diferente na mesma maquina, isso não vai funcionar.

A ideia seria o que o marcosbrandao falou, ou criar uma classe Singleton com uma coleção onde você adiciona os usuarios que estão logados, e na hora do login verifica se o usuario já não está lá… Crie tambem um SessionListener pra poder tirar o usuario de lá (ou alterar o valor no banco como na outra solução) caso a sessão dele seja destruida.

Ex.:

[code]public class Usuario{
private int id;
private String nome;
private String login;
private String senha;

//get & set

public boolean equals(Object obj){
if(!(obj instanceof Usuario)) return false;
Usuario usu = (Usuario) obj;
return usu.getId()==getId();
}
}

public class LoginHelper{
private List logados;
private static LoginHelper instance;

private LoginHelper(){
}

public static LoginHelper getInstance(){
return instance;
}

public void addUsuario(Usuario usu){
logados.add(usu);
}

public void removerUsuario(Usuario usu){
logados.remove(usu);
}

public boolean isLogado(Usuario usu){
return logados.contains(usu);
}
}[/code]