Autenticação - Pagina 112 - Capitulo 13 - Curso FJ28

2 respostas
V

Boa tarde pessoal,

Estou fazendo toda a apostila FJ28 do caelum e ja estou no final da apostila.
Agora, na autenticacao de usuarios, deu pau.
Gostaria de saber se alguem pode me ajudar.
O erro é o seguinte.
Quando clico no login (pagina para logar) a pagina nao abre e aparece o Erro 404.
Todo resto do sistema esta ok, inclusive o cadastro de usuarios.
Apenas a pagina de login q nao abre.
Vou colocar o codigo das paginas.

Controller
package br.com.caelum.goodbuy.controller;  
  
import br.com.caelum.vraptor.validator.ValidationMessage;  
import br.com.caelum.goodbuy.dao.UsuarioDao;  
import br.com.caelum.goodbuy.infra.UsuarioWeb;  
import br.com.caelum.goodbuy.modelo.Usuario;  
import br.com.caelum.vraptor.Get;  
import br.com.caelum.vraptor.Path;  
import br.com.caelum.vraptor.Post;  
import br.com.caelum.vraptor.Resource;  
import br.com.caelum.vraptor.Result;  
import br.com.caelum.vraptor.Validator;  
import static br.com.caelum.vraptor.view.Results.*;  
  
/** 
* 
* @author viniciusst 
*/  
@Resource  
public class UsuariosController {  
  
    private final UsuarioWeb usuarioWeb;  
    private final UsuarioDao dao;  
    private final Result result;  
    private final Validator validator;  
  
    public UsuariosController(UsuarioDao dao, Result result, Validator validator, UsuarioWeb usuarioWeb) {  
        this.dao = dao;  
        this.result = result;  
        this.validator = validator;  
        this.usuarioWeb = usuarioWeb;  
    }  
  
    @Post  
    @Path("/usuarios")  
    public void adiciona(Usuario usuario) {  
        if (dao.existeUsuario(usuario)) {  
            validator.add(new ValidationMessage("Login já existe", "usuario.login"));  
        }  
        validator.onErrorUse(page()).of(UsuariosController.class).novo();  
    }  
  
    public void novo() {  
    }  
  
    @Get  
    @Path("/login")  
    public void loginForm() {  
    }  
  
    @Post  
    @Path("/login")  
    public void login(Usuario usuario) {  
        Usuario carregado = dao.carrega(usuario);  
        if (carregado == null) {  
            validator.add(new ValidationMessage("Login e/ou senha inválidos", "usuario.login"));  
        }  
        validator.onErrorUse(page()).of(UsuariosController.class).loginForm();  
        usuarioWeb.login(carregado);  
        result.redirectTo(ProdutosController.class).lista();  
    }  
  
    @Path("/logout")  
    public void logout() {  
        usuarioWeb.logout();  
        result.redirectTo(ProdutosController.class).lista();  
  
    }  
}
UsuarioWeb
package br.com.caelum.goodbuy.infra;  
  
import br.com.caelum.goodbuy.modelo.Usuario;  
import br.com.caelum.vraptor.ioc.Component;  
import br.com.caelum.vraptor.ioc.SessionScoped;  
  
/** 
* 
* @author viniciusst 
*/  
@Component  
@SessionScoped  
public class UsuarioWeb {  
  
    private Usuario logado;  
  
    public void login(Usuario usuario) {  
        this.logado = usuario;  
    }  
  
    public String getNome() {  
        return logado.getNome();  
    }  
  
    public boolean isLogado() {  
        return logado != null;  
    }  
  
    public void logout() {  
        this.logado = null;  
    }  
}  
[code]

UsuarioDao 
[code]
/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/  
package br.com.caelum.goodbuy.dao;  
  
import br.com.caelum.goodbuy.modelo.Usuario;  
import br.com.caelum.vraptor.ioc.Component;  
import org.hibernate.Session;  
import org.hibernate.Transaction;  
import org.hibernate.criterion.Restrictions;  
  
/** 
* 
* @author viniciusst 
*/  
@Component  
public class UsuarioDao {  
  
    private final Session session;    
    public UsuarioDao(Session session){    
        this.session=session;    
    }    
    public boolean existeUsuario(Usuario usuario){    
        Usuario encontrado=(Usuario) session.createCriteria(Usuario.class)    
        .add(Restrictions.eq("login", usuario.getLogin()))    
        .uniqueResult();    
        return encontrado !=null;    
    }    
    public Usuario carrega(Usuario usuario){    
        return(Usuario) session.createCriteria(Usuario.class)    
        .add(Restrictions.eq("login", usuario.getLogin()))    
        .add(Restrictions.eq("senha", usuario.getSenha()))    
        .uniqueResult();    
    }    
    public void adiciona(Usuario usuario){    
        Transaction tx=this.session.beginTransaction();    
        this.session.save(usuario);    
        tx.commit();    
    }  
}

login.jsp
[code]
<form action="<c:url value="/login"/>" method="POST">
<fieldset>
<legend>Efetue o login</legend>
<label for="login">Login:</label>
<input id="login" type="text" name="usuario.login"/>
<label for="senha">Senha:</label>
<input id="senha" type="password" name="usuario.senha"/>
<button type="submit">Login</button>
</fieldset>
</form>
[code]

Hierarquia de pastas

-WEB-INF
---jsp
------carrinho
------mundo
------produtos
------usuarios
---------login.jsp
---------novo.jsp

Muito Obrigado.

Vinicius Teixeira

2 Respostas

Lucas_Cavalcanti

qual é a URI que aparece no browser qdo dá erro 404?

V

Era o nome do meu JSP.
Teria q ser loginForm.
Resolvido.
:smiley:

Criado 22 de março de 2011
Ultima resposta 22 de mar. de 2011
Respostas 2
Participantes 2