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;
}
}
UsuarioDao
/*
* 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
<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>
Hierarquia de pastas
-WEB-INF
—jsp
------carrinho
------mundo
------produtos
------usuarios
---------login.jsp
---------novo.jsp
Muito Obrigado.
Vinicius Teixeira
