como pegar um usuario na sessão e armazenar em um atributo no struts 2?
Dúvida: Struts 2
6 Respostas
existe se não me engano uma interface SessionAware do struts 2 onde o struts preenche um map da action com a sessao http… da uma pesquisada sobre o assunto. Acho que tem como pegar o ServletRequest relativo a chamada a action, não tenho certeza disso, mas a SessionAware é certeza sim.
Tem a classe ServletActionContext que retorna os Objetos associados com a Thread atual.
Para pegar a sessão faca assim:
HttpSession session = ServletActionContext.getRequest().getSession();
Realmente não é necessário implementar a interface SessionAware.
Você pode manipular atributos de sessão de 2 maneiras:
1. Acessando a sessão como se fosse um Map (Collection)
Map sessao = ActionContext.getContext().getSession();
2. Acessando a sessão como se fosse um HttpSession (API Servlet)
HttpSession sessao = ServletActionContext.getRequest().getSession();
Tenho que pegar o usário na sessão e persistir em uma base de dados, como posso implementar isso?
Sua dúvida é
pegar o usuário na sessão
ou
persistir[o usuário] em uma base de dados
ou ambas mesmo?
Quanto a segunda a dúvida não é simples a ponto de um fórum te ajudar. Você teria que estudar uma das inúmeras maneiras de se fazer isso com Java (JDBC, JPA, Hibernate, etc)
Quanto a primeira:
Se trabalhar com a sessão a partir de um Map:
Object usuario = sessao.get("nomeDoAtributoDoUsuarioDaSessao");
Se trabalhar com a sessãoa partir de um HttpSession
Object usuario = sessao.getAttribute("nomeDoAtributoDoUsuarioDaSessao");
[quote=jyoshiriro]Sua dúvida é
pegar o usuário na sessão
ou
persistir[o usuário] em uma base de dados
ou ambas mesmo?
Quanto a segunda a dúvida não é simples a ponto de um fórum te ajudar. Você teria que estudar uma das inúmeras maneiras de se fazer isso com Java (JDBC, JPA, Hibernate, etc)
Quanto a primeira:
Se trabalhar com a sessão a partir de um Map:
Object usuario = sessao.get("nomeDoAtributoDoUsuarioDaSessao");
Se trabalhar com a sessãoa partir de um HttpSession
Object usuario = sessao.getAttribute("nomeDoAtributoDoUsuarioDaSessao");
Desculpe, mas a dúvida é simples.
1 - Para persistir esse usuário, você precisa que ele seja um objeto ou atributo de um objeto.
2 - Precisa ter alguma forma de acessar ao banco de dados (seja JDBC ou com alguma implementação de JPA como o Hibernate e o EclipseLink).
Considerando o Map, esta classe utiliza um key que referencia o valor.
Se tiver dúvidas sobre como utilizar JDBC ou JPA, por favor, crie novo tópico no fórum correspondente.