Não consigo pegar o usuário logado
Esse é o erro que dá, quando eu vou redirecionar para uma nova página
Não sei o que fazer com essa classe. Essa classe tá aí, porque o eclipse reclamou e sugeriu criar
Esse é o código que fiz e carreguei para pegar o usuário logado.
javax.servlet.ServletException: org.apache.catalina.session.StandardSessionFacade cannot be cast to br.com.mosaicodigital.modelo.HttpSession root cause java.lang.ClassCastException: org.apache.catalina.session.StandardSessionFacade cannot be cast to br.com.mosaicodigital.modelo.HttpSession
Não sei o que fazer com essa classe. Essa classe tá aí, porque o eclipse reclamou e sugeriu criar
public class HttpSession { public Login getAttribute(String string) { //getSession().setAttribute("usuarioLogado", ()); return null; } }
Esse é o código que fiz e carreguei para pegar o usuário logado.
public FacesContext getFacesContext() { return FacesContext.getCurrentInstance(); } public HttpSession getSession() { return (HttpSession) getFacesContext().getExternalContext().getSession(false); } public List<Escola> findAll() { Login usuario = (Login) getSession().getAttribute("LoginControle"); Query query = getEntityManager().createQuery("select distinct esc from Escola esc ,Matricula mat" + " where mat.idescola = esc.idescola" + " and mat.idpessoa = " + usuario.getPessoa().getIdPessoa() + " and mat.situacao = 'A' order by esc.nome"); return (List<Escola>) query.getResultList(); }
Pjava
Curtidas 0
Respostas
Davi Costa
09/05/2011
Essa classe não era para vc criar, essa classe é da api java servlet-api.jar.
Tente adicionar esse jar ao seu projeto. Geralmente os servidores já deviam ter ele.
Vc tá usando qual servidor?.. O eclipse sugeriu somente criação de classe, ele não pediu para vc fazer nenhum import não?
Att Davi
Tente adicionar esse jar ao seu projeto. Geralmente os servidores já deviam ter ele.
Vc tá usando qual servidor?.. O eclipse sugeriu somente criação de classe, ele não pediu para vc fazer nenhum import não?
Att Davi
GOSTEI 0
Pjava
09/05/2011
Nãom pediu não. Eu uso o GlassFish 3 open source. Eu fui importar esse e deu erro:
import javax.servlet.http.HttpSession; e aí ele sugeriu criar essa classe.Eu não sei porque deu erro no Import. Eu dá o import com HTTP e não http.
import javax.servlet.http.HttpSession; e aí ele sugeriu criar essa classe.Eu não sei porque deu erro no Import. Eu dá o import com HTTP e não http.
GOSTEI 0
Davi Costa
09/05/2011
Pois faz o seguinte coloca esse jar na sua app, sópara testar:
servlet-api.jar
Att Davi
servlet-api.jar
Att Davi
GOSTEI 0
Davi Costa
09/05/2011
Sim mais mais uma dúvida na hr de dar opções de soluções ele não apresentou nenhuma opção de import?
Att Davi
Att Davi
GOSTEI 0
Pjava
09/05/2011
Não, de import nenhuma para essa situação. Para outras sim, como joincolumn e etc... Mas para esse import, do httpsession não.
GOSTEI 0
Davi Costa
09/05/2011
Pois tenta achar esse jar. servlet-api.jar
E coloca na sua pasta lib
Agoraassim se vc psquisar sobre Spring security não precisria ver isso, além de ser uma solução testada e na minha opnião a melhor nessa situação para java ela te dá alguns recursos a mais muito bons, e é fácil de usar
att Davi
E coloca na sua pasta lib
Agoraassim se vc psquisar sobre Spring security não precisria ver isso, além de ser uma solução testada e na minha opnião a melhor nessa situação para java ela te dá alguns recursos a mais muito bons, e é fácil de usar
att Davi
GOSTEI 0
Pjava
09/05/2011
retirei a classe HttpSession e agora deu esse erro:
javax.servlet.ServletException: Unresolved compilation problem: The method getSession() from the type ListaEscola refers to the missing type HttpSession root cause java.lang.Error: Unresolved compilation problem: The method getSession() from the type ListaEscola refers to the missing type HttpSession
Eu nunca fiz nada com login, nunca peguei usuário logado, essa é minha dúvida. Em delphi é bem diferente.
javax.servlet.ServletException: Unresolved compilation problem: The method getSession() from the type ListaEscola refers to the missing type HttpSession root cause java.lang.Error: Unresolved compilation problem: The method getSession() from the type ListaEscola refers to the missing type HttpSession
Eu nunca fiz nada com login, nunca peguei usuário logado, essa é minha dúvida. Em delphi é bem diferente.
GOSTEI 0
Pjava
09/05/2011
A classe que pega o usuário logado. Agora o que fazer no meu MB? Vou começar a ler o Spring Security, mas até 12:00 tenho q fazer esse login funfar. Depois passo tudo para Spring Security.
[code]public class ListaEscola {
private List<Escola> escola;
private EntityManager em;
public List<Escola> getEscola() {
return escola;
}
public void setEscola(List<Escola> escola) {
this.escola = escola;
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
protected EntityManager getEntityManager()
{
if (this.em == null) {
this.em = EntityManagerFactorySingleton.getInstance().createEntityManager();
}// throw new IllegalStateException("Erro");
return this.em;
}
/*public Session getSession() {
EntityManager entityManager;
return ((Session)entityManager.getDelegate());
}
public final Criteria createCriteriaExample(Entity example) {
Criteria executableCriteria = getSession().createCriteria(example.getClass());
return executableCriteria;
}*/
public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
public HttpSession getSession() {
return (HttpSession) getFacesContext().getExternalContext().getSession(false);
}
public List<Escola> findAll() {
Login usuario = (Login) getSession().getAttribute("LoginControle");
Query query = getEntityManager().createQuery("select distinct esc from Escola esc ,Matricula mat" +
" where mat.idescola = esc.idescola" +
" and mat.idpessoa = " + usuario.getPessoa().getIdPessoa() +
" and mat.situacao = 'A' order by esc.nome");
return (List<Escola>) query.getResultList();
}
[code]public class ListaEscola {
private List<Escola> escola;
private EntityManager em;
public List<Escola> getEscola() {
return escola;
}
public void setEscola(List<Escola> escola) {
this.escola = escola;
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
protected EntityManager getEntityManager()
{
if (this.em == null) {
this.em = EntityManagerFactorySingleton.getInstance().createEntityManager();
}// throw new IllegalStateException("Erro");
return this.em;
}
/*public Session getSession() {
EntityManager entityManager;
return ((Session)entityManager.getDelegate());
}
public final Criteria createCriteriaExample(Entity example) {
Criteria executableCriteria = getSession().createCriteria(example.getClass());
return executableCriteria;
}*/
public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
public HttpSession getSession() {
return (HttpSession) getFacesContext().getExternalContext().getSession(false);
}
public List<Escola> findAll() {
Login usuario = (Login) getSession().getAttribute("LoginControle");
Query query = getEntityManager().createQuery("select distinct esc from Escola esc ,Matricula mat" +
" where mat.idescola = esc.idescola" +
" and mat.idpessoa = " + usuario.getPessoa().getIdPessoa() +
" and mat.situacao = 'A' order by esc.nome");
return (List<Escola>) query.getResultList();
}
GOSTEI 0
Pjava
09/05/2011
To fazendo uma salada tremenda. Em realidade na classe login eu só tenho a validação do login. Essa classe aqui em baixo, acho é que eu deveria pegar o id do usuário, certo?
public class LoginDAO extends DAOGenerico<Login> { public LoginDAO(EntityManager em) { super(em); } @SuppressWarnings("unchecked") public List<Login> buscaLogin(String loginProcurado) { em.getTransaction().begin(); Query q = em.createQuery("from Login l where l.login = :loginProcurado"); q.setParameter("loginProcurado", loginProcurado); List<Login> listaLogin = q.getResultList(); em.getTransaction().commit(); return listaLogin; } }
GOSTEI 0
Davi Costa
09/05/2011
carao interessante seria vc pegar o usuario e fazer um select filtrando pela login e asenha, caso retorne vazio, vc retorna ao usuário na tela login ou usuário incorretos.
Att Davi
Att Davi
GOSTEI 0
Pjava
09/05/2011
Sei que é muita pergunta para coisas fáceis, mas há muita coisa que preciso aprender em java. Farei um curso aqui, porque percebi que falta muita coisa para mim. Não entendi o q vc disse, em linguagem técnica. Cara, é uma coisa simples, eu sei, o pegar o login e eu não consigo fazer. Tudo que faço dá erro. Delphi é tão simple, mas vou com Java até o fim.
GOSTEI 0
Dyego Carmo
09/05/2011
Acho melhor não fazer este cast direto... faz um teste antes com instanceof...
vai evitar bastante dor de cabeca.
vai evitar bastante dor de cabeca.
GOSTEI 0