Escopo correto para um Bean

Tenho na minha aplicação uma página de login e quando esse login é efetuado guardo algumas informações em variáveis de sessão. Na página para onde o usuário é remetido após um login correto eu recupero essas variáveis de sessão para buscar o nome do usuário, para um tratamento mais personalizado. O escopo do meu bean está como request, mas as vezes aparece lixo, ou seja, aparece o nome de outra pessoa na página com tratamento personalizado. Parece que quando outra pessoa loga quase que no mesmo instante ele está misturando os valores das variáveis. Isso pode ser decorrido do escopo do meu bean, quando o melhor pra mim usar nesse caso descrito acima?

Tenta guardar estes dados em um cookie temporário, pode ser que resolva…

Um abraço… :wink:

Só uma pergunta… Você está salvando os dados um a um na session ou criou uma classe para guardá-los?

falow… :wink:

Estou guardando um a um. Crio duas variáveis tipo:

session.setAttibute(“at1”,valor1);
session.setAttibute(“at2”,valor2);

e na outra página pego os dois valores e faço uma consulta pra buscar o nome do usuário, mas tem hora que está pegando nome errado. Quando duas pessoas logam quase que ao mesmo tempo acontece isso.

Kra, não tenho certeza se isso vai resolver o seu problema, mas não custa tentar…

:arrow: Se tiver algum problema é só postar…

Um abraço :wink:


Crie esta classe para guardar os dados do usuário

public class GuardaUsuario {

	private String idSessao;
	private String nome;
	private String login;
	
	public void setIdSessao(String idSessao) {
		this.idSessao = idSessao;
	}
	
	public String getIdSessao() {
		return this.idSessao;
	}
	
	public void setNome(String nome) {
		this.nome = nome;	
	}	
	
	public String getNome() {
		return this.nome;	
	}
	
	public void setLogin(String login) {
		this.login = login;
	}
	
	public String getLogin() {
		return this.login;
	}
	
}

utilize o procedimento abaixo para armazernar os dados em um objeto na sua session.

		// Guardando os dados do usuários....
		GuardaUsuario g = new GuardaUsuario();
		g.setIdSessao(session.getId());
		// estou supondo que vc está recuperando
		// os dados do usuário de uma query...
		g.setNome(resultSet.getString("NomeUsuario"));
		g.setLogin(resultSet.getString("Login"));
		
		// neste ponto vc atribui o objeto inteiro
		// em uma única variável de sessão.
		session.setAttribute("GuardaUsuario",g);

fiz uma implementação bem rápida (dá pra dar uma melhorada) de como vc pode verificar se os dados são do usuário, uma vez que se os dados da sessão estiverem misturados pode ser um problemão em algumas aplicações (pra ser mais sincero na maioria delas :shock: )…
Como vc pode ver adicionei o Id da session tbm nos dados que serão guardados, desta forma vc pode verificar se os dados que vc recuperou é o mesmo da solicitação que vc está processando…

	// Resgatando os dados do usuário...	
	public void metodoPrincipal() throws IOException {
		// atribui a variável com o retorno do metodo
		// abaixo...
		GuardaUsuario g = verSessaoUsuario();
		
		if (g != null) {
			// recupera o nome e o login do usuario
			// que está armazenado em um objeto
			// na sua session... 
			String login = g.getLogin();
			String nome = g.getNome();
			// executa tarefas normalmente
		}
		else {
			// se falhar a consulta da session despacha o 
			// kra de volta pro login...
			response.sendRedirect("http://localhost:8080/minhaAplicacao/login.jsp");
		}
	}
	
	// este método retorna os dados do usuário
	// se tudo estiver Ok, senão retorna null...
	public GuardaUsuario verSessaoUsuario() {
		// Resgatando os dados do usuário...
		GuardaUsuario g = (GuardaUsuario) session.getAttribute("GuardaUsuario");
		if (g == null) {
			return null;	 
		}
		else if (! g.getIdSessao().equals(session.getId())) {
			return null;
		}
		else return g;
	}

Parece ser interessante esse seu método, vou dar uma olhada. No momento fui meio que deslocado para outra aplicação, mas vou voltar a mexer com essa dos atributos de sessão. Os meus dados não vêm de query não, eles vem de um formulário que submeto com post. Então minha página recebe com um getParameter e então gravo os dados na sessão. Todo esse códico que você me passou você coloca nas próprias páginas ou coloca em uma classe e importa nas páginas? Qdo vc usa o id da sessão você tem garantia que ele é único?
Obrigado pelo código e pela ajuda…