Slyfer
#1
Eu criei uma sessão e setei dois atributos nela, mas como que eu recupero esses dois atributos de volta e seto em uma variável Int ou String ?
Sessão criada:
Pessoa pnova = new Pessoa();
//busca
pnova = pDAO.BuscarLogin(pessoa.getCpf(), hash.toHex());
//Cria sessão
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
session.setAttribute("idSessao", pnova.getId());
session.setAttribute("nomeSessao", pnova.getNome());
Isso aqui eu tentei e não funcionou:
int IdSessao = session.getAttribute("idSessao");
Como eu posso fazer ?
Slyfer
#5
acho que entendi, obrigado
Slyfer
#6
Vou compartilhar o código funcionando antes de fechar o tópico
Classe que controla a sessão
package br.com.ufpr.es.util;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import br.com.ufpr.es.modelo.Pessoa;
public class SessionContext {
private static SessionContext instance;
public static SessionContext getInstance(){
if (instance == null){
instance = new SessionContext();
}
return instance;
}
private SessionContext(){
}
private ExternalContext currentExternalContext(){
if (FacesContext.getCurrentInstance() == null){
throw new RuntimeException("O FacesContext não pode ser chamado fora de uma requisição HTTP");
}else{
return FacesContext.getCurrentInstance().getExternalContext();
}
}
public Pessoa getUsuarioLogado(){
return (Pessoa) getAttribute("usuarioLogado");
}
public void setUsuarioLogado(Pessoa usuario){
setAttribute("usuarioLogado", usuario);
}
public void encerrarSessao(){
currentExternalContext().invalidateSession();
}
public Object getAttribute(String nome){
return currentExternalContext().getSessionMap().get(nome);
}
public void setAttribute(String nome, Object valor){
currentExternalContext().getSessionMap().put(nome, valor);
}
}
Filtro utilizado para evitar acesso a página sem ter sessão ativa
package br.com.ufpr.es.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.ufpr.es.modelo.Pessoa;
public class FiltroLogin implements Filter {
/**
* Default constructor.
*/
public FiltroLogin() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
Pessoa pessoa = null;
HttpSession sess = ((HttpServletRequest) request).getSession(false);
if (sess != null) {
pessoa = (Pessoa) sess.getAttribute("usuarioLogado");
}
if (pessoa == null) {
String contextPath = ((HttpServletRequest) request).getContextPath();
((HttpServletResponse) response).sendRedirect(contextPath + "/index.xhtml");
} else {
chain.doFilter(request, response);
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
Método logar no meu bean
public String doLogin() {
SimpleHash hash = new SimpleHash("md5", pessoa.getSenha());
pnova = pDAO.BuscarLogin(pessoa.getCpf(), hash.toHex());
if (pnova.getId() > 0 && pnova.getSituacao().equalsIgnoreCase("ativo")) {
// redireciona conforme o nível
SessionContext.getInstance().setAttribute("usuarioLogado", pnova);
if (pnova.getNivel() == 1) {
return "/pages/professor/principalProfessor.xhtml?faces-redirect=true";
}
if (pnova.getNivel() == 2) {
return "/pages/aluno/principalAluno.xhtml?faces-redirect=true";
}
if (pnova.getNivel() == 3) {
return "/pages/supervisor/principalSupervisor.xhtml?faces-redirect=true";
}
if (pnova.getNivel() == 4) {
return "/pages/principais/principalEmpresa.xhtml?faces-redirect=true";
}
if (pnova.getNivel() == 5) {
return "/pages/funcionario/principalFuncionario.xhtml?faces-redirect=true";
} else {
return "/index.xhtml?faces-redirect=true";
}
}else {
FacesMessage fm = new FacesMessage("Dados incorretos", "ERRO MSG");
fm.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null, fm);
return "";
}
}