Está en la página 1de 17

Qu ofrece Autentia?

Somos su empresa de Soporte a Desarrollo Informtico


Ese apoyo que siempre quiso tener .
Desarrollo de componentes y proyectos a medida. Auditora de cdigo y recomendaciones de mejora. Arranque de proyectos basados en nuevas tecnologas. Curso de Formacin Direccin de Proyectos Informticos. Gestin eficaz del Tiempo. Arquitecturas de desarrollo Web: Web, J2EE, SOA, WebServices, BPM, etc. Java/ J2EE a todos los niveles: JSPs, Servlets, EJBs, JMS, JNI, etc. Anlisis y diseo orientado a objeto. UML y patrones de diseo. Buenas prcticas en el desarrollo de aplicaciones Tcnicas avanzadas: Lucene, Hibernate, Spring, JSF, Struts, etc.

Nuestra mejor referencia son los conocimientos que compartimos en nuestro web

www.adictosaltrabajo.com
Decenas de entidades cuentan ya con nosotros
Para ms informacin vistenos en www.autentia.com
Tel. 91 675 33 06 - info@autentia.com

Hosting patrocinado por


Inicio Quienes somos Tutoriales Formacin Colabora Comunidad Comic Charlas

Ms

NUEVO Quieres saber cunto ganas en relacin al mercado? pincha aqu...


Ver cursos que ofrece Autentia Descargar comics en PDF y alta resolucin

Catlogo de servicios Autentia (PDF 6,2MB)

En formato comic...

[NUEVO!] 2008-12-01

2008-11-17 2008-09-01

Web 2008-07-31 www.adictosaltrabajo.c

Estamos escribiendo un libro sobre la profesin informtica y estas vietas formarn parte de l. Puedes opinar en la seccion comic.

Tutorial desarrollado por


Carlos Prez Garca

Catlogo de servicios de Autentia


Descargar (6,2 MB) Descargar en versin comic (17 MB) AdictosAlTrabajo.com es el Web de difusin de conocimiento de Autentia.

ltimos tutoriales
2009-01-14

Desarrollo de aplicaciones Web con Struts 1

Creador de MobileTest, un complemento educativo para los profesores y sus alumnos. Consultor tecnolgico en el desarrollo de proyectos informticos. Ingeniero Tcnico Informtica * Puedes encontrarme en Autentia Somos expertos en Java/J2EE en

2009-01-07

Log4J: Cmo crear un log que trabaje hacia una Base de Datos.

2009-01-05

Catlogo de cursos

Introduccin a Google Chart API

2009-01-02

Descargar este documento en formato PDF: struts_appdemo.pdf

OSCache: Sistema de cach para aplicaciones Java

Fecha de creacin del tutorial: 2009-01-14

2008-12-31

Desarrollo de aplicaciones web con Struts 1


En este tutorial y bajo peticin de unas personas que me lo solicitaron, voy a intentar plasmar las ideas y los pasos a seguir para que para realizar una pequea aplicacin ejemplo que contemple las ideas y conceptos ms importantes en el desarrollo de aplicaciones Web con el FrameWork Struts (1.3.10). Cabe destacar que la versin 1.3.10, fue la ltima de las versiones de Struts 1, antes de que naciera el framework Struts 2, cuyo estudio queda pendiente para otro tutorial. Este tutorial no trata de presentar una extensa documentacin terica sobre este framework, sino ms bien, un ejemplo que incluya y explique los conceptos ms importantes: 1. 2. 3. 4. 5. Captura de pantalla de la apariencia grfica de la aplicacin a desarrollar. Pasos necesarios para crear un proyecto con Struts (sin usar Maven). Explicacin del archivo de configuracin de Struts. (/WEB-INF/struts-config.xml). JSP de ejemplo: TagLibs de Struts e invocacin de acciones (/index.jsp). Referencias.

Primeros pasos con Selenium IDE

2008-12-29

El componente outputChart de ICEfaces

2008-12-27

JMeter: Tests de rendimiento usando varios clientes distribuidos

2008-12-25

Captura de pantalla de la apariencia grfica de la aplicacin a desarrollar:


S, si, la aplicacin es muy fea pero resume los conceptos ms importantes (configuracin, flujo, internacionalizacin, validacin declariva, validacin programtica, etc.) con dependencias mnimas (2 acciones, 2 formularios, 1 Bean y 3 JSP).

Anlisis de rendimiento al usar un Pool de conexiones

2008-12-16

Utilizacin de grupos en Spring Security

2008-12-17

URLs amigables con UrlRewriteFilter

ltimas ofertas de empleo


2008-12-22

Otras - Mecnica SEVILLA.

2008-11-27

Comercial - Ventas ALICANTE.

2008-10-30

Comercial - Ventas BARCELONA.

2008-10-30

T. Informacin Analista / Programador BARCELONA.

2008-10-27

T. Informacin Analista / Programador CIUDAD REAL.

Puede descargarse la aplicacin en formato WAR (con el cdigo fuente) haciendo clic aqu.

Anuncios Google JSP Examples Jee Struts JSP Tutorials

Pasos necesarios para crear un proyecto con Struts (sin usar Maven).
1. Descargarnos la distribucin de Struts desde la pgina de descarga oficial. 2. Descomprimir el archivo y copiar todas las libreras (archivos jar) al directorio /WEB-INF/lib de tu proyecto web. 3. Dar de alta el servlet controlador de struts en el /WEB-INF/web.xml de tu proyecto. Haga clic aqu para verlo. Archivo /WEB-INF/web.xml
view plain print ?

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE webapp PUBLIC "//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "ht //java.sun.com/dtd/webapp_2_3.dtd"> <webapp id="WebApp_ID"> <displayname>StrutsExamples</displayname> <servlet> <servletname>action</servletname> <servletclass>org.apache.struts.action.ActionServlet</servletclass> <initparam> <paramname>config</paramname> <paramvalue>/WEBINF/strutsconfig.xml</paramvalue> </initparam> <loadonstartup>1</loadonstartup> </servlet> <servletmapping> <servletname>action</servletname> <urlpattern>*.do</urlpattern> </servletmapping> <welcomefilelist> <welcomefile>index.jsp</welcomefile> </welcomefilelist> </webapp>

Si observa, el servlet controlador de Struts (org.apache.struts.action.ActionServlet) tratar todas las peticiones cuya extensin en la URI sea .do (do hacer, aunque esto por supuesto se puede cambiar sin problemas).

Explicacin del archivo de configuracin de Struts (/WEBINF/struts-config.xml).


Struts se configura de forma declarativa mediante un archivo xml. En el indicamos bsicamente: El flujo de la aplicacion, es decir, las posibles acciones a realizar y los caminos a los que pueden conducir cada una de ellas. Que hacer en caso de errores. El archivo de internacionalizacin de nuestra aplicacin Web. Los tipos de datos de la informacin que es enviada y validada en el mtodo validate los formularios asocionados a cada accin. Archivo /WEB-INF/struts-config.xml
view plain print ?

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.

<?xml version="1.0" encoding="iso88591"?> <!DOCTYPE strutsconfig PUBLIC "//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/strutsconfig_1_3.dtd"> <strutsconfig> <formbeans> <formbean name="operandosForm" type="com.form.SumarForm"/> <formbean name="registroForm" type="org.apache.struts.validator.DynaValidatorForm" <formproperty name="login" type="java.lang.String"></form property> <formproperty name="email" type="java.lang.String"></form property> <formproperty name="age" type="java.lang.Byte"></form property> </formbean> </formbeans> <actionmappings> <action path="/sumar" type="com.action.SumarAction" name="operandosForm" scope="request" validate="true" cancellable="true" input="/index.jsp"> <forward name="ok" path="/index.jsp"/> <forward name="cancel" path="/WEBINF/jsp/cancel.jsp"/> </action> <action path="/registro" type="com.action.RegistroAction" name="registroForm" scope="session" validate="true" input="/index.jsp"> <forward name="ok" path="/WEBINF/jsp/registerOk.jsp"/> </action> </actionmappings> <messageresources parameter="ApplicationResources" null="false"/> <plugin className="org.apache.struts.validator.ValidatorPlugIn"> <setproperty property="pathnames" value="/org/apache/struts/validator/validatorrules.xml, /WEBINF /validation.xml" /> </plugin> </strutsconfig>
Lnea 06: Dentro del tag form-beans se definen los formularios que usa la aplicacin. Un formulario es un conjunto de datos que automticamente Struts nos inicializa con los datos que el usuario ha introduccido en el formulario HTML generado desde la JSP. Existen tres tipos principales de formularios: 1. org.apache.struts.action.ActionForm: Formulario que tiene un atributo, un getter y un setter por cada input del formulario asociada a la accin que lo usa. Este tipo de formularios, pueden ser validados de forma programtica. Observe el ActionForm del ejemplo haciendo clic aqu. 2. org.apache.struts.action.DynaActionForm: A diferencia de los ActionForm no necesitan que implementemos una clase Java con sus atributos y sus get y set para cada uno de sus atributos. todo se lee y escribe como un mapa (clave atributo/valor atributo), definindose previamente en el archivo struts-config.xml las propiedades que tendr (lneas 9-11). No permiten validaciones a no ser que nos escribamos una clase que herede de

DynaActionForm y reescribamos el mtodo validate (Por lo que no tiene mucho sentido usarlas si se necesita validacin). 3. org.apache.struts.validator.DynaValidatorForm: Es un DynaActionForm cuyas validaciones estn definidas de forma declarativa mediante un archivo xml. Haga clic aqui para ver el archivo de validaciones del ejemplo. Lnea 07: Definimos "operandosForm" un SumarForm (hereda de ActionForm) que ser usado por la accin "sumar" (lnea 18) de manera que antes de ejecutar la accin SumarAction se ejecutar el mtodo validate del formulario SumarForm y slo si este mtodo no detecta ningn error, ser ejecutada la accin. Lnea 08: Definimos "registroForm" un DynaValidatorForm que ser usado por la accin "registro" (lnea 27) de manera que antes de ejecutar la accin RegistroAction se ejecutarn las validaciones especificadas en el archivo /WEB-INF/validation.xml y slo si no se detecta ningn error, ser ejecutada la accin. Lnea 37: Definimos el nombre del archivo proporcionar la internacionalizacin de mensajes de por defecto. Puede definir archivos para lenguajes y paises especficos, ejemplos: ApplicationResources_es_ES: Para el lenguaje Espaol de Espaa. ApplicationResources_es: Para el lenguaje Espaol en general. ApplicationResources_es_MX: Para el lenguaje Espaol de Mxico. ApplicationResources_en_US: Para el lenguaje Ingls de Estados Unidos. ApplicationResources_en: Para el lenguaje Ingls en general. etc. Haga clic aqui para ver el archivo de internacionalizacin de mensajes de la aplicacin. Lnea 39: Habilitamos el plugin necesario para realizar validaciones de forma declarativa (sin necesidad de programar, con un archivo xml) gracias al commons Validator. Haga clic aqui para ver el archivo de validaciones del ejemplo.

ApplicationResources.properties
# ----------------------------------------------------------------------------# Archivo de internacionalizacin por defecto: ApplicationResources.properties # ----------------------------------------------------------------------------next.page=Siguiente index=Hola numeric=No es un nmero positivo field.name=Nombre field.email=Email field.age=Edad message.hello=Hola {0} errors.cancel=cancelada errors.header=<ul class="errorHeader"> errors.prefix=<li> errors.suffix=</li> errors.footer=</ul> errors.integer={0}: Debe ser un nmero errors.required=El campo {0} es requerido errors.range=El campo {0} debe estr entre {1} y {2} errors.email=El campo {0} no es un email vlido error.operando.negativo=El operando debe ser un nmero positivo error.operandos.negativos=Los operandos deben ser nmeros positivos

JSP de ejemplo: TagLibs de Struts e invocacin de acciones. (/index.jsp).


Dentro de la propia pgina JSP explico que voy haciendo en cada punto.

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.

<%@ page language="java" contentType="text/html; charset=ISO 88591" pageEncoding="ISO88591"%> <% Indicamos que vamos a usar las TagLibs de Struts %> <%@ taglib uri="http://struts.apache.org/tagsbean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tagshtml" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tagslogic" prefix="logic" %> <!DOCTYPE html PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd"> <html:html> <head> <meta httpequiv="ContentType" content="text/html; charset=ISO88591"> <title>Ejemplo de uso de TagLib de Struts</title> <style type="text/css"> * { margin: 1px; padding: 1px; } .borde { borderstyle:solid; bordercolor:#9999aa; border width:1px; } div.errores { color: red; fontweight: bold; } p.nota { color: #229922; } .errorHeader { backgroundcolor:red; color:white;} </style> </head> <body> <% Validacin usando un ActionForm %> <table> <tr style="verticalalign:top"> <td class="borde"> <% Imprimimos un mensaje internacionalizado con parmetros%> <p class="nota">Imprimimos un mensaje internacionalizado con parmetros <bean:message key="message.hello" arg0="Carlos Garca" /> <% Creamos un bean a nivel de session y luego creamos un variable de tipo String con <p class="nota">Creamos un bean a nivel de session y luego creamos<br <jsp:useBean id="usuario2" scope="session" class="com.entity.User" <jsp:setProperty name="usuario2" property="login" value="Pepito"/> <jsp:setProperty name="usuario2" property="email" value="email@de_pepito.com" <jsp:setProperty name="usuario2" property="age" value="24"/> <bean:define id="login" name="usuario2" property="login"/> <p><bean:write name="login" /></p> <% Guarda una Cookie en el Bean de nombre "sess". Imprimimos algunos valores % <p class="nota">Guarda una Cookie en el Bean de nombre "sess".</p> <bean:cookie id="sess" name="JSESSIONID" value="(Sin valor)"/> <bean:write name="sess" property="value" /> <bean:write name="sess" property="secure" /> <% Guarga la cabecera AcceptLanguage en una variable %> <p class="nota">Guarga la cabecera Accept Language en una variable</p> <bean:header id="var1" name="AcceptLanguage"/> <p><bean:write name="var1" /></p> <% Comparaciones entre valores %> <p class="nota">Comparaciones entre valores</p> <p><logic:equal name="sess" property="name" value="JSESSIONID" <p><logic:notEqual name="sess" property="name" value="JSESSIONID" <p><logic:greaterThan name="sess" property="maxAge" value="0">El tiempo de vida es mayor que 0 <% Comprobamos si tiene valor una variable %> <p class="nota">Comprobamos si tiene valor una variable</p> <p><logic:empty name="usuario2" property="login">La propiedad login est vacia <p><logic:notEmpty name="usuario2" property="login">La propiedad login NO est vacia <% Formateando la salida de informacin %> <p class="nota">Formateando la salida de informacin</p> <% pageContext.setAttribute("unDouble", new Double(124587.89)); pageContext.setAttribute("ahora", new java.util.Date(System.cu %> <bean:write name="unDouble" format=",000.00" /> <bean:write name="ahora" /MM/yyyy" />

/index.jsp (Continuacin)

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.

<% Consultamos si una cabecera tiene un determinado contenido (tambin vale para par <p class="nota">Consultamos si una cabecera tiene un determinado contenido:</p> <bean:header id="language" name="AcceptLanguage"/> <p><bean:write name="language"/></p> <logic:present header="AcceptLanguage" > <logic:match header="AcceptLanguage" value="es">Accept Language Match en cualquier posicion</logic:match> <logic:notMatch header="AcceptLanguage" value="es">Accept Language notMatch en cualquier posicion</logic:notMatch> </logic:present> <logic:notPresent header="AcceptLanguage">Accept Language no existe</logic:notPresent> <% Iteramos sobre los elementos de una lista %> <p class="nota">Iteramos sobre los elementos de una lista</p> <% java.util.ArrayList list = new java.util.ArrayList(); list.add("++++++++ Uno ++++++++"); list.add("++++++++ Dos ++++++++"); pageContext.setAttribute("lista", list); %> <ol> <logic:iterate id="element" name="lista" scope="page"> <li><bean:write name="element" /></li> </logic:iterate> </ol> </td>

/index.jsp (Continuacin)

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.

<td class="borde"> <% Nota: Los operandos deben ser nmeros positivos. (Validacin usando un <p class="nota"> Validacin usando un ActionForm. <br/>Nota: Los operandos deben ser nmeros positivos. </p> <html:form action="sumar" method="post" focus="operando1" > <br/>Operando 1:<html:text property="operando1"/> <html:errors property <br/>Operando 2:<html:text property="operando2"/> <html:errors property <table> <tr> <td><html:submit value="Sumar"/></td> <td><html:cancel value="Cancelar"/></td> </tr> </table> <logic:notEmpty name="operandosForm" property="resultado"> <p> <strong>El resultado es</strong>: <bean:write name="operandosForm" property="resultado"/> </p> </logic:notEmpty> </html:form> <% Validacin usando un DynaValidatorForm con validacin tanto en el servidor como e <p class="nota">Validacin usando un DynaValidatorForm. <br/>Validacin en servidor y cliente (javascript). <br/>Todos los campos son requeridos. <br/>El campo email debe tener un formto vlido. <br/>El campo edad debe ser un nmero entre 18 y 40 </p>

<% Indicamos que genere el cdigo JavaScript necesario para validar el formulario re (Las validaciones las optione del archivo validation.xml) %> <html:javascript formName="registroForm" /> <html:form action="registro" method="post" focus="login" onsubmit="return validateRegistroForm(t <br/>Login: <html:text property="login"/> <html:errors property="login" <br/>Email: <html:text property="email"/> <html:errors property="email" <br/>Edad: <html:text property="age"/> <html:errors property="age" <p><html:submit value="Enviar"/></p> </html:form> </td> </tr> </table> <% En caso de que existan errores, los mostramos %> <logic:messagesPresent> <div class="errores"> <html:errors/> </div> </logic:messagesPresent> </body> </html:html>

/WEB-INF/jsp/cancel.jsp
Si observa el archivo struts-config.xml ver que est JSP es mostrada cuando el usuario cancela la accin de sumar.
view plain print ?

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11.

<%@ page language="java" contentType="text/html; charset=ISO 88591" pageEncoding="ISO88591"%> <!DOCTYPE html PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd"> <html> <head> <meta httpequiv="ContentType" content="text/html; charset=ISO88591"> <title>Cancelada</title> </head> <body> Cancelada </body> </html>

/WEB-INF/jsp/registerOk.jsp
Si observa el archivo struts-config.xml ver que est JSP es mostrada cuando el usuario se registra

correctamente a travs de la accin de registro.


view plain print ?

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18.

<%@ page language="java" contentType="text/html; charset=ISO 88591" pageEncoding="ISO88591"%> <%@ taglib uri="http://struts.apache.org/tagsbean" prefix="bean" %> <!DOCTYPE html PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd"> <html> <head> <meta httpequiv="ContentType" content="text/html; charset=ISO88591"> <title>Pgina de confirmacin</title> </head> <body> <h1> Se ha registrado correctamente !!</h1> <h2>Datos de registro</h2> <ul> <li>Login: <bean:write name="registerUser" property="login"/></li> <li>Email: <bean:write name="registerUser" property="email"/></li> <li>Edad: <bean:write name="registerUser" property="age"/></li> </ul> </body> </html>

com.entity.User
view plain print ?

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.

package com.entity;

/** * Bean para el ejemplo de struts => representa un usuario * @author Carlos Garca. Autentia. * @see http://www.mobiletest.es */
public class User { private String login; private String email; private byte age;

// Cdigo del usuario // Direccin de correo // Edad

public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public byte getAge() { return age; } public void setAge(byte age) { this.age = age; } }

com.form.SumarForm
Observe que tiene un atributo y un get y set para cada uno de ellos. Adems estos deben de coincidir en nombre con los input del formulario HTML

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68.

package com.form; import org.apache.commons.validator.GenericValidator; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMessage;

/** * ActionForm usado para la accin "sumar" * @author Carlos Garca. Autentia. * @see http://www.mobiletest.es */
public class SumarForm extends org.apache.struts.action.ActionForm { private String operando1; private String operando2; private String resultado; public String getOperando1() { return operando1; } public void setOperando1(String operando1) { this.operando1 = operando1; } public String getOperando2() { return operando2; } public void setOperando2(String operando2) { this.operando2 = operando2; } public String getResultado() { return resultado; } public void setResultado(String resultado) { this.resultado = resultado; }

/* * Inicializamos los parmetros */


public void reset(org.apache.struts.action.ActionMapping mapping, javax.servlet.http.HttpServlet this.operando1 = ""; this.operando2 = ""; this.resultado = ""; }

/* * Validamamos los datos introducidos por el usuario */


public ActionErrors validate(org.apache.struts.action.ActionMapping mapping, javax.servlet. ActionErrors errors = new ActionErrors(); if (GenericValidator.isBlankOrNull(this.operando1) || (! GenericValidator.isInRange(Integer.parseInt( errors.add("operando1", new ActionMessage("error.operando.negativo")); } if (GenericValidator.isBlankOrNull(this.operando2) || (! GenericValidator.isInRange(Integer.parseInt( errors.add("operando2", new ActionMessage("error.operando.negativo")); } return errors; } }

com.action.SumarAction
En caso de que el mtodo validate de SumarForm no detecte errores se ejecutar esta accin y se redirigir a la pgina /index.jsp. Todo esto est definido en el action con el atributo path="sumar" dentro del archivo struts-config.xml

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.

package com.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.*;

/** * Action que suma dos numeros enteros positivos * @author Carlos Garca. Autentia. * @see http://www.mobiletest.es */
public class SumarAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req ActionForward forward = null; if (this.isCancelled(request)){ forward = mapping.findForward("cancel"); } else { com.form.SumarForm operationForm = (com.form.SumarForm) form; int operando1 = Integer.parseInt(operationForm.getOperando1()); int operando2 = Integer.parseInt(operationForm.getOperando2()); operationForm.setResultado(String.valueOf(operando1 + operando2)); forward = mapping.findForward("ok"); } return forward; } }

com.action.RegistroAction
Registra al usuario a partir de los datos introducidos en la JSP /index.jsp y redirige a la pgina /WEB-INF /jsp/registerOk.jsp donde sern mostrados los datos del usuario. Todo esto est definido en el action con el atributo path="registro" dentro del archivo struts-config.xml

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.

package com.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.*;

/** * Action que registra al usuario en el sistema * @author Carlos Garca. Autentia. * @see http://www.mobiletest.es */
public class RegistroAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req DynaActionForm registerForm = (DynaActionForm) form;

// Extraemos los datos del formulario


String String Byte login = (String) registerForm.get("login"); email = (String) registerForm.get("email"); edad = (Byte) registerForm.get("age");

///////////////////////////////////////////////////////////////////////////////////// // Realizariamos las acciones en los objetos de negocio (En este caso, nada) ///////////////////////////////////////////////////////////////////////////////////// // Configurariamos los objetos Request, Session, etc. que necesita la siguiente vista
com.entity.User user = new com.entity.User(); user.setLogin(login); user.setEmail(email); user.setAge(edad.byteValue()); request.setAttribute("registerUser", user);

// Mostramos la siguiente vista


return mapping.findForward("ok"); } }

/WEB-INF/validation.xml
En este archivo especificamos las validaciones de forma declarativa de los formularios form-beans definidos en el /WEB-INF/struts-config.xml Las validaciones a realizar son: Los campos login, email y edad son requeridos. El campo email debe tener un formato de email vlido. El campo edad debe ser un nmero comprendido entre 18 y 40.

view plain

print

01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.

<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE formvalidation PUBLIC "//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0/ "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <formvalidation> <formset> <form name="registroForm"> <field property="login" depends="required"> <arg key="field.name"/> </field> <field property="email" depends="required,email"> <arg key="field.email"/> </field> <field property="age" depends="required, integer, intRange"> <arg position="0" key="field.age"/> <arg position="1" name="intRange" key="${var:min}" resource="false"/> <arg position="2" name="intRange" key="${var:max}" resource="false"/> <var> <varname>min</varname> <varvalue>18</varvalue> </var> <var> <varname>max</varname> <varvalue>40</varvalue> </var> </field> </form> </formset> </formvalidation>

Referencias:
Gua de referencia de Struts (en Ingls) Gua de validacin con Struts (en Ingls) Un saludo. Carlos Garca. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

Qu te ha parecido el tutorial? Djanos saber tu opinin y vota!


Muy malo Malo Regular Bueno Muy bueno

Puedes opinar sobre este tutorial haciendo clic aqu. Puedes firmar en nuestro libro de visitas haciendo clic aqu. Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aqu. Aadir a favoritos Technorati.
Esta obra est licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Recuerda
Autentia te regala la mayora del conocimiento aqu compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseo ... y muchas otras cosas.

Nos vas a tener en cuenta cuando necesites consultora o formacin en tu empresa?, Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?
Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ... Autentia = Soporte a Desarrollo & Formacin. info@autentia.com

Servicio de notificaciones:
Si deseas que te enviemos un correo electrnico cuando introduzcamos nuevos tutoriales. Formulario de subcripcin a novedades: E-mail

Tutoriales recomendados
Nombre Integracin de Spring con el envo de emails: tcnicas avanzadas (II) Resumen Tercer y ltimo tutorial de la serie sobre envo de email a travs del soporte que proporciona Spring. Veremos cmo generar el contenido del mensaje, de forma dinmica, mediante plantillas de Velocity En este sencillo tutorial vamos a ver como podemos arrancar o parar el Registry programticamente, es decir lo arrancaremos y pararemos desde el propio programa Java. Os mostramos las particularidades de uso y configuracin de Struts para trabajar con SSL Os mostramos los pasos necesarios para empezar a utilizar JSF (Java Server Faces) y su comparacin / relacin con Struts En adictosaltrabajo os hemos ido presentando diversos plugins para Eclipse. Esta vez le toca el turno a SpringIDE, un plugin que os ayudar a desarrollar aplicaciones que utilicen Spring. Os mostramos con un ejemplo como extender los mecanismos de validacin en Struts, utilizando el framework Commons Validator Fecha Visitas Valoracin pdf

2008-12-09

505

pdf

Como crear y destruir programticamente un RMI Registry

2008-02-07

1394

pdf

Activar el soporte SSL en Struts

2005-12-06 10910

pdf

JSF y comparativa con Struts

2005-09-08 33343

pdf

SpringIDE, plugin de Spring para Eclipse

2008-01-19

5553

pdf

Extender la validacin en Struts

2006-02-17 13954

pdf

Anlisis de rendimiento Anlisis de rendimiento de usar o no al usar un Pool de un pool de conexiones a bases de datos en nuestras aplicaciones conexiones URLs amigables con UrlRewriteFilter Anlisis de un filtro a nivel de aplicacin web que permite la sobreescritura de URLs para la construccin de URLs amigables En este tutoral queremos mostraros como dividir el struts-config.xml en dos o ms ficheros, pero sin usar la capacidad de mdulos que tiene struts y como generar informes con la ayuda de Jasper Report con un contenido diferente dependiendo del idioma del Struts Flow es un mdulo de extensin del conocido framework Struts, que facilita la implementacin del flujo de pginas de una aplicacin web

2008-12-25

519

pdf

2008-12-17

502

pdf

Mltiples strutsconfig.xml e internacionalizacin de Jasper Report

2007-03-19 13784

pdf

Introduccin a Struts Flow

2006-01-02

8770

pdf

Nota:
Los tutoriales mostrados en este Web tienen como objetivo la difusin del conocimiento. Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores. En algn caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueos. Si algn afectado desea que incorporemos alguna resea especfica, no tiene ms que solicitarlo. Si alguien encuentra algn problema con la informacin publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolucin.

Anuncios Google

HTML Tags

Tomcat JSP

JSP Class

Academia JSP Struts

XML

Copyright 2003-2009 All Rights Reserved | Texto legal y condiciones de uso | Banners | Powered by Autentia

También podría gustarte