Manual ca011 CURSO JAVA, SERVER PAGES JSP Y SERVLETS

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

Download "Manual ca011 CURSO JAVA, SERVER PAGES JSP Y SERVLETS"

Transcripción

1 Sé diferente, intégrate Mca011 Manual ca011 CURSO JAVA, SERVER PAGES JSP Y SERVLETS Autor: Orlando Gutiérrez Fecha: 17/ 07 / 2013 Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 1

2 INDICE Pag. 3 Pag. 3 Pag. 5 Pag. 6 Pag. 6 Pag. 11 Pag. 14 Pag. 15 Pag. 17 Pag. 21 Pag. 23 Pag. 26 Pag. 27 Pag. 27 Pag. 28 Pag. 30 Pag. 31 Pag. 32 Pag. 34 Pag. 35 Pag. 35 Pag. 46 Pag. 49 Pag. 52 Pag. 54 Lección 1 Qué es un Servlet Lección 2 Ciclo de vida de un Servlet Lección 3 Compartiendo información en componentes Webs Lección 4 Inicializando un Servlet Lección 5 Requests y Responses Lección 6 Invocando recursos Web externos Lección 7 Accediendo el contexto Web Lección 8 Manteniendo el estado de un cliente Lección 9 Finalizando un Servlet Lección 10 Qué es JSP Lección 11 Ciclo de vida de una página JSP Lección 12 Objetos de JSP Lección 13 Variables Lección 14 Objetos Implícitos Lección 15 Operadores Lección 16 Funciones Lección 17 Tags personalizados Lección 18 Incluir Applets Lección 19 Estableciendo propiedades para grupos de JSPs Lección 20 Standard Tag Library (STL) Lección 21 Core Tags Lección 22 XML Tags Lección 23 Tags de Internacionalización Lección 24 SQL Tags Lección 25 Tags definidas por el usuario Pag. 57 Lección 26 Resumen sintaxis JSP (Scripts, Scriptles, Expresiones ) Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 2

3 LECCION 1 Qué es un Servlet Motivación: Con el desarrollo y la utilización de aplicaciones WEB surge la necesidad de mostrar y ofrecer contenido dinámico en lugar de páginas HTML con contenido estático. Los applets de Java son uno de los primeros intentos realizados para lograr este objetivo, pero se basan en el desarrollo sobre los clientes en la arquitectura cliente-servidor y no en los servidores. También la tecnología scripts CGI (Common Gateway Interface) fue empleada para generar contenido dinámico. Debido a la falta de escalabilidad de CGI así como las limitaciones sobre los scripts a desarrollar surgió la necesidad de desarrollar otras tecnologías para resolver estos inconvenientes. La tecnología de Java Servlet fue diseñada como un mecanismo portable para crear contenido web dinámico y orientado al usuario (dinámico, portable, escalable y personalizado) Qué es un servlet: Un servlet es una aplicación empleada para interactuar con el servidor de páginas o aplicaciones WEB utilizando el modelo de programación request-response. Desde el punto de vista de programación, es una clase del lenguaje de programación Java utilizada para extender (añadir nueva funcionalidad y aprovechar la ya existente) las capacidades de los servidores de páginas o aplicaciones WEB. Aunque los servlets pueden responder a cualquier tipo de requerimiento son primordialmente empleados en aplicaciones hosted por servidores WEB. La tecnología de Java servlets provee de clases para implementar servidores específicos para http. Los paquetes java que soportan la programación de los servlets, ofreciendo clases e interfaces java, son javax.servlet y javax.servlet.http. Todos los servlets deben implementar la interface servlet, la cual define un ciclo de vida del servlet y provee los métodos para implementarlo y manejarlo. Cuando se implementa un servicio genérico, la clase GenericServlet provista en el Java Servlet API puede ser utilizada o heredada (extendida en términos de Java). La clase HttpServlet provee métodos, como doget y dopost, para implementar servicios específicos a http. En este manual se cubrirán los conceptos y ejemplos necesarios para desarrollar servlets que generan respuestas a requerimientos de http. Conocimiento previo de http es necesario. LECCION 2 Ciclo de vida de un Servlet Introducción: El ciclo de vida de un servlet es administrado por el contenedor del servlet, el contenedor donde se encuentra la puesta en marcha del servlet. Cuando un requerimiento es asociado (mapeado) a un servlet, el contenedor ejecuta los siguientes pasos: 1. Si la instancia del servlet no existe, el contenedor Web: 1.1 Carga la clase servlet 1.2 Crea una instancia de la clase servlet 1.3 Inicializa la instancia del servlet a través del método init 2. Ejecuta el método service (un servicio), pasando los objetos request y response Cuando el contenedor de servlet requiera eliminar (remover) el servlet, éste finalizará el servlet empleando el método destroy de la clase servlet. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 3

4 Administrando y controlando los eventos de un ciclo de vida de un servlet: Se pueden monitorear los eventos asociados al ciclo de vida y responder a éstos a través de objetos listener. Los métodos de los listener se invocan cuando los eventos del ciclo de vida de un servlet ocurren. Para utilizar objetos listener, se debe definir la clase listener y especificar la clase listener. Definiendo la clase listener: La clase listener se debe definir como una implementación de la interfaz listener. En la siguiente tabla se muestran los eventos que pueden ser monitoreados y la interfaz correspondiente que debe ser implementada. Cuando un método de un listener es invocado, el recibe como parámetro un evento conteniendo la información del evento producido. Por ejemplo, los métodos de la interfaz HttpSessionListener reciben como parámetro un HttpSessionEvent el cual contiene un HttpSession. OBJETO EVENTO INTERFAZ LISTENER y CLASE EVENTO Web Context inicialización y destrucción javax.servlet.servletcontextlistener y ServletContextEvent Atributo añadido, eliminado o reemplazado javax.servlet.servletcontextattributelistener y ServletContextAttributeEvent Session Creación Invalidación Timeout Atributo añadido, eliminado o reemplazado javax.servlet.http.httpsessionlistener y HttpSessionEvent javax.servlet.http.httpsessionattributelistener y HttpSessionBindingEvent Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 4

5 Manejando errores: Cualquier número de excepciones pueden ocurrir cuando un servlet es ejecutado. El contenedor de web generará una página por defecto conteniendo el mensaje. Una excepción servlet ocurre cuando una excepción se produce, pero se debe indicar que el contenedor debe retornar una página específica de error para una excepción en particular. LECCION 3 Compartiendo información en componentes Webs Compartiendo información Componentes web, al igual que la mayoría de los objetos, interactúan y colaboran con otros objetos para realizar sus tareas. Existen varias alternativas para realizar ésto. Los componentes web pueden utilizar componentes privados como los JavaBeans, pueden compartir con objetos a través de atributos o métodos públicos, pueden emplear bases de datos y pueden invocar otros recursos web. La tecnología de servlets de Java ofrece un mecanismo que permite a un componente web invocar otros recursos web. Empleando Objetos con Alcance (Scope Objects) Los componentes web, colaborando entre sí, comparten información a través de objetos almacenados como atributos en objetos con alcance (Scope Objects). Estos atributos son accedidos a través de los métodos get o set de la clase representando el alcance. La siguiente tabla muestra estos objetos. Objeto con Clase Disponible en alcance web context javax.servlet.servletcontext Componentes web dentro de un web context session javax.servlet.http.httpsession Componentes web manejando un request perteneciente a una session request Subtipo de javax.servlet.servletrequest Componentes web manejando el request page javax.servlet.jsp.pagecontext La página jsp que crea el contexto Empleando Objetos con Alcance compartido ( multithreads ) En un servidor multitarea multithreaded es posible compartir recursos para ser accedidos de una manera concurrente. Más allá de los atributos de los objetos de alcance (scope object), lo recursos compartidos incluyen datos almacenados en memoria (contexto compartido) tales como instancias de clases y objetos externos como archivos, conexiones con las bases de datos y conexiones de redes. Acceso concurrente se presenta en muchas situaciones: Múltiples components web accediendo objetos almacenados en un web context Múltiples componentes web accediendo objetos almacenados en una session Múltiples tareas threads dentro de un componente web accediendo variables. Un contenedor web típicamente creará un thread para manejar cada request. Si se desea que una instancia de servlet maneje un solo request a la vez, el servlet puede implementar la interfaz SingleThreadModel. Si el servlet implementa esta interfaz, se garantiza que nunca más de un thread ejecutará concurrentemente el método de servicio del servlet. Un contenedor web puede implementar esta funcionalidad a través del acceso sincronizado a una instancia simple del servlet o manteniendo un pool de instancias de componentes web y controlando cada nuevo requerimiento como una instancia. Esta interfaz no controla los problemas de sincronización ocasionados cuando los componentes web acceden a recursos compartidos como variables static o objetos externos. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 5

6 LECCION 4 Inicializando un Servlet Una vez que el contenedor de web carga e instancia una clase del servlet y antes de comenzar a procesar los requerimientos de los clientes, el contenedor web inicializa el servlet. Este proceso puede ser personalizado permitiendo a un servlet realizar operaciones de inicialización como leer datos de configuración almacenados, inicializar recursos o ejecutar otras actividades que sólo se van a ejecutar una vez. Para personalizar la inicialización de un servlet se debe sobreescribir el método init de la clase servlet. Un servlet que no pueda completar este proceso de inicialización provocará una excepción del tipo UnavailableException. Ejemplo public class empleadoservlet extends HttpServlet { // campos de la clase //... int empid; // sobreescribiendo el método init public void init() throws ServletException { // código de inicialización // chequeo de condición de falla para disparar la excepción if (empid == -1) throw new UnavailableException("No existe ningún empleado"); LECCION 5 Requests y Responses Codificando métodos de servicios: Los servicios soportados por un servlets son implementados en los métodos de servicio service methods de un servlet genérico GenericServlet o de un servlet http HttpServlet o de cualquier protocolo específico que implemente la interfaz servlet. Estos métodos se conocen como los domethods y existen cinco posibilidades doget, dodelete, dooptions, dopost, doput y dotrace. En el resto de esta sección, el término método de servicio será utilizado para nombrar a cualquier método de la clase servlet que provee de un servicio a un cliente. El patrón general para un método de servicio es extraer información de un requerimiento (request), acceder a recursos externos y luego producir una respuesta (response) basada en esta información. En el caso de servlets http, el procedimiento correcto para producir la respuesta es primero llenar los encabezados de ésta (headers), luego producir un texto de salida (stream) para la respuesta y finalmente escribir el contenido de la respuesta en el texto de salida. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 6

7 Request: Un request contiene los datos envíados por el cliente al servlet. Todos los requests implementan la interfaz ServletRequest. Esta interfaz define métodos para acceder a la siguiente información: Parámetros: Los cuales son típicamente empleados para enlazar la información entre los clientes y los servlet Atributos de valor de los objetos: empleados típicamente para intercambiar información entre el contenedor del servlet y el servlet o entre otros servlets colaborativos Información conteniendo el protocolo utilizado para comunicar el request y el cliente y el servidor involucrado en el request Información relevante a la localización Por ejemplo en un servlet, el identificador de un empleado es incluido como un parámetro llamado Agregar de un request (más adelante se detallará cómo). El siguiente fragmento de código ilustra cómo emplear el método getparameter para obtener el identificador. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 7

8 Long idemp = request.getparameter("agregar"); También se puede extraer un stream de entrada del request e interpretar los datos (a través de un parsing). Para leer el stream como una cadena de caracteres se utiliza el objeto BufferedReader retornado por el método getreader del request. Para leer el stream como datos binarios se emplea el objeto ServletInputStream retornado por el método getinputstream. HTTP servlets reciben como parámetro un objeto HTTP request, HttpServletRequest, el cual contiene el URL del request, los encabezados del HTTP, y el string de consulta (query string), entre otros parámetros. El URL de un request HTTP se compone de las siguientes partes: path>?<query string> El campo request path se compone a su vez de los siguientes elementos: Context path: Una concatenación de un slash (/) con la raíz contextual de la aplicación de Java servlet. Servlet path: La sección del path que corresponde al alias del componente que activa el request. Este path comienza con un slash (/). Path info: La parte del request path que no es parte ni del context path ni del servlet path. Suponga que el contexto de la aplicación del servlet sea catemp y se tienen definidos los siguientes alias Patrón /emp/* /*.jsp Alias EmpServlet JspServlet Entonces ejemplos de request path se indican a continuación Request path Context Servlet path Path info path /catemp/emp/index.html catemp /emp /index.html /catemp/ayuda/ayuda.jsp catemp /ayuda/ayuda.jsp nill Strings de consulta ( query strings ) se componen de un conjunto de parámetros y valores de los parámetros. Parámetros individuales son tomados de un request con el método getparameter. Existen dos maneras de generar strings de consulta: Un string de consulta puede explícitamente aparecer en una página Web. Por ejemplo un html generado por un servlet podría contener el enlace Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 8

9 <a href="/datosemp/catemp?agregar= ">agregar a catalogo</a> Luego un servlet toma el parámetro agregar de la siguiente manera: Long idemp = request.getparameter("agregar"); Un string de consulta es añadido a un URL cuando un formulario con un método GET http es envíado. Por ejemplo, un servlet (llamado emisor) genera un formulario, luego un input de HTML (con un valor asociado) es añadido al URL que mapea a otro servlet (llamado receptor) y finalmente el servlet receptor extrae el valor empleando el método getparameter. Responses: Un response contiene información enviada del servidor hacia el cliente. Todas las response implementan la interfaz ServletResponse. Esta interfaz provee de métodos con la siguiente funcionalidad: Construir un stream de salida empleado para enviar data al cliente. Enviar datos en formato de carácter a través del objeto PrintWriter retornado por el método getwriter. Enviar datos en formato binario en un response con cuerpo MIME, utilizando el objeto ServletOutputStream retornado por el método getoutputstream. Mezclar datos binarios con datos de texto, por ejemplo para crear una response con múltiples partes. Indicar el tipo del contenido (por ejemlo, text/html), siendo retornado en el response. Un registro de los tipos de contenidos es administrado por Internet Assigned Numbers Authority (IANA) en: ftp://ftp.isi.edu/in-notes/iana/assignments/media-types Indicar cuando se coloca la salida en un buffer. Por defecto, cualquier contenido escrito en un stream de salida es enviado al cliente inmediatamente. Si se emplean buffers, el contenido es escrito completamente antes de ser enviado al cliente, dando mayor tiempo al servlet para colocar los códigos de estado, los encabezados o realizar un forward a otro recurso web. Actualizar información sobre localización. Objetos HTTP response, los cuales son de la clase HttpServletResponse, poseen campos representando encabezados HTTP tales como: Códigos de estado, los cuales son utilizados para indicar la razón por la cual un request no fue realizado satisfactoriamente. Cookies, empleadas para almacenar información específica de la aplicación en el cliente. En ocasiones, cookies son empleadas PARA mantener un identificador para realizar traza en una sección de usuario. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 9

10 A continuación se muestra el código en Java de un servlet que genera un response a través de una página HTML que despliega la información de un empleado. El servlet primero llena los encabezados del response, el tipo del contenido y el tamaño del buffer. El servlet almacena el buffer el contenido de la página. El método getwriter devuelve un objeto PrintWriter para el response. Para llenar el response, primero el servlet envía un requerimiento al servlet que genera los banners; esto permite incluir otros recursos en la respuesta. Luego el servlet obtiene la identificación del empleado y usa el identificador para obtener la información. Finalmente el servlet genera el HTML markup conteniendo la información del empleado y envía la respuesta al cliente invocando el método close sobre el PrintWriter. public class detempservlet extends HttpServlet { public void doget (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Establece los encabezados antes de acceder al Writer response.setcontenttype("text/html"); response.setbuffersize(8192); PrintWriter salida = response.getwriter(); // Escribe el response salida.println("<html>" + "<head><title>+ messages.getstring("descripcionempleado") +</title></head>"); // Obtiene el dispatcher; toma el banner a ser mostrado RequestDispatcher dispatcher = getservletcontext(). getrequestdispatcher("/banner"); if (dispatcher!= null) dispatcher.include(request, response); //Toma el identificador del empleado a mostrar long idemp= request.getparameter("idemp"); if (idemp!= null) { // informacion acerca del empleado try { // implementado en la clase BDEmp detemp de = BDEmp.obtDetEmp (idemp); Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 10

11 ... //Mustra la información salida.println("<h2>" + de.obtnombre() + "</h2>" +... catch (Exception ex) { response.resetbuffer(); throw new ServletException(ex); salida.println("</body></html>"); salida.close(); LECCION 6 Invocando recursos Web externos Introducción: Los componentes web pueden invocar otros recursos Web de dos maneras: indirecto y directo. Un componente web invoca indirectamente otro recurso web cuando se coloca embebido en el contenido retornado a un cliente un URL que apunta a otro componente web. Un componente web también puede invocar directamente a otro recurso durante su ejecución. Existen dos posibilidades: a través de la inclusión del contenido de otro recurso o se puede realizar forward del requerimiento a otro recurso. Para invocar a un recurso disponible en el servidor donde se ejecuta un componente Web, primero se debe obtener el objeto RequestDispatcher empleando el método getrequestdispatcher("url"). Se puede obtener el objeto RequestDispatcher a partir de un request o a través del web context; sin embargo, los dos métodos se comportan ligeramente diferente. El método toma el camino ( path ) del recurso requerido como un parámetro. Un request puede tomar un camino relativo, pero el web context requiere un camino absoluto. Si el recurso no se encuentra disponible, o si el servidor no tiene implementado un objeto RequestDispatcher para el tipo de recurso, el método getrequestdispatcher devolverá null. El servlet programado debe estar preparado para manejar esta situación. Incluyendo otros recursos en el Response : Es muy frecuente y útil incluir otro recurso web, por ejemplo un banner o información de copyright, en la response enviada por un componente web. Para incluir otro recurso, se debe invocar el método include de un objeto RequestDispatcher: include(request, response); Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 11

12 Si el recurso es estático, el método include habilita las funciones programáticas de include en el lado del servidor. Si el recurso es un componente web, el efecto del método es enviar el request al componente web incluido, ejecutar el componente web, y luego incluir el resultado de la ejecución en el response producido por el servlet. Un componente web incluido tiene acceso al objeto request, pero se encuentra limitado en lo que puede realizar con el objeto response: Puede escribir en el cuerpo de un response y realizar commit del response No puede actualizar los headers o invocar a cualquier método (por ejemplo, setcoookie) que modifique los headers de la response. Por ejemplo, a continuación se muestra un un banner para una aplicación generado por servletbanner. Es importante destacar que los métodos doget y dopost son implementados porque el servletbanner puede ser despachado desde cualquiera de los dos métodos a través de un servlet que lo invoca. public class servletbanner extends HttpServlet { public void doget (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter salida = response.getwriter(); salida.println("<body bgcolor=\"#ffffff\">" + "<center>" + "<hr> <br> " + "<h1>" + "<font size=\"+3\" color=\"#cc0066\">banner s </font>" + <img src=\"" + request.getcontextpath() + "/imagen.gif\">" + "<font size=\"+3\" color=\"black\">ejemplo</font>" + "</h1>" + "</center>" + "<br> <hr> <br> "); public void dopost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter salida = response.getwriter(); salida.println("<body bgcolor=\"#ffffff\">" + "<center>" + "<hr> <br> " + "<h1>" + "<font size=\"+3\" color=\"#cc0066\">banner's </font>" + <img src=\"" + request.getcontextpath() + Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 12

13 "/imagen.gif\">" + "<font size=\"+3\" color=\"black\">ejemplo</font>" + "</h1>" + "</center>" + "<br> <hr> <br> "); Ahora, cada servlet que desee incluir el resultado de la ejecución del servletbanner, emplea el siguiente código: RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/banner"); /* Directorio donde se encuentra el banner */ if (dispatcher!= null) dispatcher.include(request, response); Transfiriendo el control a otro componente Web: En una aplicación web podría ser necesario descomponer una tarea en sub-tareas (como en el caso de la programación estructurada); por ejemplo un componente web podría realizar un pre-procesamiento de un request y pasarle el control a otro componente web para generar el response. Para transferir el control a otro componente web, se debe invocar el método forward de un objeto RequestDispatcher. Cuando se le realiza forward a un request, el URL del request es actualizado hacia el path de la página a la cual se requiere realizar el forward. Si el URL original (antes del forward) es requerido para un futuro procesamiento, este puede ser almacenado como un atributo del request. En el siguiente ejemplo, se almacena la información del path del URL original, obtiene un RequestDispatcher del request, y luego realiza un forward a una página JSP otrorecurso.jsp. public class Despachador extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) { /* En el atributo pathurl, se podría utilizar cualquier nombre, se almancena el URL */ request.setattribute("pathurl", request.getservletpath()); RequestDispatcher desp = request. getrequestdispatcher("/otrorecurso.jsp"); if (desp!= null) desp.forward(request, response); public void dopost(httpservletrequest request, Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 13

14 ... LECCION 7 Accediendo el contexto Web El contexto donde se ejecuta un componente web es un objeto que implementa la interfaz ServletContext. Se puede obtener un contexto web con el método getservletcontext. El contexto web ofrece métodos para acceder a: Parámetros de inicialización Recursos asociados con el contexto web Atributos de los objetos Capacidades de registro de bitácora (logging) En el siguiente ejemplo se muestra un filtro que cuenta el número de accesos (hits a una página) empleando la información del contexto. El valor incrementado del contador es almacenado con el método log del contexto. public final class filtrocontador implements Filter { private FilterConfig conffiltro = null; public void dofilter(servletrequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {... StringWriter sw = new StringWriter(); PrintWriter esc = new PrintWriter(sw); ServletContext contexto = filterconfig. getservletcontext(); Counter contador = (Counter)contexto.... getattribute("contadoraccesos"); /* Atributo definido */ esc.println("el numero de accesos es: " +... contador.inccounter()); contexto.log(sw.getbuffer().tostring());... LECCION 8 Manteniendo el estado de un cliente Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 14

15 Introducción: Muchas aplicaciones requieren que una serie de requerimientos de un cliente puedan ser asociados y relacionados. Por ejemplo, las aplicaciones de compras de libros en línea conservan el estado de la mercancía colocada en la shopping list de un cliente para ser utilizada en futuros request. Las aplicaciones web deben ser responsables de mantener este estado, llamado una "seccion", debido a que el protocolo http es stateless. Para soportar aplicaciones donde el manejo de estados es necesario, la tecnología de Java Servlet ofrece un API para administrar "sessions" y permite varias políticas para implementar las "sessions". Accediendo a una "session" Las "sessions" son representadas por un objeto HttpSession. Una "session" es accedida empleando el método getsession del objeto request. Este método retorna la "session" actual asociada con éste request, en caso de que el request no tenga "session" una nueva "session" es creada. Como el método getsession podría modificar el encabezado del response (si cookies son empleadas como la política de traza de las "sessions"), este debe ser llamado antes de obtener un PrintWriter o un ServletOutputStream. Asociando atributos con una "session" Los atributos de un objeto pueden ser asociados con una "session" empleando el nombre. Estos atributos son accesibles por cualquier componente web perteneciente al mismo contexto web y se encuentra manejando un request que es parte de la misma "session". Suponga tiene una aplicación para compra de libros en línea y se tiene almacenado el shopping list como un atributo de la "session". Esto permite guardar los datos del shopping list de un request y los mismos se encuentren disponibles para un request a futuro. public class servletlibrosenlinea extends HttpServlet { public void doget (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Obtiene la session y la shoppinglist HttpSession sess = request.getsession(); ShoppingList sl = (ShoppingList)sess. getattribute("lista");... // Determina el precio total de los libros en la lista double total = sl.gettotal(); Notificando objetos que se encuentran asociados con una "session" Dentro de una aplicación pueden ser notificados objetos web context objetos session listener, sobre los eventos producidos durante el ciclo de vida de un servlet. También es possible, notificar la los objetos sobre los eventos relacionados con una session como los siguientes: Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 15

16 Cuando un objeto es añadido a una sección o cuando un objeto es eliminado de una sección. Para recibir esta notificación, el objeto debe implementar la interfaz javax.http.httpsessionbindinglistener. Cuando la sección en la cual se asocia un objeto es activada o desactivada. Una sección será activada o desactivada cuando es movida entre máquinas virtuales o cuando es almacenada en almacenamiento externo (archivos o base de datos) o cuando es cargada a partir de almacenamiento externo. Para recibir esta notificación, el objeto debe implementar la interfaz javax.http.httpsessionbindinglistener. Administración de una sección Como un cliente HTTP no puede notificar la necesidad de finalizar una sección, cada sección tiene un timeout asociado de modo que los recursos puedan ser liberados reclaimed. El período de timeout puede ser accesado a través de los métodos getmaxinactiveinterval o setmaxinactiveinterval del objeto. Por ejemplo, en la aplicación de libros en línea se dispone de un servlet llamado servletfinalizar el cual realiza las operaciones de finalización de la aplicación. La sección se invalida utilizando el método invalidate. En este servlet se debe colocar la operación de cierre de la sección. public class servletfinalizar extends HttpServlet { public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Obtiene la sección HttpSession sess = request.getsession(); // Finaliza la sección sess.invalidate();... Traza de una sección Un contenedor web puede utilizar varias políticas para asociar una sección con un usuario de la aplicación. Todas estas estrategias requieren el pasaje de un parámetro identificador entre el cliente y el servidor. El identificador puede ser mantenido en el lado del cliente como una cookie o el componente web puede incluir el identificador en cada URL que es retornado al cliente. En una aplicación donde se emplean objetos de sección, el programador debe asegurar que la traza de la sección se encuentra habilitada permitiendo a la aplicación sobrescribir los URL cuando el cliente coloque en off las cookies. Esto se efectúa invocando al método encodeurl(url) en todos los URL retornados por un servlet. Este método incluye el id de la sección en el URL únicamente si las cookies están desactivadas, en caso contrario devuelve el URL sin cambios. A continuación se muestra parte del código del método doget del servletmostrarlista de la aplicación de libros en línea, el cual codifica tres URLs al incio de la página de despliegue: Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 16

17 salida.println("<p> <p><strong><a href=\"" + response.encodeurl(request.getcontextpath() + "/catalogo") + "\">" + messages.getstring("continua comprando") + "</a> " + "<a href=\"" + response.encodeurl(request.getcontextpath() + "/salir") + "\">" + messages.getstring("salir de la aplicación") + "</a> " + "<a href=\"" + response.encodeurl(request.getcontextpath() + "/lista?limpiar=limpiar") + "\">" + messages.getstring("limpiar Lista") + "</a></strong>"); El URL para el caso de salir se formaría de la siguiente manera: Si las cookies se encuentran desactivadas, la sección es codificada en el URL. jsessionid=c0o7fszeb1 En caso de estar activadas, el URL simplemente contendría. LECCION 9 Finalizando un Servlet Introducción: Cuando un contenedor de servlet determina que un servlet debería ser removido de los servicios (por ejemplo cuando el contenedor requiere de recursos de memoria o cuando es finalizado shutdown ), el contenedor invoca el método destroy de la interfaz servlet. En este método, se liberan los recursos utilizados por el servlet y cualquier estado persistente es almacenado. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 17

18 public void destroy() { // se coloca el código Java para liberar los recursos Todos los métodos de servicios de un servlet deben ser completados cuando un servlet es removido, El servlet trata de asegurar esta culminación llamando al método destroy sólo después que todos los request de servicio han finalizado o cuando el período de time-out para el servlet finalice (cualquiera condición que ocurra primero). Cuando un servlet contenga request de servicios con largos tiempos de ejecución se recomienda utilizar las siguientes técnicas: Mantener traza de cuantos threads se encuentran ejecutándose concurrentemente con el método de servicio. Ofrecer un shutdown robusto programando el método destroy de modo tal que notifique a estos threads de larga duración sobre un posible shutdown o espere a que estos terminen. Programar los métodos de larga duración de modo de chequear por un shotdwon posible y en caso de ser necesario finalizar la ejecución, liberar los recursos y retornar el control de la ejecución. Realizando traza sobre servicios de request: Para realizar traza a servicios de request se debe agregar un campo en la clase servlet para contabilizar en número de métodos de servicio en ejecución. Este campo debe poseer métodos sincronizados para incrementar, decrementar y devolver el valor del contador. public class ejemploshutdown extends HttpServlet { private int contadorserv = 0;... // Métodos para el contador de servicios // Nótese que son sincronizados, multiples threads protected synchronized void metodoentrarservicio () { contadorserv++; protected synchronized metododejarservicio() { contadorserv--; protected synchronized int numservicios() { return contadorserv; Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 18

19 public void destroy() { // se coloca el código Java para liberar los recursos El método de servicio debe incrementar el contador de servicios cada vez que se ejecuta el servicio y decrementarlo cuando se termina la ejecución. En este caso se debe sobrescribir el método service de la subclase HttpServlet. Este método Nuevo debe llamar a super.service de modo de preservar la funcionalidad de los métodos originalmente descrita en los servicios. protected void service(httpservletrequest req, HttpServletResponse resp) throws ServletException,IOException { metodoentrarservicio(); try { // Ejecuta service del padre, httpservlet super.service(req, resp); finally { metododejarservicio(); Notificando métodos para el shutdown. Para implementar un shutdown robusto, el método destroy no debe liberar cualquier recurso compartido hasta que todos los request de servicio hayan sido completados. Una parte de este proceso consiste en chequear el contador de servicios indicado en el ejemplo anterior. La otra parte consiste en notificar a los métodos de servicio con largas ejecuciones que es tiempo de shutdown. Para realizar esta notificación otro campo es necesario. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 19

20 public class ejemploshutdown extends HttpServlet { private boolean tiemposhutdown;... //Métodos para tiemposhutdown protected synchronized void settiemposhutdown (boolean tsd) { tiemposhutdown = tsd; protected synchronized boolean istiemposhutdown () { return tiemposhutdown; Un ejemplo de un método destroy empleando estos campos para ofrecer un shutdown robusto se muestra a continuación: public void destroy() { /* Chequea si existen métodos de servicio en ejecución /* /* ejecutándose, en caso de ser cierto les notifica */ if (numservicios() > 0) { settiemposhutdown(true); /* Espera a que los servicios terminen*/ while(numservicios() > 0) { try { Thread.sleep(interval); catch (InterruptedException e) { Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 20

21 LECCION 10 Qué es JSP Introducción: La tecnología JSP (Java Server Pages) permite crear contenido Web con componentes estáticos y dinámicos. La tecnología JSP soporta las capacidades dinámicas de la tecnología de Java Servlet, pero además provee una manera natural para el manejo de contenido estático. Las principales características de la tecnología JSP son: Un lenguaje de programación para desarrollar páginas JSP, las cuales son documentos de texto para describir como procesar un request de un cliente para producir un response Constructores para acceder los objetos residentes en el servidor ( server-side objects ) Mecanismos para definir extensiones del lenguaje JSP Adicionalmente, la tecnología JSP ofrece un API utilizado para el desarrollo de contenedores Web. Qué es JSP: Una página JSP es un documento de texto conteniendo dos tipos de contenido: datos estáticos en una plantilla en cualquiera de los siguientes formatos HTML, SVG, WML, and XML; y elementos JSP para expresar el contenido dinámico. Páginas JSP: Una página JSP típica es una mezcla de texto en HTML con elementos JSP. Los documentos HTML poseen una estructura determinada por los tags (o marcadores) empleados, por ejemplo (<head>, <body>, entre otros) y por las instrucciones HTML para crear un formulario (<form>) y un menú (<select>). Las líneas en negrillas en el ejemplo, resaltan los constructores JSP: Directiva (<%@ page... %>), importan las clases en el paquete java.util, y actualizan el tipo de contenido a ser retornado por la página. El elemento <jsp:usebean... /> crea un objeto e inicializa una variable que apunta al objeto. Los scriptlets (<%... %> ). Las expressions (<%=... %>) The jsp:include element sends a request to another page (date.jsp) and includes the response in the response from the calling page. <%@ page import="java.util.*" %> <%@ page contenttype="text/html; charset=iso " %> <html> <head><title>fechas Locales</title></head> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 21

22 <body bgcolor="white"> <jsp:usebean id="locales" scope="application" class="flocales"/> <form name="flocal" action="indice.jsp" method="post"> <b>local:</b> <select name=local> <% String localsel = request.getparameter("local"); Iterator i = locales.obtnomblocales).iterator(); while (i.hasnext()) { String local = (String)i.next(); if (localsel!= null && localsel.equals(local)) { %> <option selected><%=local%></option> <% else { %> <option><%=local%></option> <% %> </select> <input type="submit" name="enviar" value="get Date"> </form> <jsp:include page="fecha.jsp"/> </body> </html> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 22

23 LECCION 11 Ciclo de vida de una página JSP Introducción: Una página JSP atiende a requerimientos request como un servlet (un proveedor de servicios). Por lo tanto, el ciclo de vida y muchas de las capacidades de las páginas JSP (en particular el contenido dinámico) son determinadas por la tecnología de Java Servlet. Cuando un requerimiento request es mapeado con una página JSP, el request es primeramente manejado por un servlet especial que chequea si la página JSP ha sido modificada. Si la página ha sido modificada, la página JSP es traducida en una clase servlet y esta clase es compilada. Durante la fase de desarrollo, una de las ventajas de JSP sobre servlets es que el proceso de construcción es realizado automáticamente. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 23

24 Traducción y Compilación: Durante la fase de traducción, cada tipo de contenido (estático y dinámico) es tratado de manera diferente. Los datos estáticos (plantilla o template) son transformados en código para agrupar los datos en un stream para ser envíados al cliente. Los elementos JSP son tratados de la siguiente manera: : Las directivas son empleadas para controlar como el contenedor Web traduce y ejecuta una página JSP. Los elementos de scripting son insertados en la clase servlet de la página JSP.. Elementos de la forma <jsp:xxx... /> son convertidos en llamadas a métodos de los componentes JavaBeans o invocaciones al API de Java Servlet. Una vez efectuada la traducción, el código es compilado en Java. Tanto las fases de traducción como de compilación pueden ocasionar errores, los cuales son observados solo cuando la página es requerida por primera vez. Si un error ocurre durante la fase de traducción (por ejemplo el traductor consigue un elemento JSP mal escrito), el servidor retornará un ParseException y el código fuente de la clase servlet se construirá vacío o incompleto. La última línea de este archivo indicará el elemento JSP incorrecto. Si un error ocurre cuando la página JSP está siendo compilada (por ejemplo, existe un error de sintaxis en un scriptlet), el servidor retornará un JasperException y un mensaje que indica el nombre del servlet de la página JSP y la línea donde se produjo el error. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 24

25 Una vez que la página JSP ha sido traducida y compilada, el servlet de la página JSP ejecuta el ciclo de vida de un servlet descrito anteriormente: 1. Si la instancia del servlet de la página JSP no existe, el contenedor Web: 1.1 Carga la clase servlet de la página JSP 1.2 Crea una instancia de la clase servlet 1.3 Inicializa la instancia del servlet a través del método jspinit 2. Ejecuta el método _jspservice (un servicio), pasando los objetos request y response Cuando el contenedor de servlet requiera eliminar (remover) el servlet, éste finalizará el servlet empleando el método jspdestroy de la clase servlet. Buffer intermedio: Cuando una página JSP es ejecutada, la salida escrita en el objeto response es almacenada automáticamente en el buffer intermedio. El tamaño del buffer puede ser cambiado con la siguiente directiva.: <%@ page buffer="none xxxkb" %> Un buffer de tamaño grande permite almacenar más contenido antes de ser enviado al cliente, de esta manera la página JSP dispondrá de más tiempo para preparar los códigos de status y los encabezados de las páginas o realizar el forward de otro recurso web. Un buffer pequeño reduce la carga de memoria del servidor y permite al cliente recibir de una manera más rápida la información. Manejando errores: Cualquier número de excepciones pueden dispararse cuando una página JSP es ejecutada. Para especificar que un contenedor web redireccionará el control a un página de errores si una excepción ocurre, se debe incluir la siguiente directiva al inicio de la página JSP: <%@ page errorpage="file_name" %> Ejemplo, <%@ page errorpage= pagerror.jsp %> El comienzo del archivo de manejo de errores, por ejemplo pagerror.jsp, indica que se encuentra sirviendo errores con la siguiente directiva: <%@ page iserrorpage="true false" %> Esta directiva permite que el objeto de la clase javax.servlet.jsp.jspexception se encuentre disponible en la página del error. Por lo tanto, se puede manipular la información explicativa de la causa del error. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 25

26 Inicializando y finalizando una página JSP: El proceso de inicialización de una página JSP puede ser personalizado customize para leer datos de configuración de un archivo o base de datos, inicializar recursos, y ejecutar otras acciones de inicialización. Esta personalización se realiza sobreescribiendo el método jspinit de la interfaz JspPage. LECCION 12 Objetos de JSP Contenido estático: En una página JSP se crea contenido estático simplemente editando el archivo en el formato de texto deseado. El tipo de formato puede ser uno de los siguientes: HTML, WML, y XML. El formato por defecto es HTML. Si se requiere utilizar otro formato distinto a HTML, se puede incluir una directiva de página con el atributo contenttype asignado al tipo de formato al principio de la página JSP. Por ejemplo, si se desea contenido en una página WML (Wireless Markup Language), se necesita incluir la siguiente directiva: <%@ page contenttype="text/vnd.wap.wml"%> Objetos en páginas JSP: En una página JSP se crea contenido dinámico mediante el acceso de objetos del lenguaje de programación Java. Dentro una página JSP se puede acceder una variedad de objetos, incluyendo los componentes de JavaBeans o los enterprise beans. La tecnología JSP automáticamente ofrece un conjunto de objetos (implícitos, pero también pueden ser creados objetos específicos de la aplicación). Objetos específicos de la aplicación: Cuando sea posible, el código la aplicación debería ser encapsulado en objetos de modo que los diseñadores de la página JSP se enfoquen en la capa de presentación y no en la de lógica del negocio. Los objetos pueden ser creados en el lenguaje de Programación Java por programadores expertos en el lenguaje así como en el acceso a Bases de Datos y en otros servicios. Existen cuatro maneras de crear objetos en una página JSP: instancias de clases en la clase servlet de la página JSP son creados en declaraciones y utilizados a través de scriptlets y expresiones. Variables locales en la clase servlet de la página JSP son creados y utilizados a través de scriptlets y expresiones. Atributos del alcance objetos (scope objects) son creados y utilizados a través de scriptlets y expresiones. Componentes Java Beans pueden ser creados y accedidos dentro de elementos JSP. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 26

27 LECCION 13 Variables Las variables en JSP son declaradas en las declaraciones JSP. Una declaración en JSP es empleada para declarar variables y métodos en el lenguaje de scripts de la página. La sintaxis para una declaración es como sigue: <%! Declaración en el lenguaje de scripting %> Cuando el lenguaje de scripting es el lenguaje de programación Java, las variables y los métodos en las declaraciones JSP se convierten en declaraciones en la clase servlet de la página JSP. En el siguiente ejemplo se crea una variable de instancia llamada cat1 de la clase Catalogo. <%! private Catalogo cat1; %> LECCION 14 Objetos Implícitos Los objetos implícitos son creados por automáticamente por el contenedor de los servlets (se llama por lo general contenedor Web) manipulando información particular de un requerimiento (request), página (page) o aplicación (application). Muchos de estos objetos son definidos por la tecnología de Java servlets manejada por JSP. A continuación se muestra una tabla conteniendo estos objetos Objetos Implícitos Variable Clase Descripción application javax.servlet.servletcontext El contexto para las páginas JSP (servlets) y para cualquier componente Web contenido en la misma aplicación. config javax.servlet.servletconfig Información de inicialización para los servlets de las páginas JSP. exception java.lang.throwable Sólo puede ser accedido desde una página de errores. out javax.servlet.jsp.jspwriter El stream de salida. page pagecontext java.lang.object javax.servlet.jsp.pagecontext La instancia del servlet de la página JSP del requerimiento actual. No es muy utilizada por los autores de páginas JSP. El contexto para la página JSP. Provee un API único para manejar varios de los atributos cuyo alcance puede ser compartido. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 27

28 Este API es usado extensivamente cuando son implementados los tag handlers. request response Subclase de javax.servlet.servletrequest Subclase de javax.servlet.servletresponse El objeto request provocando (disparando) la ejecución de la página JSP. La respuesta response enviada al cliente. No es muy utilizada por los autores de páginas JSP. session javax.servlet.http.httpsession El objeto para manejar las secciones de los clientes LECCION 15 Operadores Los Operadores son los constructores de programación más básicos en los lenguajes de programación. En esta sección se utilizará el termino operador o JSP scripting elements (elementos de script) de manera indiferente. Los elementos de script son utilizados para crear y acceder a los objetos, definir los métodos y controlar el flujo de control de las operaciones. En JSP los elementos de Script son los operadores soportados por Java, Java soporta API especiales para el manejo de JSP. Uno de los objetivos de la tecnología de JSP es separar los datos estáticos de las páginas del código necesario para generar el código dinámico. Por lo tanto el uso de los elementos de script es la manera más adecuada de lograr este objetivo. La utilización de los scripts también puede ser sustituida por el empleo de los tags personalizados. La tecnología de JSP permite al contenedor de la página el soporte de cualquier lenguaje de scripting con acceso a objetos Java. Si se desea utilizar otro lenguaje diferente al lenguaje por defecto (Java) se debe especificar la siguiente directiva al principio de la página JSP. <%@ page language="scripting language" %> Los elementos de script son convertidos a instrucciones del lenguaje de programación en la clase representando al servlet de JSP, el programador debe indicar las clases y los paquetes utilizados por la página JSP. Si el lenguaje de programación es Java, se deben importar las clases o los paquetes con la siguiente directiva de página: <%@ page import="nombrepaquete.*, nombreclase" %> Por ejemplo una página.jsp requiere utilizar los paquetes java.util y java.lang. <%@ page import="java.util.*, java.lang.*" %> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 28

29 En JSP también se pueden utilizar expresiones. Una expresión es utilizada para insertar el valor de una expresión del lenguaje de la página JSP (en la mayoría de los casos Java), convertida en un string, en el stream enviado al cliente. En el caso de utilizarse Java, la expresión es transformada en una instrucción convirtiendo el valor de la expresión en un objeto String y los inserta explícitamente en el objeto de salida. La sintaxis de una expresión es como se indica: <%= expressión en el lenguaje de scripting %> El siguiente ejemplo devuelve el número de ítems contenidos en un carro de compras: <%@ page import="java.util.*" %> <%@ page contenttype="text/html; charset=iso " %> <html> <% int num = carro.getnumerodeitems (); if (num > 0) { %> Las expresiones son utilizadas para insertar el valor de la variable num (por ejemplo) en la salida de un stream : <font size="+2"> <%=messages.getstring("contenidoscarro")%> <%=num%> <%=(num==1? <%=messages.getstring("item")%> : <%=messages.getstring("contenidoscarro "))%></font> La tercera modalidad de manejar operadores en JSP es a través de los scriptles. Un scriptlet en JSP es utilizado para contener cualquier fragmento de código válido por el lenguaje utilizado en la página. La sintaxis de un scriptlet es la siguiente: <% %> instrucciones del lenguaje Si el lenguaje de scripting es Java, el scriptlet es transformado en un fragmento de instrucciones en lenguaje Java y es insertado en un método de servicio del servlet de la página JSP. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 29

30 Expresiones INTERPRETADAS A partir de la versión 2.0 de JSP se ofrece un lenguaje para el manejo de expresiones. Un lenguaje de expresiones hace posible y fácil a las aplicaciones acceder a los datos almacenados en los componentes de JavaBeans. Por ejemplo, el lenguaje de expresiones de JSP permite al desarrollador de una página utilizar un bean con una simple sintaxis como esta ${nombre para una variable o ${nombre.cuadro.alto para una propiedad anidada. El atributo chequeo del siguiente tag condicional es provisto con una expresión EL que compara el número de ítems de un carro de compra.: <c:if chequeo="${sessionscope.carro.numerodeitems > 0">... </c:if> El evaluador de expresiones de JSP es el responsable de manejar las expresiones EL, las cuales puede incluir literales encerrados en caracteres ${. Ejemplo: <c:if chequeo="${bean1.campo1 < 3" >... </c:if> LECCION 16 Funciones Las funciones en los lenguajes de programación orientados por objetos se corresponden con los métodos. La tecnología de JSP soporta totalmente llamadas a métodos de clases Java disponible (reutilización). En JSP se utilizan los tags de declaración <%!.. %> para definir variables y métodos. <%! private librossmc libro; // se utiliza el objeto libro de una clase // librossmc String autor; autor = libro.getautor(); // llamada al método del objeto libro... public void jspinit() { Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 30

31 ... public void jspdestroy() {... %> LECCION 17 Tags personalizados Los tags personalizados son utilizados para extender las capacidades de JSP. En JSP se pueden realizar una variedad amplia de tareas de procesamiento dinámico como el acceso a bases de datos, la utilización de servicios empresariales como correo electrónico y el manejo del control de flujo a través de componentes Java Beans en conjunto con scriptles. Una de las desventajas de los scriptlets, es la dificultad agregada a las páginas JSP si no está bien diseñado, trayendo problemas en el mantenimiento. La tecnología JSP ofrece un mecanismo llamados tags personalizados como alternativa. Los tags personalizados permiten encapsular funcionalidad dinámica en los objetos accedidos a través de las extensiones del lenguaje JSP. Los tags personalizados ofrecen los beneficios de implementar un nivel de componentización sobre las páginas JSP. El siguiente ejemplo muestra el recorrido de todos los items contenidos en un carro de compra (elemento): <% Iterator i = carro.getitems().iterator(); while (i.hasnext()) { Elemento item = (Elemento)i.next();... %> <tr> <td align="right" bgcolor="#ffffff"> <%=item.getcantidad()%> </td>... <% %> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 31

32 Se puede emplear un tag personalizado llamado iterate el cual elimina todo el código anterior interactuando con la vaiable item custom tag eliminates the code logic and manages the scripting variable item, la cual maneja todos los elmemtos del carro de compra: <logic:iterate id="item" collection="<%=carro.getitems()%>"> <tr> <td align="right" bgcolor="#ffffff"> <%=item.getcantidad()%> </td>... </logic:iterate> Los tags personalizados son empaquetados y distribuidos en una utilidad llamada librerías de tags (tag library). La sintaxis de los tags personalizados es la misma utilizada en los elementos JSP. El nombre utilizado para estos tags es <prefijo:tag>. En el caso de los tags personalizados, el prefijo es definido por el programador de la librería de tags. LECCION 18 Incluir Applets Se pueden incluir applets o cualquier componente JavaBean en una página JSP utilizando el elemento jsp:plugin. Este elemento genera código HTML conteniendo los constructores apropiados (los cuales son dependientes del navegador utilizado en el ciente -- <object> o <embed> -- ) pudiendo ser requerido descargar en le cliente el software para Java Plug-in. La sintaxis del elemento jsp:plugin es la siguiente: <jsp:plugin type="bean applet" code="codigoobjeto" codebase="codigoobjetobase" { align="alineacion" { archive="listaarchivost" { height="altura" { hspace="espaciohorizontal" { jreversion="versionjre" { name="nombrecomponente" { vspace="espaciovertical" { width="ancho" { nspluginurl="url" { iepluginurl="url" > { <jsp:params> { <jsp:param name="nombreparametro" value="valorparametro" /> + </jsp:params> { <jsp:fallback> texto_arbitrario </jsp:fallback> </jsp:plugin> El tag jsp:plugin es reemplazado por un tag <object> o <embed> dependiendo del cliente efectuando el request. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 32

33 Los atributos del tag jsp:plugin proveen los datos de configuración necesarios para la presentación del elemento así como la versión del plug-in requerido.. Los atributos nspluginurl y iepluginurl especifican el URL de donde el plug-in puede ser descargado. El elemento jsp:param especifica los parámetros del applet o del componente JavaBeans. El elemento jsp:fallback indica el contenido a ser utilizado por el navegador en el cliente si el plug-in no puede ser iniciado (porque o <object> o <embed> no es soportado por el cliente o porque existe otro problema). Si el plug-in puede iniciar pero el applet o el componente JavaBeans no puede ser hallado o arrancado, un mensaje específico del plug-in será presentado nuevamente al usuario indicando una excepción del tipo ClassNotFoundException. A continuación se muestra un ejemplo de la inclusión de un applet llamado playa. <jsp:plugin type="applet" code="playa.class" codebase="/" jreversion="1.3" align="center" height="25" width="300" nspluginurl=" /plugin-install.html" iepluginurl=" /jinstall-130_01-win32.cab#version=1,3,0,1" > <jsp:params> <jsp:param name="language" value="<%=request.getlocale().getlanguage()%>" /> <jsp:param name="country" value="<%=request.getlocale().getcountry()%>" /> <jsp:param name="bgcolor" value="ffffff" /> <jsp:param name="fgcolor" value="cc0066" /> </jsp:params> <jsp:fallback> <p>unable to start plugin.</p> </jsp:fallback> </jsp:plugin> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 33

34 LECCION 19 Estableciendo propiedades para grupos de JSPs Es posible especificar un conjunto de propiedades para un grupo de páginas de JSP, como: Evaluación del lenguaje de expresiones Tratamiento de los elementos de scripting Formato de codificación de las páginas Inclusión automática de los prelude y coda Un grupo de propiedades de JSP es definido indicando el nombre del grupo y especificando uno o más patrones URL; todas las propiedades en el grupo se aplican a todos los recursos que hacen match con los patrones URL. Si un recurso hace match en más de un grupo, el patrón más específico (especializado) aplica. Para definir un grupo de propiedades, se añade el elemento jsp-property-group con un elemento a jsp-config al descriptor de la herramienta de deployment de la aplicación Web. A continuación se muestra un ejemplo. <jsp-config> <jsp-property-group> <display-name>carrocompras</display-name> <url-pattern>/*.jsp</url-pattern> <el-ignored>false</el-ignored> <scripting-invalid>false</scripting-invalid> <is-xml>false</is-xml> <include-prelude>/template/prelude.jspf</include-prelude> <include-coda>/template/coda.jspf</include-coda> </jsp-property-group> </jsp-config> Desactivando la evaluación EL Cada página JSP tiene un modo defecto para la evaluación de las expresiones EL. El valor defecto varia dependiendo del descriptor del deployment para las aplicaciones Web. El modo defecto para las páginas producidas por Servlet 2.3 o anteriores es ignorar las expresiones EL; esto permite soportar compatibilidad hacia atrás. En el caso de Servlet 2.4,el defecto es evaluar las expresiones EL. Para los archivos manejando tags personalizados es requerido evaluar estas expresiones. Se puede sobreeescribir el defecto del atributo iselignored para las páginas JSP y para los tags personalizados en los archiivos conteniendo tags. Formatos de codificación de las páginas Page Encodings Se puede modificar el formato de codificación para un grupo de páginas JSP utilizando el elemento jspproperty-group para el descriptor del deployment para la aplicación web. Los valores válidos son los mismos utilizados en el atributo pageencoding de la directiva page. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 34

35 Definiendo inclusión automática Se puede implícitamente incluir preludes y codas para un grupo de páginas JSP agregando los elementos include-prelude e include-coda respectivamente dentro del elemento jsp-property-group. Sus valores son paths relativos al contexto los cuales deben corresponder con elementos en la aplicación Web. Cuando los elementos, se encuentran presentes, los paths indicados son incluidos automáticamente (como si se utilizara la diretiva include) al principio de cada página JSP en el grupo de propiedades. LECCION 20 Standard Tag Library (STL) La librería de tags estándar para página de Java Server The JavaServer Pages Standard Tag Library (JSTL) encapsula la funcionalidad común de muchas aplicaciones WEB en tags simples. JSTL soporta tags del tipo estructura como iteración y condicionales, tags para la manipulación de documentos XML, tags para el soporte de internacionalización y tags para la interacción con SQL. JSTL, además ofrece una plataforma para realizar la integración de los tags existentes personalizados con los tags de JSTL. Librerías de Tags JSTL versión 1.1 se compone de las siguientes librerías JSTL core JSTL 1.1 librería básica JSTL fmt JSTL 1.1 librería de formateo JSTL sql JSTL 1.1 librería SQL JSTL XML JSTL 1.1 librería XML JSTL functions JSTL 1.1 librería de funciones LECCION 21 Core Tags Librería JSTL core Referencia Sintaxis Estándar: <%@ taglib prefix="c" uri=" %> Sintaxis XML: <elemento xmlns:c=" /> JSTL 1.1 librería core Información Librería Nombre JSTL core Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 35

36 Versión 1.1 Nombre Corto URI C Resumen tags disponibles catch Captura cualquier Throwable (excepción) producida dentro del cuerpo del tag pudiendo mostrar la información. choose Tag condicional simple utilizado para establecer un contexto para operaciones condicionales mutuamente excluyentes, marcado con <when> y <otherwise> if Tag condicional simple, el cual ejecuta su cuerpo si la condición del tag se cumple (es true) y opcionalmente provee una variable lógica de scripting representando la evaluación de la condición import Obtiene un URL absoluto o relativo y muestra su contenido en la página, en un String var, o en un Lector (Reader) varreader. foreach Tag básico de iteración, soporta muchos tipos de colecciones diferentes y soporta subconjuntos y otras funcionalidades fortokens Itera sobre tokens, separados por los delimitadores indicados out Idéntico a <%=... >, pero aplica para expresiones. otherwise Subtag de <choose> siguiendo los tags <when> y se ejecuta únicamente si todas las condiciones previas son evaluadas como 'false' param Agrega un parámetro a un URL de un tag de import. redirect Redirecciona a un nuevo URL. remove Remueve una variable de un contexto (de un contexto en particular, si es indicado). Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 36

37 set Actualiza el resultado de la evaluación de una expresión en un contexto. url Crea un URL con parámetros opcionales. when Subtag de <choose> que indluye su cuerpo si es evaluado como 'true' Validación de la Librería org.apache.taglibs.standard.tlv.jstlcoretlv Soporta las funciones de validación para los tags core de JSTL. Tag <c:catch> La acción <c:catch> permite a los desarrolladores de las páginas manejar los errores producidos de una manera uniforme, y permite programar un manejador de errores. La excepción producida es almacenada en la variable del contexto (scoped variable) identificada por var. Si no se produce una excepción, la variable identificada por var es removida si existe. Si no se especifica var, la excepción es capturada pero no es salvada. Sintaxis: <c:catch [var="varname"]> // acciones a proteger, como si fuera un bloque de try </c:catch> Ejemplo: <c:catch var="error"> // cualquier error producido en los tags escritos en este bloque se almacenará // en la variable error </c:catch> Tag <c:choose>, <c:when>, <c:otherwise> El tag <c:choose> trabaja como la instrucción switch de Java permitiendo escoger entre múltiples alternativas. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 37

38 Las instrucciones representado las alternativas (similar a los case de Java) se colocan dentro de tags <c:when> anidados dentro del tag <c:choose>. La instrucción rerpesentando la alternativa por defecto (default de Java) se especifica con el tag <c:otherwise> el cual es opcional, pero so se coloca debe ser la última acción dentro del tag <c:choose>. Sintaxis: <c:choose> // cuerpo del tag (contiene subtags <when> y <otherwise>) </c:choose> <c:when test="condicion"> // cuerpo del tag </c:when <c:otherwise> // cuerpo del tag </c:otherwise> Ejemplo: <c:choose> <c:when test="${param.inicio > 0"> <a href="listaemp.jsp?inicio=<c:out value="${param.inicio - noderegistros"/>">pagina Anterior </a> </c:when> <c:otherwise> Pagina Anteriors </c:otherwise> </c:choose> Tag <c:if> El tag <c:if> trabaja como la instrucción if simple de Java ejecutando el cuerpo del tag si se cumple la condición. Sintaxis 1: Sin cuerpo del contenido: <c:if test="condicion" Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 38

39 var="nombrevar" [scope="{page request session application"]/> Sintaxis 2: Con cuerpo del contenido: <c:if test="condicion" </c:if> [var=" nombrevar "] [scope="{page request session application"]> // código del contenido, JSP Ejemplo <c:if test="${usuario.contadorvisitas == 1"> </c:if> Esta es su primera visita. Bienvenido al sitio Web.! Tag <c:import> El tag <c:import> es similar al tag <jsp:import>, pero es más poderoso. Por ejemplo, el tag <jsp:import> generalmente sólo importa recursos del mismo contenedor de servlets. El tag <c:import> puede importar recursos del mismo o de otro servidor o de otro contenedor. El tag <jsp:import> inserta automáticamente el contenido importado en la página JSP. Aunque el tag <c:import> puede insertar el contenido de manera automática, puede también retornar el contenido en un STRING o en un READER. El único atributo requerido por el tag <c:import> tag es url, este atributo especifica el URL a ser importado. Este URL puede ser absoluto, relativo o relativo al contexto. Sintaxis 1: Contenido del recurso importado automáticamente en la página o exportado como un objeto String: <c:import url="url" [context="contexto"] [var="nombrevar"] [scope="{page request session application"] [charencoding="codificacioncaracteres"]> </c:import> // cuerpo del tag opcional, conteniendo subtags <c:param> Sintaxis2: Contenido del recurso exportado como un objeto Reader <c:import url="url" [context="contexto"] varreader="nombrevarreader" [charencoding="codificacioncaracteres"]> </c:import> // cuerpo del tag donde varreader is consumido por otra acción Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 39

40 Ejemplos: <c:import var="data" url="/data.xml"/> <c:out value="${data/> es equivalent a: <c:import url="/data.xml"/> Uso de reader: <c:import url="/data.xml" varreader="datareader" scope="session"/> Tag <c: foreach > La acción <c:foreach> repite el contenido del cuerpo del tag para todos los objetos contenidos en la colección especificada en el atributo items. Por ejemplo, el siguiente código crea una tabla con una columna mostrando todos los elementos de la colección clientes: <table> <c:foreach var="cliente" items="${clientes"> <tr><td>${cliente</td></tr> </c:foreach> </table> Muchas de los tipos de colecciones provistos por Java son soportados por el tag <c:foreach>, incluyendo todas las implementaciones de java.util.collection (List, LinkedList, ArrayList, Vector, Stack, Set), y java.util.map (includes HashMap, Hashtable, Properties, Provider, Attributes). Arreglos de objetos así como arreglos de tipos primitivos (ejemplo int) también son soportados. Para arreglos del tipo primitivo, el item actual de la iteración es automáticamente colocado en la clase wrapper (Integer para int, Float para float, etc.). Si el atributo item es del tipo java.util.map, el item actual de la colleción es del tipo java.util.map.entry, la cual tiene dos propiedades: key la clave de almacenamiento del item en el mapa asociativo; value el valor correspondiente a la clave. Sintaxis 1: Iteración sobre una colección de objetos: <c:foreach [var="nombrevar"] items="collecion" [varstatus="nombrevarstatus"] [begin="inicio"] [end="fin"] [step="paso"]> </c:foreach> // contenido del tag (JSP) Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 40

41 Sintaxis 2: Iteración sobre un número fijo de veces: <c:foreach [var="nombrevar"] [varstatus="nombrevarstatus"] begin="inicio" end="fin" [step="paso"]> </c:foreach> // contenido del tag (JSP) Si se especifica el atributo, begin, este debe ser >= 0. El atributo end debe ser mayor que el atributo begin, para ejecutar el lazo. En caso de especificarse, step, este debe ser >= 1. Si el atributo items es null, este es tratado como una colección vacía. Ejemplos: <c:foreach var="i" start="1" end="10"> Item <c:out value="${i/><p> </c:foreach> <c:foreach var="emp" items="empleados"> Empleado: <c:out value="${emp.nombre"/> </c:foreach> Tag <c: fortokens > <c:fortokens> itera sobre tokens, separados por los delimitadores indicados. El atributo items especifica el string a tokenize y el atributo delims indica la lista de delimitadores (trabaja de manera similar a java.util.stringtokenizer). Syntax: <c:fortokens items="cadenaoftokens" delims="delimitadores" [var="nombrevar"] [varstatus=" nombrevarstatus"] [begin="inicio"] [end="fin"] [step="paso"]> </c:fortokens> // contenido del cuerpo del tag Ejemplo: Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 41

42 <c:fortokens items="padre,hijo,espiritusanto" delimiters="," var="santisimatrinidad"> <c:out value="${santisimatrinidad/><p> </c:fortokens> Tag <c: out > La acción <c:out> provee una funcionalidad similar a las expresiones JSP <%= expresión-script %> or ${expresion-el. Por ejemplo: Usted ha comprado <c:out value="${sessionscope.usuario.numprod"/> productos. Por defecto, <c:out> convierte los caracteres <, >, ', ", & a su correspondiente código ( entity code, ejemplo < es convertido a <). Si estos caracteres no son convertidos, la página no es mostrada adecuadamente en el navegador. La acción <c:out> también soporta la noción de valores DEFAULT para los casos donde el valor de una expresión EL es null. En el siguiente ejemplo, el valor "desconocido" será mostrado si la propiedad ciudad no es accesible. <c:out value="${cliente.direccion.ciudad" default="desconocido"/> La segunda opción es desplegar el valor como el contenido del tag: <c:out value="${ cliente.direccion.ciudad "> Ciudad desconocida </c:out> Sintaxis: Tag sin cuerpo: <c:out value="valor" [escapexml="{true false"] [default="valordefecto"] /> Con cuerpo (contiene valor por defecto): Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 42

43 <c:out value="value" [escapexml="{true false"]> </c:out> valordefecto Tag <c: redirect > Este tag redirecciona un HTTP a un cliente (navegador web). Sintaxis 1: Tag sin cuerpo: <c:redirect url="valor" [context="contexto"] /> Sintaxis 2: Tag con cuerpo, se especifican los parámetros: <c:redirect url="valor" [context="contexto"]> <c:param> subtags </c:redirect> Tag <c: remove > Este tag remueve una variable en un contexto. Si el atributo scope no es especificado, la variable es removida dependiendo de PageContext.removeAttribute(nombreVar). En caso de ser especificado, la variable es removida de acuerdo a PageContext.removeAttribute(nombreVar, scope). Sintaxis: <c:remove var ="nombrevar" [scope="{page request session application"] /> Ejemplo: <c:remove var ="carrocompras" scope="session" /> Tag <c: set > El tag <c:set> es utilizado para asignar el valor de una variable JSP (scoped): Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 43

44 <c:set var="nombrevar" value="valor"/> En el ejemplo siguiente, el tag asigna el valor de la variable var1 con la salida de un tag personal:upd : <c:set var="var1"> <personal:upd>valor1</personal:upd> </c:set> <personal:untag var1="${var1"/> <c:set> puede ser utilizada para actualizar la propiedad de un objeto JavaBeans, o para agregar o actualizar un elemento en un objeto java.util.map. Por ejemplo: <! actualiza la propiedad de un JavaBeans --> <c:set target="${cliente.direccion" property="ciudad" value="${ciudad"/> <! trabajar con un objeto Map --> <c:set target="${preferencias" property="color" value="${param.color"/> Sintaxis 1: Asigna el valor de una variable con el atributo value: <c:set value="valor" var="nombrevar" [scope= {page request session application ]/> Sintaxis 2: Asigna el valor de una variable con el cuerpo del tag: <c:set var="nombrevar" [scope="{page request session application"]> cuerpo del tag </c:set> Sintaxis 3: Asigna la propiedad de un objeto utilizando el atributo value: <c:set value="valor" target="objeto" property="nombrepropiedad"/> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 44

45 Sintaxis 4: Asigna la propiedad de un objeto utilizando el cuerpo del tag : <c:set target="objeto" property="nombrepropiedad"> </c:set> cuerpo del tag Tag <c: url > y Tag <c: param > El tag <c:url> formatea un URL en un string y lo almacena en una variable. El tag <c:url> realiza la sobreescitura del URL cuando es necesario. El atributo var especifica la variable donde se almacena el URL formateado. El atributo opcional scope define el alcance de la variable (page es el valor defecto). El atributo value contiene el URL a a formatear. Sintaxis 1: Tag sin cuerpo: <c:url value="valor" [context="contexto"] [var="nombrevar"] [scope="{page request session application"]/> Sintaxis 2: Tag con cuerpo especificando los parámetros query string: <c:url value="valor" [context="contexto"] [var="nombrevar"] [scope="{page request session application"]> // a coontiuación se indican los parámetros <c:param> subtags </c:url> Como medida de seguridad, el URL solo se reescribe en el caso de URL relativos. <c:param name="nombre" value="valor" /> <c:param name="nombre"> </c:param> valor del parámetro Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 45

46 Ejemplos: <c:url var="urltraza" value="/traza.html"/> <c:url var=" URLtraza" value="/traza.jsp" context="/traza"/> <c:url value="/traza.jsp" var="urltraza"> <c:param name="idtraza" value="1234"/> </c:url> <c:param name="tiporeporte" value="resumen"/> LECCION 22 XML Tags Librería JSTL XML Sintaxis Estándar: taglib prefix="x" uri=" %> Sintaxis XML: <elemento xmlns:x=" /> JSTL 1.1 librería XML Información Librería Nombre JSTL XML Versión 1.1 Nombre Corto URI x Resumen tags disponibles choose Tag condicional simple utilizado para establecer un contexto para operaciones condicionales mutuamente excluyentes, marcado con <when> y <otherwise> out Como <%=... >, pero para espresiones XPath. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 46

47 if Tag condicional XML simple, el cual ejecuta su cuerpo si la expresión XPath del tag se cumple (es true) foreach Tag de iteración XML. otherwise Subtag de <choose> siguiendo los tags <when> y se ejecuta únicamente si todas las condiciones previas son evaluadas como 'false' param Agrega un parámetro para contener tags transformados ('transform' tag's Transformer) parse Realiza el parsing de un contenido XML a partir de un atributo 'source' o un atributo 'body' set Almacena el resultado de una evaluación de una expresión XPath en un 'scope' transform Realiza una transforamción tomando como fuente un documento XML y una hoja de estilos XSLT when Subtag de <choose> que incluye su cuerpo si es evaluado como 'true' Validación de la librería de tags org.apache.taglibs.standard.tlv.jstlxmltlv Soporta las funciones de validación para los tags XML de JSTL. Un aspecto clave para trabajar con documentos XML es la capacidad ofrecida por los lenguajes de programación para acceder el contenido. XPath, una recomendación W3C desde 1999, provee una notación para especificar y seleccionar partes de un documento XML. En los tags XML de JSTL, las expresiones XPath especificadas utilizando el atributo select son utilizadas para seleccionar porciones de los streams de datos XML. Notar que XPath es utilizado como un lenguaje de expresiones locales para el atributo select. Las acciones para realizar el control de flujo en los tags XML son los mismo de los tags Core discutidos anteriormente. Estos incluyen <x:if>, <x:choose>, <x:when>, <x:otherwise>, y <x:foreach>. La principal diferencia es que en los tags de XML se utiliza el atributo select para especificar las expresiones XPath. A continuación se muestra un ejemplo: <x:foreach select="$salida/portfafolio/opciones"> <x:out select="precio"/> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 47

48 </x:foreach> Los tags <x:out> y <x:set> son equivalentes a los tags correspondientes en la librería Core, excepto por el atruibuto select de XPath. Por ejemplo: <x:set var="micorbata" select="$/moda/hombres/corbata[@id=$param:id]"/> <x:out select="$micorbata/mfg"/> <x:out select="$micorbata/descripcion"/> EN DESCUENTO POR HOY <x:out select="$micorbata@precio/>!!! El primer paso al utilizar tags XML es abrir y realizar el parsing de los documentos XML deseados. Esto se realiza con el tag <x:parse>. Por ejemplo: <c:import url="/web-inf/itemsexpeciales.xml" var="xmldoc" /> <x:parse xml="${xmldoc" var="docespecial" scope="application" /> Los tags de transform realizan una transformación XSLT sobre un documento XML especificado (o en el contenido del cuerpo del tag si el atributo xml no es especificado). El resultado es almacenado en el atributo result attribute, o en output si el atributo es omitido del tag. Por ejemplo: <c:import url="/web-inf/convert.xslt" var="xsltdoc" /> <x:transform xml="${xmldoc" xslt="${xsltdoc" /> El ejemplo anterior realiza una transformación XSLT definida en el archivo convert.xslt sobre el documento XML especificado en el atributo xmldoc. El tag <x:param> se utiliza para especificar los parámetros dentro del tag <x:transform>. A continuación se resume la sintaxis de x:transform <x:transform xml="expresion" xslt="expresion" var="nombrevar" scope="alcance" xmlsystemid="expresion" xsltsystemid="expresion"> <x:param name="expresion" value="expresion"/>... </x:transform> LECCION 23 Tags de Internacionalización Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 48

49 Librería JSTL FMT Sintaxis estándar: taglib prefix="fmt" uri=" %> Sintaxis XML: <elemento xmlns:fmt=" /> JSTL 1.1 librería de formateo i18n-capable Información Librería Nombre JSTL fmt Versión 1.1 Nombre Corto URI Fmt Resumen tags disponibles requestencoding Actualiza la codificación de los caracteres del requerimiento setlocale Almacena la información indicada en el parámetro en la variable representando la información local timezone Especifica el time zone para cualquier formato de tiempo o las acciones de parsing anidadas settimezone Almacena el time zone indicado en el parámetro en la variable representando el time zone actual bundle Carga un grupo de recursos bundle para ser utilizado por el cuerpo del tag. setbundle Carga un grupo de recursos bundle y lo almacena en una variable o en la variable de configuración de los bundle Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 49

50 message Mapea las claves de un mensaje localizado y realiza reemplazo parametrizado param Suministra un argumento para el reemplazo parametrizado en un tag <message> formatnumber Formatea un valor numérico como un número, currency, o porcentaje parsenumber Realiza el parsing de la representación string de un número, currency o porcentaje. formatdate Formatea una fecha / hora utilizando los estilos suministrados y los patrones parsedate Realiza el parsing de la representación string de una fecha /hora. Validación de la librería de Tags org.apache.taglibs.standard.tlv.jstlfmttlv Provee las características de validación para los tags JSTL. Los tags de internacionalización los podemos clasificar en la siguiente tabla: Tags de Internalización Area Función Tags Prefijo setlocale Manejo de Locale requestencoding bundle I18n Manejo de mensajes message param fmt setbundle Formateo de Numeros y Fechas formatnumber Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 50

51 formatdate parsedate parsenumber settimezone timezone Los tags de JSTL i18n utilizan un contexto de localización para localizar los datos. Un contexto de localización contiene una instancia de locale y de resource bundle (grupo de recursos). Para especificar el contexto de localización a tiempo de deployment, se define el parámetro de contexto javax.servlet.jsp.jstl.fmt.localizationcontext, cuyo valor puede ser un objeto javax.servlet.jsp.jstl.fmt.localizationcontext o un String. Un parámetro de contexto del tipo String es interpretado como un grupo de recursos. Tag <fmt:message> Es utilizado para producir la salida de los string localizados. El siguiente tag se utiliza para invitar a los usuarios a escoger productos de un catálogo. <h3><fmt:message key="choose"/></h3> Tag <fmt:formatnumber> Es utilizado para producir la salida de los numeros localizados. El siguiente tag se utiliza para desplegar el precio de una manera localizada de un producto. <fmt:formatnumber value="${producto.precio" type="currency"/> El tag formatnumber no maneja tasas de cambios entre monedas. Este tag formatea currencies pero no las convierte. Tag <fmt:formatdate> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 51

52 Es utilizado para producir la salida de las fechas de manera formateada de acuerdo con los timezone. <jsp:usebean id="now" class="java.util.date" /> <jsp:setproperty name="now" property="time" value="${now.time " /> <fmt:message key="fechaenvio"/> <fmt:formatdate value="${now" type="date" datestyle="full"/>. LECCION 24 SQL Tags Librería JSTL SQL Sintaxis Estándar: <%@ taglib prefix="sql" uri=" %> Sintaxis XML: <elemento xmlns:sql=" /> JSTL 1.1 librería sql Información Librería Nombre JSTL sql Version 1.1 Nombre Corto URI sql Resumen tags disponibles transaction Soporta transacciones en Bases de Datos. Todas las instrucciones se tratan como una sola instrucción. Los elementos del tag comparten la misma conexión. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 52

53 query Ejecuta el comando SQL definido en el cuerpo del tag o a través del atributo sql. update Ejecuta la actualización de SQL definido en el cuerpo del tag o a través del atributo sql. param Asigna un parámetro en una instrucción SQL a una valor específico. Asigna un parámetro en una instrucción SQL a una valor del tipo dateparam java.util.date. setdatasource Crea una fuente de datos DataSource a ser utilizado en un prototipo. Validación de la librería de Tags org.apache.taglibs.standard.tlv.jstlsqltlv Provee características de validación para los tags de JSTL Los tags JSTL de SQL para acceder a las bases de datos están diseñados para realizar prototipos rápidos y aplicaciones simples. Para aplicaciones grandes a ser colocadas en producción, las operaciones de base de datos son encapsuladas normalmente en componentes JavaBeans. Tags SQL Area Funcion Tags Prefijo setdatasource query Database SQL dateparam param transaction sql update dateparam param Tag <sql:setdatasource> Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 53

54 El tag setdatasource permite manejar la información de la fuente de datos para la base de datos. Se puede proveer un nombre de JNDI o parámetros de un manejador de Driver para asignar la información de la fuente de datos: <sql:setdatasource datasource="jdbc/bdlibros" /> Tag <sql:query> El tag ejecuta un comando SQL retornando los registros en un result set. Para consultas parametrizadas en comandos SQL, se utilizan tags param anidados dentro del tag query. <c:set var="cod" value="${param.add"/> <sql:query var="productos" > select * from PUBLIC.productos where id =? <sql:param value="${cod" /> </sql:query> El tag <sql:update> es utilizado para actualizar un registro de la base de datos. El tag <sql:transaction> es utilizado para atomizar las operaciones de base de datos. LECCION 25 Tags definidas por el usuario Tags personalizados Un tag personalizado es un elemento definido por el usuario en JSP. Cuando una página JSP conteniendo un tag personalizado es traducida a un servlet, el tag es convertido en operaciones de un objeto llamado tag handler. El contenedor de web invoca estas operaciones cuando el servlet asociado a una página JSP es ejecutado. Los tags personalizados ofrecen un conjunto de características. Estos pueden Ser configurados a través de atributos pasados desde la página dónde se realiza el llamado. Acceder a todos los objetos disponibles a las páginas JSP. Modificar la respuesta generada por la página donde se realiza el llamado. Realizar comunicación entre componentes de Java utilizando tags.. Anidar tags uno dentro de otros. Definiendo Tags Para definir un tag se requiere: Desarrollar la clase tag handler y las clases helper para el tag Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 54

55 Declarar el tag en el descriptor de las librerías de tags A continuación se resumen los métodos de la clase Tag Handler Métodos de la clase Tag Handler Tipo de Tag Handler Simple Attributes Body, evaluación sin interacción Body, evaluación iterativa Métodos dostarttag, doendtag, release dostarttag, doendtag, set/getattribute1...n, release dostarttag, doendtag, release dostarttag, doafterbody, doendtag, release Body, interacción dostarttag, doendtag, release, doinitbody, doafterbody, release Un descriptor de la librería de tags tag library descriptor (TLD) es un documento XML describiendo la librería de tags. Un TLD contiene información referente a la librería en su totalidad e información acerca de cada tag contenido en la librería. Los nombres de los archivos TLD deben tener la extensión.tld. Los archivos TLD son almacenados en el directorio WEB-INF o en un subdirectorio de este. Un TLD debe comenzar con un documento XML prólogo especificando la versión de XML y el documento de definición de tipos (DTD). Ejemplo <?xml version="1.0" encoding="iso "?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" " A continuación se indican los subelementos del TLD Subelmentos de taglib Elemento Descripción tlib-version Versión de la librería de tags Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 55

56 jsp-version short-name uri display-name Especificación de la versión de JSP requerida por la librería Nombre opcional utilizado por los desarrolladores de página JSP para referires al tag URI identificando la librería Nombre opcional a ser utilizado por las herramientas small-icon Icono pequeño opcional a ser utilizado por las herramientas large-icon Icono grande opcional a ser utilizado por las herramientas description Información opcional conteniendo detalles del tag listener tag Utilizando Tags Para utilizar una librería de tags en una página JSP se debe incluir la directiva taglib antes de utilizar cualquier tag personalizado: <%@ taglib uri="/web-inf/ejemplo-tags-personalizados.tld" prefix="etp" %> Utilizando Tags Los tags personalizados de JSP son escritos utilizando sintaxis XML. Comprenden un inicio de tag, un fin de tag y posiblemente un cuerpo: <etp:tag> cuerpo </etp:tag> Un tag personalizado sin cuerpo puede ser expresado como: Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 56

57 <etp:tag /> Un tag simple sin contener cuerpo y atributos se escribe: <etp:simple /> LECCION 26 Resumen sintaxis JSP (Scripts, Scriptles, Expresiones ) Scripts Los Scripts JSP permiten insertar código java en el servlet resultante de la compilacion de la pagina JSP. Existen tres maneras: 1. Expresiones que se evalúan y se insertan en la página HTML producida, <%= expresion %> 2. Scriptlets: Es código java introducido en el método service del servlet, <% codigo %> 3. Declaraciones: Es la manera de declarar variables globales para todo el servlet, <%! codigo> Expresiones: Se utilizan para enviar valores directamente a la pagina web (HTML) resultante de la JSP, <%= expresion %>, la expresion es ejecutada, se convierte a una cadena de caracteres y es insertada en la pagina. A través de las expresiones se pueden utilizar gran cantidad de variables predefinidas, las más utilizadas son: - request, de la clase HttpServletRequest - response, de la clase HttpServletResponse - session, de la clase HttpSession que esta asociada al request, al trabajar con secciones - out, se trata de una clase PrintWriter usada para imprimir directamente en la pagina resultante. Sintaxis del JSP: Introducción y expresiones En las páginas JSP hay 3 tipos de código insertados en las páginas: Scripts: Es código java formando parte del servlet resultante de la compilación de la página Directivas: Sirven para controlar la estructura del servlet Acciones: Permiten el acceso a componentes Java Beans y el control del comportamiento del motor JSP. En la siguiente tablas se resume la sintaxis de JSP: Elemento JSP Sintaxis Interpretación Notas Expresión JSP Scriptlet JSP Declaración JSP <%= expression %> <% code %> <%! Code %> La Expresión es evaluada y situada en la salida. El código se inserta en el método service. El código se inserta en el cuerpo de la clase del servlet, fuera del método service. El equivalente XML es <jsp:expression> expression </jsp:expression>. Las variables predefinidas son request, response, out, session, application, config, y pagecontext. El equivalente XML es: <jsp:scriptlet> code </jsp:scriptlet>. El equivalente XML es: <jsp:declaration> code </jsp:declaration>. Directiva page <%@ page att="val" %> Dirige al motor El equivalente XML es: Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 57

58 JSP servlet sobre la configuración general. <jsp:directive.page att="val"\>. Los atributos legales son (con los valores por defecto en negrillas): import="package.class" contenttype="mime-type" isthreadsafe="true false" session="true false" buffer="sizekb none" autoflush="true false" extends="package.class" info="message" errorpage="url" iserrorpage="true false" language="java" Directiva include JSP Comentario JSP Acción jsp:include include file="url" %> <%-- comment --%> <jsp:include page="relative URL" flush="true"/> Un fichero del sistema local se incluirá cuando la página se traduzca a un Servlet. Comentario ignorado cuando se traduce la página JSP en un servlet. Incluye un fichero en el momento en que la página es solicitada. El equivalente XML es: <jsp:directive.include file="url"\>. La URL debe ser relativa. Usamos la acción jsp:include para incluir un fichero en el momento de la petición en vez del momento de la traducción. Si queremos un comentario en el HTML resultante, usamos la sintaxis de comentario normal del HTML <-- comment -->. Aviso: en algunos servidores, el fichero incluido debe ser un fichero HTML o JSP, según determine el servidor (normalmente basado en la extensión del fichero). <jsp:usebean att=val*/> Los posibles atributos son: Acción jsp:usebean o <jsp:usebean att=val*>... </jsp:usebean> Encuentra o construye un Java Bean. id="name" scope="page request session application" class="package.class" type="package.class" beanname="package.class" Acción jsp:setproperty Acción jsp:getproperty <jsp:setproperty att=val*/> <jsp:getproperty name="propertyname" value="val"/> Selecciona las propiedades del bean, bien directamente o designando el valor que viene desde un parámetro de la petición. Recupera y saca las propiedades del Bean. Los atributos legales son: name="beanname" property="propertyname *" param="parametername" value="val" Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 58

59 Acción jsp:forward Acción jsp:plugin <jsp:forward page="relative URL"/> <jsp:plugin attribute="value"*>... </jsp:plugin> Reenvía la petición a otra página. Genera etiquetas OBJECT o EMBED, apropiadas al tipo de navegador, pidiendo que se ejecute un applet usando el Java Plugin. Scriptlets Los scriptlets son utilizados para manejar código dinámico más complejo del soportado por las expresiones. Los scriptlets son código en Java, el cual es insertado en el servlet generado por el contenedor de servlets cuando la página JSP es compilada. La sintaxis utilizada para codificar un scriptlet es la siguiente: <% codigo a incluir %> A través de los scriptlets también es posible escribir en la página producida como salida HTML sin utilizar expresiones. Se puede empleara el método println de la variable out: <% out.println("salida a la pagina"); %> Los scriptlets son combinados fácilmente con código html. A continuación se muestra un ejemplo: El siguiente código <% if(condicion) Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 59

60 %> Condicion 1 <% else %> Condicion 2 es equivalente a: <% if(condicion) out.println("condicion 1"); else out.println("condicion 2"); %> Declaraciones Las declaraciones permiten declarar métodos o variables en el cuerpo principal del servlet resultante: no forman parte del método service para el proceso de la página. La sintaxis es la siguiente: <%! Declaracion %> Las declaraciones no producen salida, y su uso mas común es para la declaración de variables cuyos valores no cambien desde la compilación de la pagina JSP, por ejemplo un contador. <%! int contador=0; %> <% contador++; %> De esta manera la variable contador aumentaría su valor en una unidad cada vez que la pagina fuese solicitada, el valor del contador se inicializara a 0 cada vez que se arranque el servidor o se modifique la clase. Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 60

61 Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 61

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

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

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

HTTP, CGI, Applets y Servlets

HTTP, CGI, Applets y Servlets HTTP, CGI, Applets y Servlets Sistemas de Operación II CI-4821 Sep-Dic 2006 Mercedes Martínez 00-33042 Aixbel Martínez 01-34114 Mario Felaco 02-34888 José Luís Castillo 01-33691 Yonathan Ledo 01-34033

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

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

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

Laboratorio de Aplicaciones Telemáticas

Laboratorio de Aplicaciones Telemáticas Java Server Pages (JSP) Laboratorio de plicaciones Telemáticas Jesús rias Fisteus [email protected] Curso 2007/2008 Edited with emacs + LT E X+ prosper Universidad Carlos de adrid V E S E Java Server Pages

Más detalles

Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages)

Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages) Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages) Autor: José Vicente Núñez Zuleta ([email protected], [email protected]) Puntos a tratar Qué es JDBC? Arquitectura de un

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

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, 2006. ILI 258 Departamento de Informática Universidad Técnica Federico Santa María

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, 2006. ILI 258 Departamento de Informática Universidad Técnica Federico Santa María Nicolás Troncoso Carrère ILI 258 Departamento de Informática Universidad Técnica Federico Santa María Valparaíso, 2006 1 2 3 Porqué paginas dinamicas? Confirmacion de suscripciones. Contenido generado

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Servlets Unidad: 4 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Indice Introducción CGI Servlets: concepto, caracteristicas Servlets Vs. CGI Ciclo

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

J2EE Java 2 Enterprise Edition

J2EE Java 2 Enterprise Edition J2EE Java 2 Enterprise Edition Es el framework oficial de Java para la construcción de aplicaciones empresariales Es una tecnología basada en componentes Ofrece un modelo para el desarrollo de aplicaciones

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

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

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

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 ([email protected]) " Guión Introducción Servlets Introducción Clases e interfaces del

Más detalles

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios Diplomado Java Descripción El lenguaje de programación Java es uno de los más utilizados hoy en día. Su potencia, simplicidad, funcionalidad y capacidad hacen que este lenguaje sea una de las herramientas

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

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

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor. Procesamiento del lado del servidor La Programación del lado del servidor es una tecnología que consiste en el procesamiento de una petición de un usuario mediante la interpretación de un script en el

Más detalles

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema Capítulo2 Planteamientodelproblema 38 2.1Antecedentesycontextodelproyecto En lo que respecta a los antecedentes del proyecto, se describe inicialmente el contexto donde se utiliza el producto de software.

Más detalles

Ejemplos de Servlet y JSP Web Application Development

Ejemplos de Servlet y JSP Web Application Development Ejemplos de Servlet y JSP Web Application Development HERNÁNDEZ CRUZ DULCE 13/09/2011 INTRODUCCIÓN Servlets Los Servlets son módulos que extienden los servidores orientados a petición-respuesta, como los

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

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JAVA EE 5. Arquitectura, conceptos y ejemplos. JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones

Más detalles

JSP(JAVA SERVER PAGES)

JSP(JAVA SERVER PAGES) JSP(JAVA SERVER PAGES) Introducción En la actualidad, la mayoría de los sitios Web quieren mostrar contenido dinámico basado en el usuario y en la sesión. La mayor parte del contenido, tal como imágenes,

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 [email protected] 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

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

SERVLETS. Aplicaciones Distribuidas

SERVLETS. Aplicaciones Distribuidas SERVLETS Aplicaciones Distribuidas Contenido Definición. Framework Servlet. Ciclo de vida. Ejemplo. Procesamiento Petición. Generación de la Respuesta. Sesiones. Cookies. Colaboración entre servlets. Otros

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

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Capítulo I. Marco Teórico

Capítulo I. Marco Teórico 1 Capítulo I. Marco Teórico 1. Justificación Hoy en día existe una gran diversidad de aplicaciones que corren sobre la World Wide Web (WWW o Web), y cada una orientada a un fin en particular, el cuál depende

Más detalles

Formatos para prácticas de laboratorio

Formatos para prácticas de laboratorio Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA LSC 2003-1 4599 Base de Datos II PRÁCTICA No. 6 LABORATORIO DE NOMBRE DE LA PRÁCTICA Licenciado en Sistemas Computacionales

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio CARRERA Lic. En Sistemas Computacionales PRÁCTICA No. 12 PLAN DE ESTUDIO LABORATORIO DE NOMBRE DE LA PRÁCTICA 1 INTRODUCCIÓN CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA 2003-1 5038 Programación Orientada

Más detalles

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE PRÓLOGO... 13 APECTOS BÁSICOS DE JAVA... 15 1.1. LA MÁQUINA VIRTUAL JAVA... 15 1.2. EDICIONES JAVA... 16 1.3. ESTRUCTURA DE UN PROGRAMA JAVA... 16 1.4. EL MÉTODO

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

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

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

Workflows? Sí, cuántos quiere?

Workflows? Sí, cuántos quiere? Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención

Más detalles

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS Tecnología de Programación Clase 22 Diego C. Martínez Departamento de Ciencias e Ing geniería de la Computación Universidad Nacional del Sur Componentes Web J2EE presenta los componentes Web (web components):

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

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet. Unidad IV: Servlets Introducción Este unidad presenta los conceptos de Servlets Objetivos Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Más detalles

Mario Muñoz Organero & Norberto Fernández * Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario http://www.it.uc3m.

Mario Muñoz Organero & Norberto Fernández * Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario http://www.it.uc3m. JSP (I) Mario Muñoz Organero & Norberto Fernández * Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario http://www.it.uc3m.es/berto (*) Agradecimientos a Lourdes Tajes en cuyo material docente

Más detalles

Lección 1 Introducción a Struts. www.globalmentoring.com.mx [email protected]

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 [email protected] 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

PROGRAMACIÓN PÁGINAS WEB CON PHP

PROGRAMACIÓN PÁGINAS WEB CON PHP PROGRAMACIÓN PÁGINAS WEB CON PHP Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript y la programación de la parte servidor con la tecnología

Más detalles

Programación páginas web con ASP.NET 3.5 (C#)

Programación páginas web con ASP.NET 3.5 (C#) Horas de teoría: 40 Horas de práctica: 40 Programación páginas web con ASP.NET 3.5 (C#) Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript

Más detalles

Implementando nuestro primer servlet

Implementando nuestro primer servlet Servlets (II) * Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario http://www.it.uc3m.es/berto (*) Agradecimientos a Lourdes Tajes en cuyo material docente se basa parcialmente esta presentación

Más detalles

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

XPERTO EN DISEÑO DE PÁGINAS WEB

XPERTO EN DISEÑO DE PÁGINAS WEB Curso ICA de: EXPERTO EN DISEÑO DE PÁGINAS WEB Módulo 1: Program. cliente: JavaScript Estudia el lenguaje JavaScript para crear guiones o scripts que se incluyen en las páginas web y que son ejecutados

Más detalles

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,

Más detalles

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript. Descripción: Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript y la programación de la parte servidor con la tecnología ASP.NET y el servidor

Más detalles

Novedades en Q-flow 3.02

Novedades en Q-flow 3.02 Novedades en Q-flow 3.02 Introducción Uno de los objetivos principales de Q-flow 3.02 es adecuarse a las necesidades de grandes organizaciones. Por eso Q-flow 3.02 tiene una versión Enterprise que incluye

Más detalles

Capitulo 5. Implementación del sistema MDM

Capitulo 5. Implementación del sistema MDM Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo

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

Gestión de Oportunidades

Gestión de Oportunidades Gestión de Oportunidades Bizagi Suite Gestión de Oportunidades 1 Tabla de Contenido CRM Gestión de Oportunidades de Negocio... 4 Elementos del Proceso... 5 Registrar Oportunidad... 5 Habilitar Alarma y

Más detalles

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y Capítulo VI Conclusiones En este capítulo abordaremos la comparación de las características principales y de las ventajas cada tecnología Web nos ofrece para el desarrollo de ciertas aplicaciones. También

Más detalles

Análisis y diseño del sistema CAPÍTULO 3

Análisis y diseño del sistema CAPÍTULO 3 Análisis y diseño del sistema CAPÍTULO 3 36 CAPÍTULO 3 Análisis y diseño del sistema En este capítulo se pretende realizar un análisis detallado de los requerimientos del software a desarrollar para la

Más detalles

Haga clic en los recuadros donde indica la mano y regrese al inicio del capítulo al hacer clic en el título de la sección donde se encuentra

Haga clic en los recuadros donde indica la mano y regrese al inicio del capítulo al hacer clic en el título de la sección donde se encuentra Cómo gestiono el Plan Anual de Adquisiciones de mi Entidad en el SECOP II? Crear equipo Crear Plan Anual de Adquisiciones Publicar Plan Anual de Adquisiciones Modificar Plan Anual de Adquisiciones Buscar

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

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO Introducción:...1 Service Oriented Architecture...2 Elementos de una Service Oriented Architecture...2 Application frontends...2 Servicios...2 Contrato:...3

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

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador

Más detalles

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Entidad Formadora: Plan Local De Formación Convocatoria 2010 Entidad Formadora: Enterprise Architect Comenzando Puede iniciar Enterprise Architect desde el ícono que se creó en su escritorio de Windows durante la instalación, o alternativamente: 1. Abrir el menú

Más detalles

Arquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente

Arquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente Aplicaciones web con JSP Arquitectura J2EE para aplicaciones web Aplicación Applet HTML Cliente Servidor web JSP Servlet Web EJB Java Beans Lógica Negocio Otras BDs, ERPs etc BD Oracle Datos Cliente Servidor(es)

Más detalles

Transacciones: 2PC y 3PC. Aplicaciones de Internet: HTTP/Applets, HTTP/GCI y Java Servlets

Transacciones: 2PC y 3PC. Aplicaciones de Internet: HTTP/Applets, HTTP/GCI y Java Servlets Universidad Simón Bolívar Sistemas Operativos II Transacciones: 2PC y 3PC. Aplicaciones de Internet: HTTP/Applets, HTTP/GCI y Java Servlets Daniel Palhazi Cuervo Gustavo Torres Maximiliano Rondon Caracas,

Más detalles

Servidores Web (II) Contenidos

Servidores Web (II) Contenidos Contenidos Servidores (II) Servidores/aplicaciones con/sin Estado Sesiones con Servlets Contextos compartidos con Servlets Acceso concurrente desde Servlets Servidores Cache Servidores Virtuales 1 2 Aplicaciones

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

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa Documentos de Proyecto Medusa Documentos de: Serie: Manuales Servicio de Alta, Baja, Modificación y Consulta del documento: Fecha 22 de febrero de 2007 Preparado por: José Ramón González Luis Aprobado

Más detalles

PROGRAMACIÓN JEE CON SERVLETS

PROGRAMACIÓN JEE CON SERVLETS INTRODUCCIÓN A LOS SERVLETS PROGRAMACIÓN JEE CON SERVLETS Los Servlets son clases Java que se ejecutan en un servidor de aplicación, para contestar a las peticiones de los clientes. Los Servlets no se

Más detalles

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila Diseño Y Aplicaciones de Sistemas Distribuidos Servlets Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Qué es un servlet? Son una forma de

Más detalles

JavaScript como Orientación a Objetos

JavaScript como Orientación a Objetos Gustavo Lacoste ([email protected]) October 2012 Resumen El objetivo de las siguientes notas es generar una estructura en JavaScript que nos permita reutilizar de manera limpia las funciones creadas

Más detalles

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo. GLOSARIO Actor: Un actor es un usuario del sistema. Esto incluye usuarios humanos y otros sistemas computacionales. Un actor usa un Caso de Uso para ejecutar una porción de trabajo de valor para el negocio.

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

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

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1 MANUAL DE USUARIO Webservice simple para la exportación rápida de información proveniente de una base de datos Versión 0,1,1 Jorge Iván Meza Martínez INTRODUCCIÓN Esta aplicación permite

Más detalles

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado Centro de Capacitación en Tecnologías de la Información Desarrollo de Objetivo Dotar al alumno de la metodología y los fundamentos de la programación en Java usando la plataforma J2SE (Java 2 Standard

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

FSx-Connector Guía rápida del Módulo pcron (Tareas Programadas) Créditos

FSx-Connector Guía rápida del Módulo pcron (Tareas Programadas) Créditos Este documento es una Guía resumida del Módulo pcron (Tareas Programadas), que es una extensión del Conector FSx-Connector entre FactuSol y una Tienda en Internet basada en PrestaShop. Vea también: www.factusol-prestashop.es.

Más detalles

Introducción a las Redes de Computadoras. Obligatorio 2 2011

Introducción a las Redes de Computadoras. Obligatorio 2 2011 Introducción a las Redes de Computadoras Obligatorio 2 2011 Facultad de Ingeniería Instituto de Computación Departamento de Arquitectura de Sistemas Nota previa - IMPORTANTE Se debe cumplir íntegramente

Más detalles

[email protected]

abacformacio@abacformacio.com Programación de páginas web con PHP Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript y la programación de la parte servidor con la tecnología

Más detalles

19. Packages o paquetes

19. Packages o paquetes Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir

Más detalles

TEMARIO. 4-Servlet Definición de servlet El Web Container y el ciclo de vida de los servlets El ciclo request- response.

TEMARIO. 4-Servlet Definición de servlet El Web Container y el ciclo de vida de los servlets El ciclo request- response. TEMARIO 1-Introducción Entorno de Desarrollo Integrado ( que es, para que nos sirve, distintos tipos) Presentación del Netbeans (descarga, instalación, aspectos fundamentales.) Principales Servidores de

Más detalles

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web Arquitectura 1.- Aplicaciones Web Definición Contenidos 1.- Aplicaciones Web 2.- Arquitectura de aplicaciones Web Lo que distingue una aplicación Web de una mero sitio Web reside en la posibilidad que

Más detalles

Arquitectura de sistema de alta disponibilidad

Arquitectura de sistema de alta disponibilidad Mysql Introducción MySQL Cluster esta diseñado para tener una arquitectura distribuida de nodos sin punto único de fallo. MySQL Cluster consiste en 3 tipos de nodos: 1. Nodos de almacenamiento, son los

Más detalles

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO PRÁCTICA 4: Implementación de un Cliente de Correo

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 ([email protected]) " Guión Introducción sesiones y cookies con Servlets Ejercicio 1: Preguntas

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 de Spring Framework

Curso de Spring Framework Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Spring es un proyecto de código abierto (open source), originalmente creado por Rod Johnson y descrito en su

Más detalles

Administración de Catálogo DNS CURSO: ADMINISTRADOR DE PORTALES

Administración de Catálogo DNS CURSO: ADMINISTRADOR DE PORTALES Administración de Catálogo DNS CURSO: ADMINISTRADOR DE PORTALES Administración del Catálogo DNS. Curso: Administrador de Portales Fondo de Información y Documentación para la Industria Av. San Fernando

Más detalles

Sincronización del Servidor.

Sincronización del Servidor. Sincronización del Servidor. Versión 1.0 03/05/05 Fecha Jose Autor Manuel Viejo Lobato http://ars.viejolobato.com Página 1 de 5 Índice. 1. Introducción... 3 2. Búsqueda de elementos de workflow por nombre....

Más detalles

CAPÍTULO 3 VISUAL BASIC

CAPÍTULO 3 VISUAL BASIC CAPÍTULO 3 VISUAL BASIC 3.1 Visual Basic Microsoft Visual Basic es la actual y mejor representación del viejo lenguaje BASIC, le proporciona un sistema completo para el desarrollo de aplicaciones para

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

Técnico Superior en Programación con Java SE Standard Edition

Técnico Superior en Programación con Java SE Standard Edition Código: M087_04 Técnico Superior en Programación con Java SE Standard Edition Modalidad: Distancia Duración: 120 horas Objetivos: Este pack de materiales formativos proporcionará al alumnado la base que

Más detalles