Tag : Struts2 – 2.3.- Manejo de la Sesión

2.3 – Manejo de Sesión en Struts2

2.1.- Primeros Pasos
2.2.- La configuración de struts.xml
2.3.- La clase Action que desplegará la lista
2.4.- El Interceptor y la sesión

La clase Action que desplegará la lista

Nuestra clase Action será algo como esto:

package ejemplos.struts2.action;
import ejemplos.struts2.beans.Usuario;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.SessionAware;
import ejemplos.struts2.utilidades.UsuarioHabilitado;

public class AccionDesplegarLista extends ActionSupport implements SessionAware,UsuarioHabilitado{
  private Map session;
  private Usuario usuario;
  private String mensajeError;
  private List miLista;

  public String execute() throws Exception {
      llenarArreglo();
      return SUCCESS;
  }

  public void llenarArreglo(){
      miLista = new ArrayList();
      Usuario usuario1 = new Usuario();
      Usuario usuario2 = new Usuario();
      Usuario usuario3 = new Usuario();
      Usuario usuario4 = new Usuario();
      usuario1.setNombre("Fulano de tal 1");
      usuario2.setNombre("Fulano de tal 2");
      usuario3.setNombre("Fulano de tal 3");
      usuario4.setNombre("Fulano de tal 4");
      miLista.add(usuario1);
      miLista.add(usuario2);
      miLista.add(usuario3);
      miLista.add(usuario4);
  }

  public List getMiLista(){
      return miLista;
  }

  public Map getSession() {
      return session;
  }

  public void setSession(Map session) {
      this.session = session;
  }

  public void setUsuario(Usuario usuario){
      this.usuario = usuario;
  }

  public Usuario getUsuario(){
      return usuario;
  }

  public void setMensajeError(String mensajeError) {
      this.mensajeError = mensajeError;
  }
}

Para descargar AccionDesplegarLista.java

Hay varias cosas que se deben notar en esta clase, la primera de ellas es que aunque tenemos declarada una variable de sesión, no verificamos si es nula o no, simplemente la usamos, mas adelante veremos porque.

    usuario = (Usuario)session.get("usuario");

No hacemos ninguna validación sobre si existe o no sesión y por lo tanto, tampoco verificamos si hay una instancia de “usuario” referenciada en la sesion. Será el interceptor el que se encargue de hacer la validación. En esta clase simplemente llenamos un arreglo con los datos de nuestra lista.

    public String execute() throws Exception {
      usuario = (Usuario)session.get("usuario");
      llenarArreglo();
      return SUCCESS;
  }

  public void llenarArreglo(){
      miLista = new ArrayList();
      Usuario usuario1 = new Usuario();
      Usuario usuario2 = new Usuario();
      Usuario usuario3 = new Usuario();
      Usuario usuario4 = new Usuario();
      usuario1.setNombre("Fulano de tal 1");
      usuario2.setNombre("Fulano de tal 2");
      usuario3.setNombre("Fulano de tal 3");
      usuario4.setNombre("Fulano de tal 4");
      miLista.add(usuario1);
      miLista.add(usuario2);
      miLista.add(usuario3);
      miLista.add(usuario4);
  }

Antes de ver como es el interceptor, mostraremos como debe quedar el jsp que se encarga de desplegar los datos.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Ejemplos con Struts 2</title>
  </head>
  <body>
      <h1>Lista de usuarios del sistema</h1>
      Usuario:<s:property value="usuario.nombre" /><br>
      <s:iterator value="miLista">
          <s:property value="nombre" /><br>
      </s:iterator>
  </body>
</html>

Para descargar desplegarLista.jsp

El jsp es muy sencillo, pero debes notar que estamos haciendo uso de dos de las instancias a las que hacemos referencia o creamos en nuestra clase AccionDesplegarLista, y son:

usuario.nombre

miLista

Te preguntarás como llegarán hasta ahí esos datos cuando se despliegue el jsp, no te preocupes el framework se encargará de “llenar” tu jsp con los valores correctos siempre y cuando estén declarados con el mismo nombre en la clase AccionDesplegarLista.

2.1.- Primeros Pasos
2.2.- La configuración de struts.xml
2.3.- La clase Action que desplegará la lista
2.4.- El Interceptor y la sesión