Dúvida Apostila FJ-28 da Caelum Autenticação

2 respostas
M

Pessoal boa tarde,
estou tentando modificar um exemplo da apostila fj28 e não estou conseguindo…

eu utilizo o layout da apostila, porem eu utilizo ao inves de vraptor utilizo struts 2 pois aprendi no curso e nao quero misturar muitos frameworks agora para nao me embolar todo nos estudos. estou tentando modificar da seguinte forma:

usuarioDAO:

public Usuario carrega(Usuario usuario) {
		try {
			PreparedStatement stmt = this.connection.prepareStatement("select * from usuarios where login = ? and senha = ?");
			stmt.setString(1, usuario.getLogin());
			stmt.setString(2, usuario.getSenha());
			ResultSet rs = stmt.executeQuery();
			if(rs.next()) {
				return populaContato(rs);
			}

			rs.close();
			stmt.close();
			
			return null;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		
		
	}

	private Usuario populaContato(ResultSet rs) throws SQLException {
		Usuario usuario = new Usuario();
		
		usuario.setNome(rs.getString("nome"));
		usuario.setLogin(rs.getString("login"));
		usuario.setSenha(rs.getString("senha"));
		return usuario;
	}

LoginAction:

public class LoginAction {
	
	private Usuario usuario;
	private String mensagemErro;
	private UsuarioWeb usuarioWeb;
	
		@Action(value="login", results = {
				@Result(name="ok", location="/jsp/sistema.jsp"),
				@Result(name="invalido", location="/index.jsp")
		})
		
		public String login() {
			
			Usuario carregado = new UsuarioDAO().carrega(usuario);
				if(carregado == null){
					mensagemErro = "Usuário ou senha inválidos!!";
					return "invalido";
				} else {
					UsuarioWeb usuarioWeb = new UsuarioWeb();
					usuarioWeb.login(carregado);
					mensagemErro = "Logado";
					return "ok";
				}
			
		}

a div das minhas páginas jsp:

<body>
	<div id="header">
		<div id="usuario">
			<c:if test="${usuarioWeb.logado}">
			Olá, ${usuarioWeb.nome}! <a href="<c:url value="/logout"/>">Logout</a>
			</c:if>
			<c:if test="${empty usuarioWeb or not usuarioWeb.logado}">
			Você não está logado.
			</c:if>
		</div>
		
	</div>

porem eu logo normalmente, verifica e na div erros aparece logado, como esta na mensagemErro da action, entao esta verificando, logando e retornando a mensagemErro normalmente, se eu digitar login invalido, tb retorna para a pagina jsp normalmente com a mensagemErro, porem nao esta mudando de logado para nao logado na div, entao nao esta funcionando o <c:if test = "${usuarioWeb.logado}

era para mudar de nao logado para logado e so aparece você não está logado. mesmo eu ja estando logado e aparecendo na mensagemErro como logado, oq poderia ser??
segue a captura de tela.

agradeço a todos desde ja!!!

2 Respostas

M

esqueci de postar a classe usuarioWeb

package br.com.sistema.Classes;


public class UsuarioWeb {
	private Usuario logado;
	//private Usuario usuario;
	
	public void login(Usuario usuario) {
		this.logado = usuario;
	}
	
	public String getNome() {
		return logado.getNome();
	}
	
	public boolean isLogado() {
		return logado != null;
	}
	
}
M

Ajuda ae pessoal preciso muito para continuar o projeto

Criado 13 de novembro de 2010
Ultima resposta 14 de nov. de 2010
Respostas 2
Participantes 1