Hola Mundo: Proyecto básico con Apache Struts

Estándar
hash_Example

Un ejemplo sencillo.

Ya en una entrada anterior describimos y realizamos los preparativos para un proyecto de aplicación Web usando Apache Struts, se preparo el servidor, proyecto y se agregaron las librerias básicas, pues ahora llego el momento de efectuar el obligatorio Hola Mundo.

El proyecto que efectuaremos es bastante sencillo, al acceder a la aplicación se nos solicitara que ingresemos nuestro nombre y al presionar el botón Login nos llevara a otra pagina donde se mostrara un saludo mas el nombre que agregamos pasado a mayusculas, un ejemplo trivial en efecto, pero el objectivo es mostrar como se compone una aplicación con Struts, los usos practivos llegaran mas adelante 😉

Antes de empezar con el código sera buena idea describir los componentes básicos de una aplicación realizada con Struts, estos son

  • Acciones: Son las llamadas que hace la pagina a los objectos Java que componen la aplicación, pueden ser tan simples como pasarse a otra pagina o tan complejos como generar un documento y descargarlo.
  • Paginas JSP: Paginas Web que se desplegaran en el navegador y presentaran los datos o servir para hacer las llamadas a las acciones
  • Objectos Java: Es donde realizaremos todas las consultas y procesamiento de datos, tomando ventaja de las facilidades que da el Java para esto
  • Métodos Getter y Setter: Via estos metodos enviaremos y extraeremos datos de los objectos Java

Cada uno de estos elementos, su función y uso se analizara con mas detalle en futuras entradas.

Antes de comenzar me gustaria agradecer a Mkyong.com ya que el ejemplo que presentare esta basado en el ejemplo de Aplicación Struts2 presentado en esta pagina: http://www.mkyong.com/struts2/struts-2-hello-world-example/ por lo que no puedo sino recomendar que le den una leida en algun momento que tengan.

Ahora si pasemos al ejemplo.

Primero crearemos una clase la cual contendrá y procesara los datos, en este caso el nombre de usuario:

package mx.hashSoft.ejemploStruts.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Clase para manejar la accion
 * @author David
 */
public class EjemploAction extends ActionSupport {
    private String nombre;

    /**
     * Toma el nombre que se halla ingresado y lo convierte a mayuscular
     * Este metodo se ejecutara automanticamente al llamar la accion correspondiente
     * @return Resultado de la accion
     */
    @Override
    public String execute(){
        nombre = nombre.toUpperCase();

        return "SUCCESS";
    }    

    /**
     * Nos regresa el valor de la cadena nombre
     * @return nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Nos permite establecer el valor de la cadena nombre
     * @param nombre valor que se desea establecer en nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
}

Notara que la clase es relativamente sencilla sin embargo hay que mencionar el metodo execute, este método es obligatorio que exista, de otro modo al llamar a esta clase la aplicación se caera.

Tambien hay que mencionar los metodos getter y setter, para cada campo de la clase que quiera que pueda accederse desde el JSP *debe* de tener tanto el getter como el setter.

Ahora vaya a Web Pages en su proyecto y cree la carpeta pages y los archivos bienvenido.jsp y login.jsp, como se ve en la figura.

paginas

Paginas JSP del proyecto

Y en dichos archivos ponga el siguiente contenido

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>Hola mundo con Struts 2</title>
    </head>
    <body>
<h1>Hola mundo con Struts 2</h1>
<s:form action="Bienvenido">
            <s:textfield name="nombre" label="Nombre" />
            <s:submit />
        </s:form>
    </body>
</html>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>Hola mundo con Struts 2</title>
    </head>
    <body>
<h1>Hola mundo con Struts 2</h1>
<h2>
            Hola
            <s:property value="nombre" /></h2>
</body>
</html>

Estos archivos son mayormente archivos html regulares, pero con algunas etiquetas no convencionales, especificamente las que comienzan con <s:, estas con las etiquetas del framework Apache Struts.

Ahora cree una carpeta classes en Web Pages/WEB-INF y en esta cree un archivo xml con el nombre struts.xml, como se observa en la figura

archivo_struts_xml

Ubicación del archivo struts.xml

El contenido del archivo struts.xml es el siguiente

<?xml version="1.0" encoding="UTF-8" ?>
<!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.devMode" value="true" />
    <constant name="struts.action.extension" value=""/>

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

        <action name="Login">
            <result>pages/login.jsp</result>
        </action>

        <action name="Bienvenido" class="mx.hashSoft.ejemploStruts.action.EjemploAction">
            <result name="SUCCESS">pages/bienvenido.jsp</result>
        </action>
    </package>

</struts>

En una entrada proxima detallaremos que hace cada campo, pero lo que ve en el archivo se resume basicamente en lo siguiente:

  • Declaramos las acciones de modo que cuando ponga en el navegador http://<url>/<accion > se llame a la accion correspondiente
  • Se indica que clase se debe instanciar para realizar la accion necesaria
  • Despues de llamar el metodo execute la clase nos regresara una cadena resultado, que se compara contra los resultados
  • Se redirecciona a la pagina cuyo resultado sea igual al que regreso el metodo execute
  • La pagina resultante obtendra datos via los getter del la clase que se instancio al llamar al evento y los desplegara

Si ejecutara la aplicación ahora le apareceria en pantalla un bonito mensaje de error como el que se ve en la figura.

struts_error

Error al ejecutar la aplicación

No se espante, lo que ha pasado asi es que se ha llamado a una acción que no existe, esto es mas que nada por la forma en que NetBeans ejecuta las aplicaciones Web, para corregir esto configuraremos el proyecto para que agrege /Login a la URL al ejecutar la aplicación, para esto acceda a las propiedades del proyecto con el boton derecho y acceda a la sección “Run”.

run

Propiedades del proyecto, seccion Run

En el campo “Relative URL” ingrese “/Login” y presione OK, hecho esto vuelva a correr el proyecto y obtendra una pantalla como la figura.

login

Entrada de la aplicación

Ingrese un nombre o cualquier palabra en el campo de texto y presione el boton, esto le dara como resultado un mensaje donde la palabra que escribo habra pasado a mayusculas, como muestra la figura.

saludo

Salida del programa

Si bien este ejemplo es muy sencillo cumple con el proposito de presentar los tres compoentes basicos que componen una aplicación realizada con Struts, las clases action para afectuar las operaciones, los archivos JSP para recibir y presentar los datos y las acciones en struts.xml para conectar estos dos.

Ya en entradas posteriores se presentara a mas detalle que función y que posibilidades presenta cada elemento, pero por el momento espero que esta entrada fuera de utilidad para comenzar, y nos vemos en la proxima entrada.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s