Dúvida: Struts 2

6 respostas
Marcio_Nogueira

como pegar um usuario na sessão e armazenar em um atributo no struts 2?

6 Respostas

maior_abandonado

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.

L

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();
jyoshiriro

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();
Marcio_Nogueira

Tenho que pegar o usário na sessão e persistir em uma base de dados, como posso implementar isso?

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");
drsmachado

[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.

Criado 13 de setembro de 2011
Ultima resposta 13 de set. de 2011
Respostas 6
Participantes 5