RESOLVIDO! Ajuda Com Itenterceptor VRaptor

3 respostas
diogoprosoft

Galera estou com um pequeno problema:

Tenho uma tela de login, caso o usuario nao se logou e querer entrar em alguma pagina pela url quero validar esse tratamento, entao criei um Interceptor para fazer isso, ele verifica se o usuario esta na sessao e faz algo, porem se o usuario nao esta na sessao nao consigo redirecionar para pagina de login e nem mostrar uma mensagem, alguem sabe como posso fazer isso?

Interceptor

public class SimpleInterceptor implements Interceptor {
	
    private static volatile int hitCount = 0;
    private static volatile int concurrentHits = 0;

    @In(scope=ScopeType.SESSION,required=false ,key="usuario")
	Login log = new Login();        
    
    public void intercept(LogicFlow flow) throws LogicException,ViewException {
                    
            // antes da lógica
            hitCount++;
            concurrentHits++;
                                    	
            if(getLog().getNmUsuario() != null){            	                
                // executa a lógica e redirecione para o view
                flow.execute();
                concurrentHits--;                
            }else{                
            	System.out.println("Usuario Nao Logado.");	
            }
                        
    }

    public Login getLog() {
		return log;
	}    
}

3 Respostas

sergiolopes

Para fazer esse redirecionamento, você vai precisar pegar o responde e fazer na mão o sendRedirect

diogoprosoft

Verdade Cara, valeu

ficou assim

public class SimpleInterceptor implements Interceptor {
	
    private static volatile int hitCount = 0;
    private static volatile int concurrentHits = 0;

    @In(scope=ScopeType.SESSION,required=false ,key="usuario")
	Login log = new Login();        
    
    public void intercept(LogicFlow flow) throws LogicException,ViewException {
            
    	HttpServletRequest request = flow.getLogicRequest().getRequest();
    	HttpServletResponse response = flow.getLogicRequest().getResponse();
    	
    	try{
            // antes da lógica
            hitCount++;
            concurrentHits++;
                                    	
            if(getLog().getNmUsuario() != null){            	                
                // executa a lógica e redirecione para o view
                flow.execute();
                concurrentHits--;                
            }else{                
            	System.out.println("Usuario Nao Logado.");
            	response.sendRedirect("login.autenticaUsuario.logic");
            }
    	} catch (Exception e) {
    	  throw new LogicException(e);
    	}

    }

    public Login getLog() {
		return log;
	}    
}
C

Olá, será que alguém poderia me ajudar a fazer uma tela de login com o vraptor no eclipse?
A parte Java fiz com facilidade, mas quando fui fazer os jsp empaquei nos redicionamentos.
Vou postar todas as classes para voces me ajudarem
primeiro no pacote src:
[color=blue]package br.com.caelum.vraptor.blank;

[color=red]import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

private static SessionFactory factory;

static {
	AnnotationConfiguration cfg = new AnnotationConfiguration();
	cfg.addAnnotatedClass(Usuario.class);
	factory = cfg.buildSessionFactory();
}

public Session getSession() {
	return factory.openSession();
}

}

package br.com.caelum.vraptor.blank;

import br.com.caelum.vraptor.Get;

import br.com.caelum.vraptor.Path;

import br.com.caelum.vraptor.Post;

import br.com.caelum.vraptor.Put;

import br.com.caelum.vraptor.Resource;
<a class="mention" href="/u/resource">@Resource</a>

public class IndexController {

<a class="mention" href="/u/get">@Get</a>

<a class="mention" href="/u/path">@Path</a>("/")

public void novo() {

}
@Post
@Path("/usuario")
public void salvar() {
}

@Put
@Path("/usuario")
public void editar() {
}

}

package br.com.caelum.vraptor.blank;

import java.sql.Date;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.Table;
@Entity

@Table(name=usuario)

public class Usuario {
@Column(name="login")
private String login;

@Column(name="senha")
private String senha;

@Id
@Column(name="codigo") 
@GeneratedValue
private Long codigo;

@Column(name="nome")
private String nome;

@Column(name="dtnascimento")
private Date dtnascimento;

@Column(name="ativo")
private Boolean ativo;

public String getLogin() {
	return login;
}

public String getSenha() {
	return senha;
}

public Long getCodigo() {
	return codigo;
}
public String getNome() {
	return nome;
}


public Date getDtnascimento() {
	return dtnascimento;
}

public Boolean getAtivo() {
	return ativo;
}

public void setLogin(String login) {
	this.login = login;
}

public void setSenha(String senha) {
	this.senha = senha;
}

public void setNome(String nome) {
	this.nome = nome;
}

public void setDtnascimento(Date date) {
	this.dtnascimento = date;
}

public void setAtivo(Boolean ativo) {
	this.ativo = ativo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

}

package br.com.caelum.vraptor.blank;

import java.util.List;

import javax.annotation.Resource;

import br.com.caelum.vraptor.Get;

import br.com.caelum.vraptor.Path;

import br.com.caelum.vraptor.Post;

import br.com.caelum.vraptor.Result;

import br.com.caelum.vraptor.view.Results;

@Resource
public class UsuarioController {

private Result result;

public UsuarioController(Result result) {
	this.result = result;
}


@Get
@Path("/")
public void novo() {
}

@Post
@Path("/usuario")
public void salvar(Usuario usuario) {

// result.use(Results.page()).forward(“WEB-INF/jsp/usuario/lista.jsp”);
}

@Get
@Path("/usuario/lista")
public List<Usuario> lista() {
	return UsuarioDao.loadAll();	
}

}

package br.com.caelum.vraptor.blank;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@SessionScoped
@Component
public class UsuarioDao {

private final Session session;
private static List<Usuario> usuarioList = new ArrayList<Usuario>();
private Integer codigo = 1;

public void salvar(Usuario usuario) {
usuarioList.add(usuario);
usuario.setCodigo(codigo.longValue()+1);
}

public static List<Usuario> loadAll() {
	return usuarioList;
	}
 
public UsuarioDao(Session session) {
		this.session = session;
}

public List<Usuario> listaTodos() {
	return session.createCriteria(Usuario.class).list();
}

}

package br.com.caelum.vraptor.blank;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@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;
}

}[/color]
[color=blue]
Agora o WEB-INF:
no pacote jsp que no web-inf, tem outro pacote chamado index. Nele tem as classes (nome_projeto/web content/web-inf/jsp/index):
<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

Tela Inicial Novo Usuário
Lista Usuários

<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

Novo Usuario Nome: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

Codigo: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input name="usuario.codigo" type="type" value="${usuario.codigo}" /><br><br>
	
	Senha: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input name="usuario.senha" type="password" value="${usuario.senha}" /><br><br>
	
	Login: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input name="usuario.login" type="text" value="${usuario.login}" /><br><br>
	
	Data de Nascimento: <input name="usuario.dtnascimento" type="text" value="${usuario.dtnascimento}" /><br><br>
	
	<input type="checkbox" name="usuario.ativo" value="${usuario.ativo}"> Ativo <br><br>
	
	<center><button type="submit">Ok</button></center>
</form>
[/color] no pacote jsp que no web-inf, tem outro pacote chamado usuario. Nele tem as classes (nome_projeto/web content/web-inf/jsp/usuario): [color=blue]<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> Apresentação dos Dados
Login Senha Codigo Nome Data de Nascimento Ativo
${item.login} ${item.senha} ${item.codigo} ${item.nome} ${item.dtnascimento} ${item.ativo}
[/color]

Sao essas classes e páginas. Quando eu clico no botao ou no link que direciona para outra página da erro. Alguém tem alguma ideia do que pode ser???

Agradesço desde já.

T+.

Agora o WEB-INF:
no pacote jsp que no web-inf, tem outro pacote chamado index. Nele tem as classes (nome_projeto/web content/web-inf/jsp/index):
[color=blue]<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

Tela Inicial Novo Usuário
Lista Usuários

<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

Novo Usuario Nome: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

Codigo: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input name="usuario.codigo" type="type" value="${usuario.codigo}" /><br><br>
	
	Senha: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input name="usuario.senha" type="password" value="${usuario.senha}" /><br><br>
	
	Login: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input name="usuario.login" type="text" value="${usuario.login}" /><br><br>
	
	Data de Nascimento: <input name="usuario.dtnascimento" type="text" value="${usuario.dtnascimento}" /><br><br>
	
	<input type="checkbox" name="usuario.ativo" value="${usuario.ativo}"> Ativo <br><br>
	
	<center><button type="submit">Ok</button></center>
</form>
[/color] no pacote jsp que no web-inf, tem outro pacote chamado usuario. Nele tem as classes (nome_projeto/web content/web-inf/jsp/usuario): [color=blue]<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> Apresentação dos Dados
Login Senha Codigo Nome Data de Nascimento Ativo
${item.login} ${item.senha} ${item.codigo} ${item.nome} ${item.dtnascimento} ${item.ativo}
[/color]

Sao essas classes e páginas. Quando eu clico no botao ou no link que direciona para outra página da erro. Alguém tem alguma ideia do que pode ser???

Agradesço desde já.

T+.

Criado 26 de março de 2009
Ultima resposta 10 de fev. de 2010
Respostas 3
Participantes 3