Resgatar objeto da sessão com struts2

2 respostas
leohunther
Fala gente boa estou começando no struts2. tenho um problema com minha sessão, abro a sessão assim:
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
import org.apache.struts2.interceptor.SessionAware;
import java.util.*;
public class ExemploAction extends ActionSupport implements SessionAware{

	private static final long serialVersionUID = 1L;
	private String nome;
	private String password;
	private Map<String, Object>session;
				
	public String execute(){
		if("administrador".trim().equals(nome) && "masterkey".trim().equals(password) ){
			Usuario usuario = new Usuario();
			usuario.setNome(nome);
			usuario.setSenha(password);
			@SuppressWarnings("unchecked")
			Map<String, Object> session = ActionContext.getContext().getSession();
			session.put("usuario",usuario);
			return "sucess";
			
		}//fim do if
		return "falha";
	}//fim do testaLogin
	
	public String getNome() {
        return nome;
    }
	
	public void setNome(String nome) {
        this.nome = nome;
    }

	
	public String getPassword(){
		return password;
	}
	
	public void setPassword(String password) {
                this.password = password;
    }
	
	@SuppressWarnings("unchecked")   
	public void setSession(Map session) {
	    this.session = session;
	}
	
	@SuppressWarnings("unchecked")
	public Map getSession() {
	    return session;
	}


	
	

	
	
}

Aí eu quero pegar o objeto que coloquei na sessão o "usuario"

<%
	HttpSession sessao = request.getSession();
	Usuario usuario = (Usuario)sessao.getAttribute("usuario");
%>
</head>
<body>
<h1 align="center">Sucesso!!!!</h1>
<h2 align="center"><%=usuario.getNome()%> </h2>
</body>
</html>
Mas dá erro justamente na linha
<h2 align="center"><%=usuario.getNome()%> </h2>
Bem, acho que devo estar resgatando o objeto da sessão de forma errada. Como faço pra resgatar o objeto? Grato por qualquer ajuda!

2 Respostas

leohunther

Pra quem visitar o tópico:
Fiz assim:
ExemploAction.java

package login;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
import org.apache.struts2.interceptor.SessionAware;
import java.util.*;
public class ExemploAction extends ActionSupport implements SessionAware{

	private static final long serialVersionUID = 1L;
	private String nome;
	private String password;
	private Map<String, Object>session;
				
	public String execute(){
		if("administrador".trim().equals(nome) && "masterkey".trim().equals(password) ){
			Usuario usuario = new Usuario();
			usuario.setNome(nome);
			usuario.setSenha(password);
			@SuppressWarnings("unchecked")
			Map<String, Object> session = ActionContext.getContext().getSession();
			session.put("usuario",usuario);
			return "sucess";
			
		}//fim do if
		return "falha";
	}//fim do testaLogin
	
	public String getNome() {
        return nome;
    }
	
	public void setNome(String nome) {
        this.nome = nome;
    }

	
	public String getPassword(){
		return password;
	}
	
	//Nome do método set deve ser: set+nome do campo sendo a primeira letra maiúscula
	public void setPassword(String password) {
        this.password = password;
    }
	
	@SuppressWarnings("unchecked")   
	public void setSession(Map session) {
	    this.session = session;
	}
	
	@SuppressWarnings("unchecked")
	public Map getSession() {
	    return session;
	}


	
	

	
	
}

Sucesso.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="login.Usuario"%>
<%@page import="com.opensymphony.xwork2.ActionContext;"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Teste Struts2</title>
<%
	ActionContext context = ActionContext.getContext();
	Usuario usuario = (Usuario)context.getSession().get("usuario");
%>
</head>
<body>
<h1 align="center">Sucesso!!!!</h1>
<h2 align="center"><%=usuario.getNome()%></h2>
</body>
</html>

Dessa forma deu certo.
Tópico fechado.

Rapapel

Tente pegar a HttpSession.

HttpSession session = ServletActionContext.getRequest().getSession();
Criado 14 de setembro de 2008
Ultima resposta 14 de set. de 2008
Respostas 2
Participantes 2