Author Archives: ant

1.3 – Ejemplo de Struts2, el hola mundo

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto

Configurar el proyecto para usar Struts 2

Al crear tu proyecto en NetBeans, se creará por default un archivo web.xml que tendremos que modificar para agregar el filtro mediante el cual se gestionarán las peticiones a Struts 2. Estas son las lineas que te permitirán hacer dar de alta el filtro:

<filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

Puedes descargar el archivo web.xml, pero trata de modifcarlo directamente en tu proyecto.

Otro archivo que será necesario crear es struts.xml, este archivo es uno de los mas importantes para el marco de trabajo de Struts 2. Lo debes crear en el paquete default del proyecto.

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <constant name="struts.enable.DynamicMethodInvocation" value="false" />
   <constant name="struts.devMode" value="false" />

   <package name="default" namespace="/" extends="struts-default">

   //Declaracion de Acciones

   </package>
</struts>

Como podras ver le aún le faltan algunas cosas al archivo, pero lo completaremos a continuación.

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto


1.4 – Ejemplo de Struts2, el hola mundo

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto

La vista de nuestro proyecto

Lo primero que haremos será modificar el archivo index.jsp

<%@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>Pagina de Inicio</h1>
       <s:a href="FormularioEntrada.action">Formulario Entrada</s:a>
   </body>
</html>

En este archivo jsp estamos incluyendo una linea que hace uso de las etiquetas de Struts2.

<s:a href="FormularioEntrada.action">Formulario Entrada</s:a>

Esta etiqueta hace referencia a nuestra primera acción y solo se encarga de llamar al formulario de login y password. Asi que también tendremos que modificar el archivo struts.xml para que haga correctamente esta petición.

Para descargar el archivo da click aqui: index.jsp

Entre las etiquetas del paquete default de struts.xml deberás insertar las siguientes lineas:

        <action name="FormularioEntrada">
           <result>/formularioEntrada.jsp</result>
       </action>

Como te habrás dado cuenta nos hace falta crear el jsp donde se encuentra el formulario de entrada o de login y password.

<%@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>
       <title>Ejemplos con Struts 2</title>
       <link href="<s:url value="/css/main.css"/>" rel="stylesheet" type="text/css"/>
   </head>
   <body>
       <s:form action="Entrar" namespace="/" method="POST">
           <tr>
               <td colspan="2">Introduzca su login y su password</td>
           </tr>
           <tr>
               <td colspan="2">
                   <s:actionerror />
                   <s:fielderror />
               </td>
           </tr>
           <s:textfield name="usr" label="Username"/>
           <s:password name="pas" label="Password"/>
           <s:submit value="Login" align="center"/>
       </s:form>
   </body>
</html>

Para descargar el archivo `a click aqui: formularioEntrada.jsp

Tambien necesitaremos nuestra página de bienvenida para el usuario que entra con sus datos correctos.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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>Pagina de Bienvenida</title>
   </head>
   <body>
       <h1>Bienvenido, has entrado al sistema!</h1>
   </body>
</html>

Para descargar el archivo da click aqui: paginaBienvenida.jsp

El archivo formularioEntrada.jsp contiene mas etiquetas de Struts2, la etiqueta form, hace petición a la accion Entrar, misma que deberemos declarar en nuestro archivo struts.xml nuevamente.

        <action name="Entrar" class="ejemplos.struts2.action.AccionEntrar">
           <result name="input">/formularioEntrada.jsp</result>
           <result name="error">/formularioEntrada.jsp</result>
           <result>/paginaBienvenida.jsp</result>
       </action>

Con estas declaraciones estamos diciendo al marco de trabajo cual es la clase que se encargará de atender la peticion Entrar y también estamos definiendo cual será el flujo de trabajo que deberá seguir en caso de que la petición sea exitosa o que suceda un error.

Con la creación de estas páginas nuestro archivo de configuración de Struts debe ser modificado nuevamente para que puedan ser llamadas desde una acción:

&ht;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <constant name="struts.enable.DynamicMethodInvocation" value="false" />
   <constant name="struts.devMode" value="false" />

   <package name="default" namespace="/" extends="struts-default">
       <action name="FormularioEntrada">
           <result>/formularioEntrada.jsp</result>
       </action>
       <action name="Entrar" class="ejemplos.struts2.action.AccionEntrar">
           <result name="input">/formularioEntrada.jsp</result>
           <result name="error">/formularioEntrada.jsp</result>
           <result>/paginaBienvenida.jsp</result>
       </action>
   </package&ct;
</struts>

Descarga struts.xml

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto


1.5 – Ejemplo de Struts2, el hola mundo

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto

La Capa de Negocios

Como habrás podido ver aún nos falta definir una parte importante en el proyecto y es la clase que se encargará de atender la petición del formulario de entrada. Para eso usaremos la siguiente clase:

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

public class AccionEntrar extends ActionSupport implements SessionAware{
   private Map session;
   private String mensajeError;
   private String usr;
   private String pas;

   public String execute() throws Exception {
      
       if (getUsr() != null && getPas() != null){    //Verificamos que los datos no sean nulos

           Usuario usuario = null;
           // Aqui haremos como que buscamos a nuestro usuario en la base de datos.
           // Si el login y password coinciden normalmente devolveriamos una instancia
           // de usuario con los datos de la cuenta
           // Esto normalmente no se haria en esta capa de codigo!
               if(getUsr().equals("user") && getPas().equals("123")){
                   usuario = new Usuario();
                   usuario.setId(1l);
                   usuario.setNombre("Invitado");
                   usuario.setLogin("user");
                   usuario.setPassword("123");
               }
           //Fin de busqueda

           if(usuario != null){    //Si el usuario se encuentra se agrega a la sesion
               session.put("usuario",usuario);
           }else{                    //Si no se encuentra se devuelve un error
               addActionError("No existe esta cuenta");
               setMensajeError("No existe esta cuenta");
               return ERROR;
           }
       } else {
           addActionError("Inserte datos correctos");
           setMensajeError("Inserte datos correctos");
           return ERROR;
       }
       return SUCCESS;
   }


   public Map getSession() {
       return session;
   }
   public void setSession(Map session) {
       this.session = session;
   }
   public String getUsr() {
       return usr;
   }
   public void setUsr(String usr) {
       this.usr = usr;
   }
   public String getPas() {
       return pas;
   }
   public void setPas(String pas) {
       this.pas = pas;
   }
   public void setMensajeError(String mensajeError) {
       this.mensajeError = mensajeError;
   }
}

descargar: AccionEntrar.java

Hay muchas cosas que aprender de la clase AccionEntrar, sin embargo por el momento solo comentaremos que, entre otras cosas, se encarga de manejar los parametros de entrada del formulario y si son validos los datos, de redirigir al usuario a una página de bienvenida o si no de regresarlo nuevamente al formulario de entrada.

Necesitamos una clase mas, que nos permitirá guardar y controlar la sesión en nuestro proyecto. Aunque en este ejemplo no tiene mayor efecto.

package ejemplos.struts2.beans;
public class Usuario {
   private Long id;
   private String nombre;
   private String login;
   private String password;

   public Long getId() {
       return id;
   }
   public void setId(Long id) {
       this.id = id;
   }
   public String getNombre() {
       return nombre;
   }
   public void setNombre(String nombre) {
       this.nombre = nombre;
   }
   public String getLogin() {
       return login;
   }
   public void setLogin(String login) {
       this.login = login;
   }
   public String getPassword() {
       return password;
   }
   public void setPassword(String password) {
       this.password = password;
   }
}

descargar: Usuario.java

La clase Usuario solo tiene sentido si consideras en un futuro el uso de sesiones para restringir el acceso a páginas privadas y que requieran autenticación. Por el momento no tiene mayor efecto.

No olvides depositar a cada clase en su paquete correspondiente.

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto


1.6 – Ejemplo de Struts2, el hola mundo

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto

Ejecutar el proyecto

Ya tenemos todo lo necesario para correr nuestro primer ejemplo, esta es una vista final de como quedarian nuestros archivos en el proyecto de NetBeans:


Ahora solo tienes que dar un click derecho en la carpeta de proyecto y darle otro click a la opción de correr o «Run»

En nuestro navegador se desplegará la siguiente pantalla


Si le damos a la liga para ir al formulario de entrada en nuestro navegador aparecerá lo siguiente:


Si se ponen datos incorrectos en el formulario de login, el framework se engargará de gestionar la petición y nos enviará a la pantalla de error gracias al flujo que hemos definido en el archivo de struts.xml y al manejo de los datos que hace nuestra clase AccionEntrar.java


Si se introducen los datos correctos, una pantalla de bienvenida se desplegará.


¡Listo! Ya tenemos nuestro primer ejemplo terminado.

Struts2 provee a los desarrolladores de herramientas muy poderosas para facilitar su trabajo, algunas de ellas son los interceptores, que te permiten hacer muchas cosas que normalmente se tenian que programar enteramente en Struts1, por ejemplo, el manejo de la session para usuarios con permisos o la carga de archivos desde el cliente. Los interceptores son una pieza fundamental en este marco de trabajo y haremos algunos ejemplos mas adelante.

Por el momento es todo, espero que este pequeño ejemplo les sirva para familiarizarse con Struts2. Hasta el siguiente post

1.1.- Requisitos
1.2.- Crear el proyecto en NetBeans
1.3.- Configurar el proyecto para usar Struts 2
1.4.- La vista de nuestro proyecto
1.5.- La capa de negocios
1.6.- Ejecutar el proyecto