4.4 Tutorial de JSP 2.0, JSTL y Apache Struts

Tamaño: px
Comenzar la demostración a partir de la página:

Download "4.4 Tutorial de JSP 2.0, JSTL y Apache Struts"

Transcripción

1 4.4 Tutorial de JSP 2.0, JSTL y Apache Struts

2 JSP 2.0 (1) Qué añade JSP 2.0 frente a JSP 1.x? Lenguaje de expresiones Anteriormente sólo estaba disponible en JSTL Documentos JSP Páginas JSP en sintaxis XML JSP 1.2 también permitía escribir documentos JSP, pero de una manera más incómoda Implementar tags a medida utilizando la propia tecnología JSP Se implementan en páginas JSP Más sencillo que el API de extensión de tags (javax.servlet.jsp.tagext), pero menos potente Útil para tags orientados a presentación, para tags que hagan uso de librerías existentes y para desarrolladores de páginas JSP que no dispongan de conocimientos de Java

3 JSP 2.0 (y 2) Compatibilidad con JSP 1.x Un contenedor de JSP 2.0 tiene que poder ejecutar aplicaciones con sintaxis JSP 1.x Es posible migrar una aplicación JSP 1.x a sintaxis JSP 2.0 página a página En este apartado, y en los dos siguientes, se ilustran la sintaxis de los documentos JSP y el lenguaje de expresiones

4 Lenguaje de expresiones (1) En JSP 1.x si se desea dar valor a un atributo de un tag, es preciso usar una expresión <%=... %> Ejemplo <jsp:usebean id="shoppingcart" scope="session" class="org.acme.shoppingcart"/> <xxx:if test="<%= shoppingcart.getnumberofproducts() > 0 %>">... </xxx:if> JSP 2.0 proporciona un lenguaje de expresiones para facilitar su construcción Ejemplo <xxx:if test="${sessionscope.shoppingcart.numberofproducts > 0}">... </xxx:if>

5 Lenguaje de expresiones (2) Expresiones y literales Las expresiones tienen que ir rodeadas por ${ y }. Cualquier valor que no empiece por ${, se considera un literal Los literales que incluyen el símbolo ${, han de escaparlo rodeándolo de ${' y '} Ejemplo: <xxx:atag att="this literal includes ${'${'} character"/> Acceso a atributos de objetos Java en expresiones Se puede acceder a las propiedades de un JavaBean, y a objetos de un Map, List o vector

6 Lenguaje de expresiones (3) Acceso a atributos de objetos Java en expresiones (cont) Ejemplos ${user.firstname} = user.getfirstname() ${user.address.city} = user.getaddress().getcity() ${user.preferencesmap["shipping"]} = user.getpreferencesmap().get("shipping") ${user.preferenceslist[0]} = user.getpreferenceslist().get(0) Unifica el tratamiento de los operadores. y [] ${user.firstname} es equivalente a ${user["firstname"]} ${user.preferencesmap["shipping"]} es equivalente a ${user.preferencesmap.shipping} Para determinados casos, es preciso usar el operador [] ${user.preferencesmap["book.fiction"]} es equivalente a user.getpreferencesmap().get("book.fiction") ${user.preferencesmap[product.category]} es equivalente a user.getpreferencesmap().get(product.getcategory())

7 Objetos implícitos Entre otros Lenguaje de expresiones (4) pagescope (Map) requestscope (Map) sessionscope (Map) applicationscope (Map) param (Map que mapea nombres de parámetros univaluados a String) paramvalues (Map que mapea nombres de parámetros multivaluados a String[]) Cuando se usa un objeto sin especificar su ámbito (el objeto implícito en el que está contenido), se busca en los ámbitos page, request, session y application (en este orden) Ejemplo <xxx:if test="${shoppingcart.numberofproducts > 0}">... </xxx:if>

8 Lenguaje de expresiones (y 5) Literales Boolean (true y false) Numéricos Cadenas de caracteres (entre comillas simples o dobles) null Operadores Aritméticos: +,-, *, /, div, %, mod Lógicos: &&, and,, or,!, not Relacionales: ==, eq,!=, ne, <, lt, >, gt, <=, le, >=, ge empty: permite comprobar si un valor es null Ejemplos <xxx:if test="${!empty requestscope.previous}">... </xxx:if> <xxx:if test="${sessionscope.shoppingcart.numberofproducts > 0}">... </xxx:if> Se pueden usar paréntesis

9 JSTL (1) En el pasado existían numerosas librerías de tags JSP que permitían Iterar sobre colecciones Imprimir valores de propiedades de JavaBeans de forma segura Internacionalización de mensajes, números, fechas, etc. Generación de URLs aplicando URL rewriting Acceso a documentos XML Etc Por ello, se decidió estandarizar una librería general de tags, llamada JSTL (JSP Standard Tag Library)

10 JSTL (2) Tags en JSTL Core Control de flujo Soporte para URLs I18n (internacionalización) Soporte para internacionalización: establecimiento del Locale, generación de mensajes, formateo de números, cantidades monetarias, fechas, etc. XML Parsing de un documento XML Flujo de control para recorrer un documento XML (alternativa a XSL para casos sencillos) Tags para lanzar transformaciones XSL

11 JSTL (y 3) Tags en JSTL (cont) Acceso a BDs Funciones Permiten lanzar sentencias SQL a BDs relacionales Sólo deberían usarse para prototipado rápido o aplicaciones muy simples JSP 2.0 define un mecanismo para añadir funciones al lenguaje de expresiones JSTL 1.1 define un conjunto de funciones estándar length (aplicable a Collection y String), tolowercase, touppercase, substring, contains, etc En este apartado y en los dos siguientes se ilustran parte de los tags de los grupos Core e I18n

12 Qué es Struts? Framework OpenSource para implementar aplicaciones web con servlets y JSP según el patrón arquitectónico Model-View-Controller Proyecto de Apache Autor original: Craig R. McClanahan Funciona sobre cualquier servidor de aplicaciones web que implemente las APIs de servlets y JSP Ha ganado gran relevancia en el mundo de las aplicaciones web Java Versión 1.0 estable en Julio 2001 Posteriormente, surgieron otros framework MVC

13 Qué proporciona Struts? Un framework que da soporte para implementar las capas controlador y vista de una aplicación web Servlet Front Controller y clases relacionadas Sistema de plantillas Validación de parámetros Una librería de tags JSP muy completa

14 El patrón Front Controller en Struts (1) javax.servlet.http.httpservlet org.apache.struts.action.actionservlet # doget # dopost 0..n org.apache.struts.action.action + execute <<use>> <<instantiate>> org.apache.struts.action.actionform + reset + validate Action1... ActionN ActionForm1 ActionFormN... <<use>>

15 El patrón Front Controller en Struts (2) ActionServlet Servlet Front Controller En web.xml se especifica que todas las URLs que impliquen procesamiento (por GET o POST) vayan a este servlet Ej.: las URLs que termine en.do Clases ActionForm Si el programador lo desea, puede acceder a los parámetros de la request a través de un JavaBean que extiende ActionForm Especialmente útil en formularios Clase Action => método execute Accede a los parámetros de la request, directamente o vía el ActionForm correspondiente Realiza la operación invocando un método de un Session Facade del modelo o una fachada del controlador Deja el resultado devuelto por el método en la request o en la sesión Devuelve un objeto ActionForward, que representa la URL que hay que visualizar a continuación (sendredirect o forward)

16 El patrón Front Controller en Struts (3) Fichero de configuración Clases ActionForm que usa nuestra aplicación Nombre lógico (ej.: loginform) Nombre completo de la clase (ej.: es.udc.fbellas.j2ee.strutstutorial.portal3.http.view.actionforms.loginform) URLs que implican procesamiento URL de tipo path relativo a contexto (ej.: /Login) No llevan el.do final Nombre completo de la clase Action (ej.: es.udc.fbellas.j2ee.strutstutorial.portal3.http.controller.actions.loginaction) Nombre lógico de la clase ActionForm asociada

17 El patrón Front Controller en Struts (y 4) Fichero de configuración (cont) Definiciones de nombres lógicos de URLs Nombre que usan las acciones cuando devuelven un ActionForward (ej.: ShowMainPage) sendredirect o forward URL a invocar (ej.: /MainPage.jsp) Cuando el servlet ActionServlet arranca (init), lee el fichero de configuración Crea una única instancia de cada clase Action No se crea una instancia de una clase Action por cada petición que se recibe Tienen que ser thread-safe Misma situación que cuando se trabaja con servlets

18 La librería de tags de Struts (1) Bean Imprimir el valor de las propiedades de JavaBeans de manera segura Soporte para internacionalización de mensajes No los usaremos, dado que JSTL ofrece una alternativa estándar Logic Control de flujo No los usaremos, dado que JSTL ofrece una alternativa estándar HTML Generación de HTML básico Campos de entrada en formularios Enlaces (con URL rewriting)

19 La librería de tags de Struts (y 2) Tiles Caso particular del patrón Composite View Sistema de plantillas para páginas JSP Reemplaza a Template El sistema de plantillas que se usaba con Struts 1.0

20 Arquitectura MVC con Struts Modelo Clases independientes de la vista y el controlador Controlador Conjunto de clases Action Interactúan con el modelo y seleccionan la siguiente vista (dejándole los datos en uno de los cuatro posibles ámbitos, normalmente request o session) Vista Conjunto de clases ActionForm Conjunto de páginas JSP No contienen código Java Sólo visualizan datos Usan acciones JSP para recuperar los valores a mostrar y formatearlos

21 Demo Portal-3 (1) Lanzar el navegador Acceder a Portal-3 main page

22 Demo Portal-3 (2) Clic en Login Clic en el botón Login

23 Demo Portal-3 (3) Terminar y lanzar el navegador dos días más tarde Clic en Logout Acceder a Portal-3 main page Portal-3 main page (Welcome to Portal-3)

24 Demo Portal-3 (4) Este ejemplo, al igual que los siguientes, usa XHTML 1.0 Estricto y CSS 2.0 XHTML CSS Versión XML de HTML (ej.: todos los tags tienen que cerrarse, los valores de los atributos tienen que entrecomillarse, tags en minúsculas, etc) El XHTML generado sólo contiene contenido estructurado El formato (fuentes, colores, posicionamiento, etc) se especifica en una hoja (fichero) de estilos CSS El aspecto gráfico de la aplicación puede cambiarse modificando la hoja CSS

25 Demo Portal-3 (y 5) CSS (cont) También puede ser interesante tener un conjunto de hojas CSS con distintos formatos para una misma aplicación web Visualización en ordenador de sobremesa Visualización en PDA (ej.: no muestra o resume cabecera, sidebar y pié de página) Printer-friendly pages Etc Se procura huir del uso de tablas, excepto para la presentación de datos que siempre han de visualizarse de manera tabular (ej.: las cuentas de un usuario en una aplicación bancaria) CSS tiene sus propios mecanismos de posicionamiento

26 Estructura de paquetes es.udc.fbellas.j2ee.util.struts.action es.udc.fbellas.j2ee.strutstutorial.portal3 http controller actions view actionforms messages model userfacade delegate exceptions

27 jar tvf StrutsTutorial.war (1) Index.jspx InternalError.jspx Login.jspx MainPage.jspx css/styles.css WEB-INF/Struts/struts-config.xml WEB-INF/lib/jstl.jar WEB-INF/lib/standard.jar WEB-INF/lib/antlr.jar WEB-INF/lib/commons-*.jar WEB-INF/lib/jakarta-oro.jar WEB-INF/lib/struts.jar WEB-INF/lib/StandardUtil.jar WEB-INF/lib/WebUtil.jar

28 jar tvf StrutsTutorial.war (y 2) WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/http/ controller/actions/loginaction.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/http/ controller/actions/loginmanager.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/http/ controller/actions/logoutaction.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/http/ controller/actions/mainpageaction.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/http/view/ actionforms/loginform.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/model/ userfacade/delegate/userfacadedelegate.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/model/ userfacade/exceptions/incorrectpasswordexception.class WEB-INF/classes/es/udc/fbellas/j2ee/strutstutorial/portal3/http/view/ messages/messages.properties WEB-INF/web.xml

29 Comentarios (1) Documentos JSP Existen varios métodos para especificar que una página JSP es un documento JSP Quizás la manera más natural consiste en usar un descriptor de la aplicación web conforme a Servlet 2.4 (como ya hicimos en anteriores apartados) y usar jspx como extensión de las páginas JSP que sean documentos JSP WEB-INF/Struts struts-config.xml: configuración de Struts para la aplicación del tutorial

30 Comentarios (y 2) WEB-INF/lib struts.jar, commons-*.jar: Struts standard.jar, jstl.jar, jakarta-oro.jar, antlr.jar: Jakarta Standard TagLibs (implementación OpenSource de JSTL) StandardUtil.jar y WebUtil.jar: subsistema Util de J2EE-Examples WEB-INF/classes/es/.../Messages.properties Internacionalización de mensajes

31 WEB-INF/web.xml (1) <?xml version="1.0" encoding="iso "?> <web-app xmlns=" xmlns:xsi=" xsi:schemalocation=" version="2.4"> <distributable/> <!-- =============== Standard TagLibs configuration ============= --> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationcontext </param-name> <param-value>es.udc.fbellas.j2ee.strutstutorial.portal3.http. view.messages.messages</param-value> </context-param>

32 WEB-INF/web.xml (2) <!-- ================= Front controller configuration =========== --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.actionservlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/web-inf/struts/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>

33 WEB-INF/web.xml (y 3) <!-- ================ Servlet mapping =========================== --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- ======================== Session =========================== --> <session-config> <session-timeout>30</session-timeout> </session-config> <!-- ==================== Welcome page ========================== --> <welcome-file-list> <welcome-file>index.jspx</welcome-file> </welcome-file-list> </web-app>

34 Comentarios (1) context-param Permite definir un parámetro de configuración global a toda la aplicación web Accesible vía Servlet.getServletConfig().getServletContext ().getinitparameter() En el ejemplo se utiliza para dar valor al parámetro de configuración javax.servlet.jsp.jstl.fmt.localizationcontext Lo usan los tags de internacionalización de mensajes de JSTL Nombre del fichero de mensajes (sin sufijo.properties) Debe estar debajo de WEB-INF/classes y usar un nombre consistente con su ubicación (como si de una clase se tratase)

35 Comentarios (2) Servlet org.apache.struts.actions.actionservlet Aparecen dos tags que no hemos usado hasta ahora init-param Permite definir un parámetro de configuración específico al servlet y su valor Accesible vía Servlet.getServletConfig().getInitParameter() load-on-startup Indica que el servlet se debería cargar cuando el servidor arranque la aplicación web El valor (opcional) indica el orden relativo de carga con respecto a otros servlets (cuanto menor sea el valor, antes se carga)

36 Comentarios (y 3) Servlet org.apache.struts.actions.actionservlet Parámetros de inicialización config Path de tipo relativo a contexto del fichero de configuración de Struts detail Nivel de detalle en los mensajes de depuración durante el parsing de los ficheros de configuración debug Nivel de detalle en los mensajes de depuración de ActionServlet

37 WEB-INF/Struts/struts-config.xml (1) <?xml version="1.0" encoding="iso "?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" " <struts-config> <!-- ============ Form Bean Definitions =========================== --> <form-beans> <form-bean name="loginform" type="es.udc.fbellas.j2ee.strutstutorial.portal3.http.view. actionforms.loginform"/> </form-beans>

38 WEB-INF/Struts/struts-config.xml (2) <!-- ============ Global Forward Definitions ====================== --> <global-forwards> <forward name="mainpage" path="/mainpage.do" redirect="true"/> <forward name="internalerror" path="/internalerror.jspx" redirect="true"/> </global-forwards> <!-- ============ Action Mapping Definitions ====================== --> <action-mappings> <action path="/mainpage" type="es.udc.fbellas.j2ee.strutstutorial.portal3.http. controller.actions.mainpageaction"> <forward name="showmainpage" path="/mainpage.jspx"/> </action> <action path="/login" type="es.udc.fbellas.j2ee.strutstutorial.portal3.http. controller.actions.loginaction" name="loginform" scope="request" input="/login.jspx" validate="true"/>

39 WEB-INF/Struts/struts-config.xml (y 3) <action path="/logout" type="es.udc.fbellas.j2ee.strutstutorial.portal3.http. controller.actions.logoutaction"/> <!-- ============================================================== The standard administrative actions available with Struts. These must be either omitted or protected by security in a real application deployment. ================================================================ --> <action path="/admin/addformbean" type="org.apache.struts.actions.addformbeanaction"/>... </action-mappings> <!-- ============ Message Resources Definitions =================== --> <message-resources parameter="es.udc.fbellas.j2ee.strutstutorial. portal3.http.view.messages.messages"/> </struts-config>

40 Comentarios (1) En el fichero struts-config.xml se usa <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" " El especificador PUBLIC permite especificar un identificador y una URI para la ubicación del DTD El procesador del documento XML (en este caso, Struts) puede usar el identificador para recuperar un DTD localmente almacenado, y en consecuencia, no usar la URI especificada struts.jar incluye el DTD

41 Comentarios (2) Definiciones de nombres lógicos de URLs Se usan en la implementación de las acciones para devolver un ActionForward y en algunas acciones JSP Se especifican con forward Atributos documentados en JavaDoc de org.apache.struts.action.actionforward name: nombre lógico path: path relativo a contexto de la URL a la que se invocará redirect: true (sendredirect) o false (forward) false por defecto Pueden ser globales (global-forwards) o particulares a una acción (action)

42 Comentarios (3) action Atributos documentados en JavaDoc de org.apache.struts.config.actionconfig type: nombre completo de la clase Action path: URL (path relativo a contexto) que provocará la invocación de la acción Se especifican sin el sufijo.do! name: nombre del ActionForm (definido por form-bean) que captura los parámetros de la invocación scope: ámbito (request o session) del ActionForm En general, request input: path relativo a contexto del formulario de entrada validate: true si el Front Controller tiene que llamar al método validate del ActionForm En general, true

43 Comentarios (y 4) message-resources Especifica la ubicación del fichero de mensajes Actualmente Struts no está integrado con JSTL

44 WEB-INF/classes/es/.../Messages.properties (1) Buttons.login=Login ErrorMessages.loginName.notFound=Login name not found ErrorMessages.mandatoryField=Mandatory field ErrorMessages.password.incorrect=Incorrect password ErrorMessages.retry=Please, check if the operation has been performed, \ and retry if necessary errors.footer=</span> errors.header=<span class="errormessage"> InternalError.title=Internal error

45 WEB-INF/classes/es/.../Messages.properties (y 2) Login.loginName=Login name Login.password=Password Login.rememberMyPassword=Remember my password (cookies must be enabled) Login.title=Portal-3 login form MainPage.hello=Hello MainPage.login=Login MainPage.logout=Logout MainPage.title=Portal-3 main page MainPage.welcome=Welcome to Portal-3

46 Comentarios (1) Asocia pares <identificadormensaje, mensaje> Convenios de nombrado para los identificadores de mensajes Ordenados alfabéticamente errors.footer y errors.header son dos identificadores especiales que entiende la acción html:errors de Struts Messages.properties Mensajes en el lenguaje por defecto del servidor Messages_xx.properties Mensajes en el lenguaje cuyo código ISO es xx Códigos ISO en en: Inglés es: Español gl: Gallego Etc

47 Comentarios (y 2) Messages.properties sólo resuelve un aspecto particular de la internacionalización de aplicaciones: impresión de mensajes en distintos idiomas En una aplicación más compleja puede ser necesario tener trozos de páginas en distintos idiomas (con gran cantidad de texto estático) y seleccionarlos o incluirlos dinámicamente en función del idioma Otros aspectos en internacionalización Formatear y tratar fechas, horas, números, cantidades monetarias JSTL proporciona tags para ello También paquetes java.text y java.util Puede requerir tablas para almacenar contenido en distintos idiomas Ej.: un servicio de noticias

48 es.udc.fbellas.j2ee.strutstutorial.portal3.model.userfacade.delegate UserFac adedelegate + UserFacadeDelegate() + login(loginname : String, password : String, pas swordisencrypted : boolean) : void Simula la fachada del modelo que proporciona las operaciones relativas a la interacción del usuario con el portal

49 es.udc.fbellas.j2ee.util.struts.action Action (from action) DefaultAction + execute(actionmapping, actionform, request, response) : ActionForward # doexecute(actionmapping, actionform, request, response) : ActionForward # dooninternalerror(actionmapping, actionform, request, response, internalerrorexception) : ActionForw... P ropertyvalidator

50 Comentarios DefaultAction Problema En general, las clases Action invocarán una operación sobre un Business Delegate del modelo o una fachada del controlador, que puede lanzar InternalErrorException Es necesario (1) capturarla, (2) imprimirla en un log (para depuración) e (3) ir a una página que indique error interno Las clases Action derivarán de DefaultAction Implementa execute (Template Method) en términos de doexecute y dooninternalerror Las clases hijas implementan doexecute, que tiene la misma signatura que execute, pero puede lanzar adicionalmente InternalErrorException PropertyValidator Clase utilidad para validar campos de entrada comunes (double, long, String, etc.)

51 es.udc.fbellas.j2ee.util.struts.action.defaultaction (1) package es.udc.fbellas.j2ee.util.struts.action; import java.io.ioexception; import javax.servlet.servletcontext; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.servletexception; import org.apache.struts.action.action; import org.apache.struts.action.actionmapping; import org.apache.struts.action.actionform; import org.apache.struts.action.actionforward; import es.udc.fbellas.j2ee.util.exceptions.internalerrorexception;

52 es.udc.fbellas.j2ee.util.struts.action.defaultaction (2) public abstract class DefaultAction extends Action { public ActionForward execute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { } try { return doexecute(mapping, form, request, response); } catch (Exception e) {// Any exception thrown by "doexecute", // including instances of // "RuntimeException". return doonexception(mapping, form, request, response, e); } protected abstract ActionForward doexecute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, InternalErrorException;

53 es.udc.fbellas.j2ee.util.struts.action.defaultaction (y 3) protected ActionForward doonexception( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, Exception exception) throws IOException, ServletException { /* * Log error, even with debug level <= 0, because it is a * severe error. */ ServletContext servletcontext = servlet.getservletconfig().getservletcontext(); servletcontext.log(exception.getmessage(), exception); /* Redirect to input page. */ return mapping.findforward("internalerror"); } }

54 es.udc.fbellas.j2ee.util.struts.action.propertyvalidator (1) public final class PropertyValidator { private final static String INCORRECT_VALUE = "ErrorMessages.incorrectValue"; private final static String MANDATORY_FIELD = "ErrorMessages.mandatoryField"; private PropertyValidator() {} public final static long validatelong(actionerrors errors, String propertyname, String propertyvalue, boolean mandatory, long lowervalidlimit, long uppervalidlimit) { long propertyvalueaslong = 0; if (validatemandatory(errors, propertyname, propertyvalue, mandatory)) { boolean propertyvalueiscorrect = true;

55 es.udc.fbellas.j2ee.util.struts.action.propertyvalidator (2) try { propertyvalueaslong = new Long(propertyValue).longValue(); if ( (propertyvalueaslong < lowervalidlimit) (propertyvalueaslong > uppervalidlimit) ) { propertyvalueiscorrect = false; } } catch (NumberFormatException e) { propertyvalueiscorrect = false; } if (!propertyvalueiscorrect) { errors.add(propertyname, new ActionMessage(INCORRECT_VALUE)); } } return propertyvalueaslong; }

56 es.udc.fbellas.j2ee.util.struts.action.propertyvalidator (y 3) public final static boolean validatemandatory(actionerrors errors, String propertyname, String propertyvalue) { } if ((propertyvalue == null) (propertyvalue.length() == 0)) { errors.add(propertyname, new ActionMessage(MANDATORY_FIELD)); return false; } else { return true; } private final static boolean validatemandatory(actionerrors errors, String propertyname, String propertyvalue, boolean mandatory) { } if (mandatory) { return validatemandatory(errors, propertyname, propertyvalue); } else { return true; } } // Resto de métodos validatexxx => Análogos...

57 Comentarios org.apache.struts.action.actionmapping Permite acceder a los valores configurados en strutsconfig.xml para la acción en ejecución (inclusive a los forwards globales) org.apache.struts.action.actionerrors Juega el papel del mapa de errores que hemos empleado en apartados anteriores El mensaje de error es un org.apache.struts.action.actionmessage, que dispone de un constructor que permite especificar el identificador del mensaje de error (en Messages.properties) ActionMessage se introdujo en Struts 1.2, y reemplaza a ActionError org.apache.struts.action.actionforward Representa la siguiente URL a la que hay que ir El Front Controller lo invocará después de llamar al método execute sobre la acción

58 es.udc.fbellas.j2ee.strutstutorial.portal3.http.view.actionforms.loginform (1) public class LoginForm extends ActionForm { private String loginname; private String password; private boolean remembermypassword; public LoginForm() { reset(); } public String getloginname() { return loginname; } public void setloginname(string loginname) { this.loginname = loginname.trim(); }

59 es.udc.fbellas.j2ee.strutstutorial.portal3.http.view.actionforms.loginform (2) public String getpassword() { return password; } public void setpassword(string password) { this.password = password; } public boolean getremembermypassword() { return remembermypassword; } public void setremembermypassword(boolean remembermypassword) { this.remembermypassword = remembermypassword; }

60 es.udc.fbellas.j2ee.strutstutorial.portal3.http.view.actionforms.loginform (y 3) public void reset(actionmapping mapping, HttpServletRequest request) { reset(); } public ActionErrors validate(actionmapping mapping, HttpServletRequest request) { } ActionErrors errors = new ActionErrors(); PropertyValidator.validateMandatory(errors, "loginname", loginname); PropertyValidator.validateMandatory(errors, "password", password); return errors; private void reset() { loginname = null; password = null; remembermypassword = false; } }

61 Comentarios LoginForm Juega el mismo papel que la clase vista en el apartado 4.2 Hereda de org.apache.struts.action.actionform Generalmente interesa redefinir reset y validate reset El Front Controller lo llama antes de dar valor a las propiedades validate Permite validar las propiedades después de que el Front Controller les haya dado valores Sólo se invoca si se ha especificado validate="true" para la acción correspondiente en struts-config.xml Si devuelve un ActionErrors no vacío, el Front Controller (1) no invocará el método execute sobre la acción correspondiente, (2) insertará un atributo con los errores en la request, y (3) hará un forward a la URL que especifica el atributo input del action correspondiente en strutsconfig.xml (formulario de entrada)

62 es.udc.fbellas.j2ee.strutstutorial.portal3.http.controller.actions DefaultAc tion (from action) MainPageAction LoginAction LogoutAction <<use>> <<use>> <<use>> LoginManager <<us e>> UserFacadeDelegate (from delegate)

63 es.udc.fbellas.j2ee.strutstutorial.portal3.http.controller.actions.loginaction (1) public class LoginAction extends DefaultAction { public ActionForward doexecute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, InternalErrorException { /* Get data. */ LoginForm loginform = (LoginForm) form; String loginname = loginform.getloginname(); String password = loginform.getpassword(); boolean remembermypassword = loginform.getremembermypassword(); /* Do login. */ ActionMessages errors = new ActionMessages();

64 } es.udc.fbellas.j2ee.strutstutorial.portal3.http.controller.actions.loginaction (y 2) try { LoginManager.login(request, response, loginname, password, remembermypassword); } catch (InstanceNotFoundException e) { errors.add("loginname", new ActionMessage( "ErrorMessages.loginName.notFound")); } catch (IncorrectPasswordException e) { errors.add("password", new ActionMessage( "ErrorMessages.password.incorrect")); } /* Return ActionForward. */ if (errors.isempty()) { return mapping.findforward("mainpage"); } else { saveerrors(request, errors); return new ActionForward(mapping.getInput()); } }

65 Comentarios Las acciones utilizan el método saveerrors (heredado de org.struts.apache.action.action) para insertar un atributo con los errores en la request org.apache.struts.action.actionmessages Se introdujo en Struts 1.2 Similar a ActionErrors Existen dos versiones del método saveerrors, una que acepta ActionErrors ( deprecated ) y otra que acepta ActionMessages (el usado en el ejemplo)

A continuación en la figura D.1 se verá el código de una implementación del archivo struts-config.xml:

A continuación en la figura D.1 se verá el código de una implementación del archivo struts-config.xml: Apéndice D Configuración de Struts [McClanahan, 2002] Configuración de Struts Antes de poder construir una aplicación en Struts es necesario realizar varias configuraciones. Estas configuraciones incluyen

Más detalles

DESARROLLO DE APLICACIONES WEB Introducción a Struts Framework

DESARROLLO DE APLICACIONES WEB Introducción a Struts Framework DESARROLLO DE APLICACIONES WEB Introducción a Struts Framework 1. Objetivo: Introducir los conceptos relacionados con la construcción de aplicaciones Web Java basadas en el Framework Web MVC2 Struts. 2.

Más detalles

Lección 1 Introducción a Struts. www.globalmentoring.com.mx uacosta@globalmentoring.com.mx

Lección 1 Introducción a Struts. www.globalmentoring.com.mx uacosta@globalmentoring.com.mx Lección 1 Introducción a Struts www.globalmentoring.com.mx uacosta@globalmentoring.com.mx Lección 1. Introducción a Struts Lección 1. Introducción a Struts Un framework es un conjunto de clases que nos

Más detalles

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts 2. 2010-2011 Depto. Ciencia de la Computación e IA

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts 2. 2010-2011 Depto. Ciencia de la Computación e IA Struts Sesión 4: Introducción a Struts 2 Indice Motivación De Struts 1.x a Struts 2 Acciones Actionforms Taglibs Internacionalización Validación Conceptos nuevos en Struts 2 2 Por qué era necesario Struts

Más detalles

Tema 4: Tecnologías Web Java

Tema 4: Tecnologías Web Java Tema 4: Tecnologías Web Java Introducción Aplicación web Aplicación que corre en al menos un servidor y a la que el usuario accede desde un cliente de propósito general (ej.: navegador en un PC, teléfono

Más detalles

Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages)

Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages) 12/13 Servlets y JSPs (Java Server Pages) Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza (raqueltl@unizar.es) " Guión Introducción Servlets Introducción Clases e interfaces del

Más detalles

Requisitos. Universidad ORT Arquitectura de Software

Requisitos. Universidad ORT Arquitectura de Software Requisitos Java Development Kit (JDK) 1.5 o superior NetBeans IDE 6.5 o superior JBoss Application Server 4.2.x o 5.x.x Variable de entorno JAVA_HOME apuntando al directorio de instalación de la JDK 1

Más detalles

FUNCIONAMIENTO: FUNCIONALIDAD

FUNCIONAMIENTO: FUNCIONALIDAD STRUTS Qué Es? Es un framework que implementa el patrón de arquitectura MVC en Java. El patrón de arquitectura MVC (Model-View-Controller) es un patrón que define la organización independiente del Model

Más detalles

Departamento de Lenguajes y Sistemas Informáticos

Departamento de Lenguajes y Sistemas Informáticos Departamento de Lenguajes escuela técnica superior de ingeniería informática Grupo de Ingeniería a del Software Febrero 2007 Versión original: Autor (mes 200?) Última revisión: Autor (mes 200?); descripción

Más detalles

ISJu: Técnicas de Programación Cartilla Teórica-Práctica 2014. Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

ISJu: Técnicas de Programación Cartilla Teórica-Práctica 2014. Instalación del Eclipse IDE for Java EE Developers y el servidor Apache Tomcat Unidad 6: Servlets Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat" "Eclipse IDE for Java EE Developers" Para desarrollar aplicaciones que se ejecuten en un servidor web

Más detalles

Curso Desarrollo Java Web con JSP, Servlets y el MVC

Curso Desarrollo Java Web con JSP, Servlets y el MVC Curso Desarrollo Java Web con JSP, Servlets y el MVC Objetivos: En este curso práctico aprenderás a desarrollar páginas JSP bajo el modelo MVC. Entenderás con desarrollar aplicaciones Web en Java bajo

Más detalles

La vista: ActionForms y taglibs propias

La vista: ActionForms y taglibs propias La vista: ActionForms y taglibs propias Índice 1 ActionForms..2 1.1 Introducción. 2 1.2 El ciclo de vida de un ActionForm.. 3 1.3 Cómo definir un ActionForm..3 1.4 Tipos de datos del ActionForm: conversión

Más detalles

Java Struts Framework. Juan Fco. Rodríguez Hervella

Java Struts Framework. Juan Fco. Rodríguez Hervella Java Struts Framework Juan Fco. Rodríguez Hervella Indice Introducción Struts Framework Ejemplo Conclusiones. Título 2 Introducción Entorno para la construcción de aplicaciones web. Basado en el patrón

Más detalles

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA DIPLOMATURA DESARROLLO DE APLICACIONES JAVA Contenidos MÓDULO UNO: Características del Lenguaje. OOP Reconocer las características del lenguaje Java y sus componentes. Distinguir la similitudes y diferencias

Más detalles

Introducción al desarrollo web (idesweb)

Introducción al desarrollo web (idesweb) Introducción al desarrollo web (idesweb) Práctica 8: PHP 2 (cookies y sesiones) 1. Objetivos Conocer el concepto de cookie y sus posibles usos. Aprender a utilizar las cookies con PHP. Conocer el concepto

Más detalles

Curso de JavaServer Faces

Curso de JavaServer Faces 1 Una JavaBean es una clase Java que sigue las siguientes convenciones: Constructor vacío Atributos de clase privados Por cada atributo, se crean los métodos getters y setters El Objetivo de los Managed

Más detalles

Sistemas de Información 12/13 Ejercicios Tecnologías Web

Sistemas de Información 12/13 Ejercicios Tecnologías Web 12/13 Ejercicios Tecnologías Web Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza (raqueltl@unizar.es) " Guión Introducción sesiones y cookies con Servlets Ejercicio 1: Preguntas

Más detalles

Configuración servidor Tomcat

Configuración servidor Tomcat Apuntes de J2EE Configuración servidor Tomcat Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta

Más detalles

Agosto. Un primer JSP. Guía rápida. [ h t t p : / / w w w. o p e n b o x e r. 2 6 0 m b. c o m / j a v a. p h p ]

Agosto. Un primer JSP. Guía rápida. [ h t t p : / / w w w. o p e n b o x e r. 2 6 0 m b. c o m / j a v a. p h p ] Agosto 09 Un primer JSP Guía rápida [ h t t p : / / w w w. o p e n b o x e r. 2 6 0 m b. c o m / j a v a. p h p ] Un Primer JSP Guía rápida Este documento te guiará por los primeros pasos para desarrollar

Más detalles

EXTENSIÓN DE UML PARA APLICACIONES WEB

EXTENSIÓN DE UML PARA APLICACIONES WEB EXTENSIÓN DE UML PARA APLICACIONES WEB 1. Descripción Esta extensión de UML define un conjunto de estereotipos, valores etiquetados y restricciones que nos permiten modelar aplicaciones web. Los estereotipos

Más detalles

Librería Estándar de Etiquetas JSP (JSTL JSP Standard Tag Library)

Librería Estándar de Etiquetas JSP (JSTL JSP Standard Tag Library) Librería Estándar de Etiquetas JSP (JSTL JSP Standard Tag Library) La Librería Estándar de Etiquetas JSP (JSTL) es una especificación complementaria que amplía el conjunto básico de etiquetas JSP. La especificación

Más detalles

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente. PLANTILLAS EN PHP El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de documentos HTML que se usan en el desarrollo de un sitio web. A lo largo de la navegación

Más detalles

Introducción (1) En una aplicación web, especialmente en Internet, los cambios a la interfaz gráfica son muy frecuentes

Introducción (1) En una aplicación web, especialmente en Internet, los cambios a la interfaz gráfica son muy frecuentes 4.2 Tutorial de JSP Introducción (1) Situación en el apartado anterior: el texto generado para el aspecto (vista) de la interfaz gráfica (HTML, WML, etc.) está mezclado con código Java No es posible usar

Más detalles

Struts. Índice. Copyright 2010-2011 Dept. Ciencia de la Computación e IA All rights reserved.

Struts. Índice. Copyright 2010-2011 Dept. Ciencia de la Computación e IA All rights reserved. Índice 1 Introducción a Struts: El controlador y las acciones 3 1.1 Introducción a Struts3 1.2 El controlador..5 1.3 Las acciones.5 1.4 Seguridad declarativa en Struts12 2 Ejercicios sesión 1 - Introducción

Más detalles

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de 2006. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de 2006. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de abril de 00 input, output En pascal input, output program holamundo (input, output); var nombre : String; begin

Más detalles

4. DESARROLLO WEB CON JAVA JSP & SERVLETS

4. DESARROLLO WEB CON JAVA JSP & SERVLETS 4. DESARROLLO WEB CON JAVA JSP & SERVLETS La programación de aplicaciones web sobre la especificación de JSP y Servlets es un subconjunto de la plataforma Java EE. Existen muchas formas de estructurar

Más detalles

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts Temario Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts Abril 2007 1. Introducción Se describe a continuación de forma detallada el programa del curso Desarrollo de Aplicaciones Web con Java: J2EE

Más detalles

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería de Sistemas, Universidad

Más detalles

Ejercicios de AJAX y REST

Ejercicios de AJAX y REST Índice 1 AJAX (1 punto)... 2 2 Servicios REST (1.5 puntos)... 3 3 Gestión de errores en servicios REST (0.5 puntos)...5 1. AJAX (1 punto) Vamos a cambiar la búsqueda de usuarios para que funcione mediante

Más detalles

FRAMEWORK SPRING EN UNA APLICACIÓN WEB

FRAMEWORK SPRING EN UNA APLICACIÓN WEB 3CM2 FRAMEWORK SPRING EN UNA APLICACIÓN WEB WEB APPLICATION DEVELOPMENT 1. INTRODUCCIÓN El Spring Framework es un popular marco de aplicaciones de código abierto que puede hacer más fácil el desarrollo

Más detalles

Manual de uso del Taglib de Template Saga

Manual de uso del Taglib de Template Saga 1 Manual de uso del Taglib de Template Saga www.sagasoluciones.com info@sagasoluciones.com C/ Salado 11 Local 10. 41010 Sevilla T. + 34 954 45 72 75 F. + 34 954 45 75 72 CONTROL DEL DOCUMENTO Realizado

Más detalles

Laboratorio de Aplicaciones Telemáticas

Laboratorio de Aplicaciones Telemáticas Java Server Pages (JSP) Laboratorio de plicaciones Telemáticas Jesús rias Fisteus jaf@it.uc3m.es Curso 2007/2008 Edited with emacs + LT E X+ prosper Universidad Carlos de adrid V E S E Java Server Pages

Más detalles

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación. Unidad II Metodología de Solución de Problemas 2.1 Descripción del problema (enunciado). Este aspecto nos indica describir de manera objetiva la realidad del problema que se esta investigando. En la descripción

Más detalles

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat 4.1.12.

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat 4.1.12. Unidad 7 Servlets 7.1 Marco teórico Lo que permite que ordenadores remotos con procesadores y sistemas operativos diferentes se entiendan y en definitiva que Internet funcione como lo hace en la actualidad,

Más detalles

Capitulo III. Diseño del Sistema.

Capitulo III. Diseño del Sistema. Capitulo III. Diseño del Sistema. Para el desarrollo del sistema en la presente tesis se utilizo el paradigma orientado a objetos utilizando el lenguaje Java en su versión 1.2. Por medio de este lenguaje

Más detalles

Contiene código HTML normal junto elementos especiales de JSP. Internamente, el servidor de aplicaciones las compilará a un servlet

Contiene código HTML normal junto elementos especiales de JSP. Internamente, el servidor de aplicaciones las compilará a un servlet JSP Java Server Pages cesaracebal.com acebal@uniovi.es Qué es JSP? Una tecnología para crear páginas Web dinámicas Contiene código HTML normal junto elementos especiales de JSP Están construidas sobre

Más detalles

Kaldeera Advanced Forms 2009 Guía del usuario

Kaldeera Advanced Forms 2009 Guía del usuario Kaldeera Advanced Forms 2009 Guía del usuario Indice Usando Kaldeera Advanced Forms 2009... 3 Accediendo a la página de configuración... 3 Activando o desactivando la funcionalidad de Kaldeera Advanced

Más detalles

Seguridad de la aplicación para servlets y JSP (página activas java)

Seguridad de la aplicación para servlets y JSP (página activas java) Seguridad de la aplicación para servlets y JSP (página activas java) Autenticación de Servlets (java) Usuarios y roles. Autenticación declarativa. Portabilidad Tipos de autenticación Básica. Digest. Basada

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS Versión 1.0 Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Servicio de SMS Cliente NORMATIVA ATLAS Arquitectura

Más detalles

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

USANDO SERVLETS EN UN SERVIDOR WEB RESIN USANDO SERVLETS EN UN SERVIDOR WEB RESIN Servidor Web Resin Resin es un servidor web que permite no solo despachar un página web, sino aplicaciones web construidos bajo la arquitectura J2EE, así como el

Más detalles

4.3 Problemas con servlets y páginas JSP. Patrones

4.3 Problemas con servlets y páginas JSP. Patrones 4.3 Problemas con servlets y páginas JSP. Patrones Situación a la que queremos llegar Poder usar directamente herramientas de diseño de páginas web para implementar la vista Las actualizaciones al aspecto

Más detalles

Integración Capa Web de pojo-miniportal (1)

Integración Capa Web de pojo-miniportal (1) Integración Capa Web de pojo-miniportal (1) 1. Cambiar tipo de proyecto maven de "JAR" a "WAR 2. Añadir dependencias del API de Tapestry 3. Añadir configuración del plugin de Jetty al pom.xml 4. Añadir

Más detalles

Dossier de prácticas

Dossier de prácticas Dossier de prácticas Intranet / Extranet Màster d Enginyeria del Software Desenvolupament d aplicacions sobre Internet Fundació Politècnica de Catalunya Jaume Moral Ros Albert Obiols Vives 1 Dossier de

Más detalles

Manual del Protocolo XML-RPC de Mensajería Negocios

Manual del Protocolo XML-RPC de Mensajería Negocios Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...

Más detalles

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial Título ARQUITECTUA DE M2M Proyecto Monkey to Monkey ( M 2 M ) Equipo Proyectos Informáticos Versión 1.0 Código PLAN_M2M_2012_04_01 Fecha 19/04/2012 Autores MIGUEL ÁLVAREZ Y CLARA HERRERO Estado Documento

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

envía al browser. El browser despliega el archivo.

envía al browser. El browser despliega el archivo. SERVLETS Dr. Raúl Perez Páginas web estáticas Como se despliega una página web en un browser Normalmente la página se crea usando HTML y se almacena como un archivo en el servidor de web. El usuario escribe

Más detalles

Capítulo 1 Documentos HTML5

Capítulo 1 Documentos HTML5 Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs

Más detalles

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS Versión 1.4 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario NORMATIVA

Más detalles

Struts. Sesión 1. Introducción a Struts: el controlador y las acciones. Especialista Universitario Java Enterprise

Struts. Sesión 1. Introducción a Struts: el controlador y las acciones. Especialista Universitario Java Enterprise Struts Sesión 1. Introducción a Struts: el controlador y las acciones 2010-2011 Depto. Ciencia de la Computación e IA Indice Introducción a Struts y a MVC Instalación de Struts El ciclo de control en Struts

Más detalles

Curso PHP Módulo 1 R-Luis

Curso PHP Módulo 1 R-Luis Lenguaje PHP Introducción Archivos HTML y PHP: Crear un archivo php es tan sencillo como cambiarle la extensión a un archivo html, por ejemplo podemos pasar de index.html a index.php sin ningún inconveniente.

Más detalles

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu. 1 NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets 2 Agenda Protocolo HTTP Formas HTML Servlets 3 Protocolo HTTP Hypertext Transfer Protocol (HTTP) - 1990 Versión 1.1 Mecanismo

Más detalles

Conexión de Mysql con NetBeans

Conexión de Mysql con NetBeans Alumna: Keren Monge Cid Materia: Web Application Development Maestro: Alejandro S. Álvarez Cifuentes Grupo: 3CM2 2do Departamental Conexión de Mysql con NetBeans Objetivo Realizar un programa que realice

Más detalles

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Introducción a Java LSUB. 15 de enero de 2015 GSYC Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine.

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine. Capítulo 6 Servlets En esta sección se va a tratar el primer componente que corre del lado del servidor, y es uno de los puntos fundamentales para la comunicación entre el cliente (browser) y el servidor.

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT 1. INTRODUCCIÓN En esta práctica se mostraran los fundamentos del uso de la IDE para desarrollar un servicio web JAX-WS. Después de crear el servicio

Más detalles

ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS

ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS Versión 1.3 Área de Aplicaciones Especiales y Arquitectura de Software 8 Hoja de Control Título Documento de Referencia Responsable Manual de Usuario

Más detalles

Curso Java Web (JSP's/Servlets)

Curso Java Web (JSP's/Servlets) Curso Java Web (JSP's/Servlets) JSP's ("Java Server Pages") Composición Un JSP ("Java Server Page") es uno de los componentes más básicos empleados para aplicaciones de Servidor en Java. Su composición

Más detalles

Licencia Copyright (c) 2004 Hernán Darío Fernández. Se permite la copia, distribución y/o modificación de este documento bajo los términos de la GNU

Licencia Copyright (c) 2004 Hernán Darío Fernández. Se permite la copia, distribución y/o modificación de este documento bajo los términos de la GNU Licencia Copyright (c) 2004 Hernán Darío Fernández. Se permite la copia, distribución y/o modificación de este documento bajo los términos de la GNU Free Documentation License, Versión 1.1 o cualquier

Más detalles

JSP Básico. Índice. 2 Traducción de los JSP a servlets...2. 6 Acciones...8. 1 Introducción a JSP... 2

JSP Básico. Índice. 2 Traducción de los JSP a servlets...2. 6 Acciones...8. 1 Introducción a JSP... 2 Índice 1 Introducción a JSP... 2 2 Traducción de los JSP a servlets...2 3 Elementos de JSP...3 4 Inserción de código en páginas JSP... 4 4.1 Expresiones...4 4.2 Scriptlets...4 4.3 Declaraciones... 4 4.4

Más detalles

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Desarrollo de aplicaciones Web con Servlets y JSP Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Jesús Arias Fisteus jaf@it.uc3m.es Desarrollo de aplicaciones Web con Servlets y JSP p. 1 URIs

Más detalles

Programación páginas web. Servidor (PHP)

Programación páginas web. Servidor (PHP) Programación páginas web. Servidor (PHP) Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte servidor con la tecnología PHP y el servidor de bases de datos MySQL.

Más detalles

5.3.2 Java Server Faces (JSF)

5.3.2 Java Server Faces (JSF) 5.3.2 Java Server Faces (JSF) Framework que implementa el patrón MVC (Modelo-Vista-Controlador) Basado en componentes y eventos del lado del servidor Mantiene del lado del servidor una representación del

Más detalles

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE Versión 1.3 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario del NORMATIVA

Más detalles

API de java. (http://download.oracle.com/javase/6/docs/api/) Guía de alumno Laboratorio 9. Recursos disponibles en moodle para este día.

API de java. (http://download.oracle.com/javase/6/docs/api/) Guía de alumno Laboratorio 9. Recursos disponibles en moodle para este día. PROGRAMACIÓN Laboratorio 9 Guía del Alumno 1 LABORATORIO 9: JAVA.IO - ENTRADA/SALIDA JAVA.NET - URL Versión:2013-05- 20 Conocimientos previos Temario visto en las clases de teoría. Se recomienda haber

Más detalles

ATLAS MANUAL DE USUARIO COMPONENTES JSF BUSINESS OBJECTS XI

ATLAS MANUAL DE USUARIO COMPONENTES JSF BUSINESS OBJECTS XI ATLAS MANUAL DE USUARIO COMPONENTES JSF BUSINESS OBJECTS XI Versión 1.1 Área de Aplicaciones Especiales y Arquitectura de Software 9 Hoja de Control Título Documento de Referencia Responsable ICM Versión

Más detalles

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

Más detalles

Instalar y configurar W3 Total Cache

Instalar y configurar W3 Total Cache Instalar y configurar W3 Total Cache en WordPress Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La velocidad de carga de una web influye mucho a la hora de mejorar el

Más detalles

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS 1 Introducción... 3 2 Despliegue de la aplicación de ejemplo... 3 2.1 Requisitos previos... 3 2.2 Despliegue de la aplicación... 3 3 Prueba

Más detalles

Struts. Sesión 2: La vista en Struts. ActionForms y taglibs propias. Especialista Universitario Java Enterprise

Struts. Sesión 2: La vista en Struts. ActionForms y taglibs propias. Especialista Universitario Java Enterprise Sesión 2: La vista en. ActionForms y taglibs propias Indice ActionForms. Ciclo de vida Usar ActionForms Las taglibs de. HTML y HTML-EL ActionForms Normalmente la acción toma los parámetros directamente

Más detalles

Tema 4: Diseño e Implementación de la Capa Web

Tema 4: Diseño e Implementación de la Capa Web Tema 4: Diseño e Implementación de la Capa Web Índice 4.1 Tutorial de Servlets y JSPs 4.2 Tutorial de Tapestry 4.3 Caso de Estudio: Diseño e Implementación de la Capa Web de MiniBank 4.4 Caso de estudio:

Más detalles

A continuación se confeccionara un formulario para el ingreso de un nombre y un botón para el envío del dato ingresado al servidor:

A continuación se confeccionara un formulario para el ingreso de un nombre y un botón para el envío del dato ingresado al servidor: FORMULARIOS BAJO HTML INTRODUCCION A FORMULARIOS Un formulario permite que el visitante al sitio cargue datos y sean enviados al servidor. Es el medio ideal para registrar comentarios del visitante sobre

Más detalles

Diplomado Java Web Programming with Servlets, JSP, JSF & Ajax

Diplomado Java Web Programming with Servlets, JSP, JSF & Ajax Diplomado Java Web Programming with Servlets, JSP, JSF & Ajax Descripción: Por nuestra experiencia de más de 11 años enseñando Java y pioneros en este tipo de Diplomados creamos este entrenamiento. Nuestro

Más detalles

Práctica de introducción a

Práctica de introducción a Práctica de introducción a XML El trabajo consiste en una introducción al uso del lenguaje XML y su aplicación en documentos y sistemas de caracteristicas multimedia. 1.- Qué es XML? XML (extensible Markup

Más detalles

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades: Propósito del prototipo: Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades: 1º. Mostrar noticias y eventos propios del grupo de personas que administren la Web.

Más detalles

Squipy v1.1. 0.-Introducción

Squipy v1.1. 0.-Introducción Squipy v1.1 0.-Introducción Squipy es un sencillo proxy que permite filtrar y modificar los datos que se envían desde el navegador hacia un servidor web. El interfaz está en castellano y en inglés y su

Más detalles

Universidad Tecnológica del Valle del Mezquital. Desarrollo de Aplicaciones Web. Manual JSP

Universidad Tecnológica del Valle del Mezquital. Desarrollo de Aplicaciones Web. Manual JSP Universidad Tecnológica del Valle del Mezquital Desarrollo de Aplicaciones Web Manual JSP Presentado por: Amellaly Perez Ramirez Ana Maday Perez Montoya Eduardo Perez Ignacio Jairo Mohedano Mejia Maricela

Más detalles

Manual de Integrador.NET

Manual de Integrador.NET Manual de Integrador.NET viafirma platform v3.5 ÍNDICE 1. INTRODUCCIÓN... 5 1.1. Objetivos... 5 1.2. Referencia... 5 2. GUÍA RÁPIDA... 5 2.1. Añadir las dependencias necesarias... 5 2.2. Página de acceso

Más detalles

CAPÍTULO 14. DESARROLLO

CAPÍTULO 14. DESARROLLO CAPÍTULO 14. DESARROLLO DE SISTEMAS ESPECÍFICOS 1. Introducción En los últimos años han aparecido multitud de nuevas plataformas para desarrollar aplicaciones y ponerlas en explotación. En este capítulos

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable 1. Introducción. El Sistema de Administración de Información de un Negocio Franquiciable (SAINF)

Más detalles

Manual de Uso XML-Whois de Neubox. Manual del Sistema de XML Whois de Neubox Versión 9.12.4

Manual de Uso XML-Whois de Neubox. Manual del Sistema de XML Whois de Neubox Versión 9.12.4 Manual del Sistema de XML Whois de Neubox Versión 9.12.4 1 Índice Sección Página I. Introducción........ 3 II. Contenido del paquete............ 4 III. Instalación y uso....... 5 1. Cómo comprobar la plantilla......

Más detalles

9. Objetos y clases. 9.1. Clases

9. Objetos y clases. 9.1. Clases Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

Integración Capa Web de pojo-miniportal (1)

Integración Capa Web de pojo-miniportal (1) Integración Capa Web de pojo-miniportal (1) 1. Cambiar tipo de proyecto maven de "JAR" a "WAR" y actualizar la versión de Tapestry (5.0.18) en las dependencias 2. Añadir configuración del plugin de Jetty

Más detalles

Curso de PHP con MySQL Gratis

Curso de PHP con MySQL Gratis Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes VAST: Manual de usuario Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes Índice general Índice general 2 1. Introducción 4 2. Representación intermedia del AST 5 2.1. Funcionamiento del VAST

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

Validación. Internacionalización

Validación. Internacionalización Índice 1 Validación.. 2 1.1 Configuración. 2 1.2 Definir qué validar y cómo.. 2 1.3 Los validadores estándar3 1.4 Mensajes de error..4 1.5 Modificar el ActionForm para Validator.. 7 1.6 Validación en el

Más detalles

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 12 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus

Más detalles

Identidad Corporativa de ICM 1 TABLA DE CONTENIDO... 2 2 INTRODUCCIÓN... 3 3 COMPONENTES NECESARIOS... 3

Identidad Corporativa de ICM 1 TABLA DE CONTENIDO... 2 2 INTRODUCCIÓN... 3 3 COMPONENTES NECESARIOS... 3 Uso de la librería DWR en aplicaciones ICM Área de Arquitectura de Aplicaciones 1 TABLA DE CONTENIDO 1 TABLA DE CONTENIDO... 2 2 INTRODUCCIÓN... 3 3 COMPONENTES NECESARIOS... 3 3.1 Librería DWR...3 3.1.1

Más detalles

DESARROLLO DE APLICACIONES WEB Introducción a Java Server Faces

DESARROLLO DE APLICACIONES WEB Introducción a Java Server Faces DESARROLLO DE APLICACIONES WEB Introducción a Java Server Faces 1. Objetivo: Introducir los conceptos relacionados con la construcción de aplicaciones Web Java basadas en Java Server Faces 2.x. 2. Prerrequisitos:

Más detalles

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Bases de Datos Tema 05. Proto-po de una aplicación de base de datos Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia:

Más detalles