Java Server Pages, Beans y JSP Tag Library

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

Download "Java Server Pages, Beans y JSP Tag Library"

Transcripción

1 Java Server Pages, Beans y JSP Tag Library Fernando Pech May Sintetizado del curso de Mark Baker University of Portsmouth, UK 1 Introducción Introducción a los JSP. Elementos de JSP Scripting. JSP, directivas de página: Estructura y generación de Servlets. Incluyendo archivos en documentos JSP. Usar los componentes de JavaBeans con JSP. Creando JSP tag libraries personalizados. Integrando Servlets y JSP con la arquitectura MVC. 2

2 Porqué usar JSP? Con Servlets es fácil: Leer datos de un formulario, Leer las cabeceras de las peticiones HTTP. Leer los códigos de estado HTTP y las cabeceras de respuesta, Usar cookies y seguimiento de sesiones, Compartir Datos entre Servlets, Recordar datos entre peticiones. Qué es lo difícil: Usar muchas instrucciones println() para generar HTML, Mantenimiento del HTML. 3 El Framework de JSP La idea: Uso de HTML para la mayoría de las páginas Web, Identificar código del Servlet con etiquetas especiales, Toda la página JSP es convertida a un Servlet (sólo una vez) y el Servlet es el que realmente es invocado (por cada petición). Ejemplo: JSP: URL: Thanks for ordering <%=request.getparameter( title ) %/> Result: Thanks for ordering the Java Servlets 4

3 Java Server Pages (JSP) Arquitectura de JSP El propósito de JSP es ofrecer una forma más declarativa y más guiada por la presentación que aquella conseguida con los servlets. Las páginas JSP se utilizan en un proceso que involucra dos fases: 1. Una fase de traducción dinámica a servlets que se realiza únicamente cuando la página JSP se crea o modifica. 2. Una fase de contestación a peticiones que se consigue cuando las clases de los servlets generados se cargan en el contenedor de servlets. 5 Java Server Pages (JSP) Arquitectura de JSP En la segunda fase, para atender concurrentemente al procesamiento de peticiones, el servidor lanza un proceso ligero (thread) por cada uno de los clientes el cual corre el método _jspservice(). El método _jspservice() no puede reemplazarse por otros métodos definidos por el programador, pero en cambio puede adecuarse su inicialización y terminación con los métodos jspinit() y jspdestroy(). 6

4 Java Server Pages (JSP) Arquitectura de JSP Evento de iniciación Petición Respuesta Servlet _jspinit() _jspservice() Evento de terminación _jspdestroy() Contenedor de Servlets 7 Benéficos de usar JSP Ventajas Independencia del servidor Web. Substitución del API de los servlets por conjuntos de elementos de marcado (tags) y fragmentos de programación (scriptlets). Altamente recomendable para conseguir el acceso al servidor Web en arquitecturas de partes múltiples (multi-tier). Separación del contenido estático del dinámico. Separación del contenido dinámico del formato de la presentación. 8

5 Ventajas de JSP frente a las tecnologías similares. Contra Active Server Pages (ASP): ASP es una tecnología similar que pertenece a Microsoft La parte dinámica de JSP es escrita en Java, no en Visual Basic u otro lenguaje propietario de Microsoft, esto lo hace un mejor lenguaje. Es portable con otros sistemas operativos y servidores Web que no sean de Microsoft. Contra Servlets: JSP no proporciona algo más que en principio podría hacerse con un Servlet. Pero es mas conveniente para escribir y modificar HTML que tener muchas sentencias println() para generarlo. Además, haciendo la separación de vista y contenido, se puede tener diversas personas en diversas tareas: expertos en diseño de páginas Web pueden construir el HTML, dejando lugar para que los programadores de Servlets inserten el contenido dinámico. 9 Ventajas de JSP frente a las tecnologías similares. Contra Server-Side Includes (SSI): SSI son tecnologías ampliamente soportadas para incluir, en una página Web estática, partes definidas externamente. JSP es mejor porque le permite utilizar Servlets en lugar de un programa separado para generar la parte dinámica, SSI está pensado para inclusiones simples, no para programas reales que usen información de un formulario, conexiones a bases de datos, etc. Contra JavaScript: JavaScript puede generar dinámicamente HTML del lado cliente, Capacidad útil, pero sólo para manejar situaciones donde la información dinámica está basada en el medio ambiente del cliente, Con excepción de las cookies de HTTP y los formularios, el envío de datos no es posible en JavaScript, Y, puesto que corre del lado cliente, JavaScript no puede tener acceso a los recursos del lado servidor como bases de datos, catálogos, información valiosa, entre otros. 10

6 Ventajas de JSP frente a las tecnologías similares. Contra HTML estático: El HTML normal, no puede contener información dinámica. JSP es tan fácil y conveniente que es totalmente factible aumentar las páginas HTML que se verán beneficiadas por la inserción de cantidades pequeñas de datos dinámicos. 11 Resumen: JSP vs ASP Propiedad Java Server Pages Active Server Pages Servidor Plataforma Modelo de componentes Programación (scripting) La mayoría de los servidores más Conocidos (Apache, Netscape, MS IIS) Cualquiera que corra una máquina virtual Java Java Beans, Enterprise Java Beans y librerías de elementos Java Los servidores de Microsoft (IIS y Personal Web Server) Windows COM, DCOM, COM + JavaScript o Visual Basic Script Seguridad Modelo de seguridad de Java Modelo de seguridad de Windows NT Bases de datos Java Data Base Connectivity Active Data Objects Extensibilidad Abierto a librerías de elementos Ninguna 12

7 Malentendidos comunes: Recordar que JSP es tecnología Server-Side Pregunta muy común: No puedo hacer XYZ con el HTML, JSP me dejaría hacerlo? Por qué esta pregunta no tiene sentido? JSP corre completamente del lado servidor, No cambia el contenido que el visualizador puede manejar. Preguntas similares: Cómo pongo un Applet en una página JSP? Respuesta: Envié una etiqueta del <APPLET > al cliente. Cómo pongo una imagen en una página JSP? Respuesta: Envié una etiqueta de la <IMG > al cliente. Cómo uso un JavaScript/Acrobat/Shockwave/etc? Respuesta: Envié las etiquetas correspondientes del HTML do Malentendidos comunes: Tiempo de Traducción/Petición Qué sucede al momento de traducción de la página JSP? Las JSPs se traducen a código Servlet. Qué pasa en el momento de la petición? El código del Servlet es ejecutado, Ninguna interpretación del JSP ocurre al momento de la petición, La página JSP original es ignorada al momento de la petición; solo el Servlet que resulte de la JSP es el que se toma en cuenta. Cuándo ocurre la traducción de la página? Generalmente la primera vez que la página JSP es invocada después de ser modificada, Esto no debería suceder a usuarios reales los desarrolladores deben probar las páginas que instalan, La traducción de páginas no ocurre en cada petición. 14

8

9 17 Configurando el medio ambiente. Configurar CLASSPATH. Compilar el código Utilizar los paquetes para evitar conflictos de nombres. Coloque la página JSP en el directorio correcto: <tomcat_home>/webapps/root. Use el URL especial para invocar la página JSP. Advertencias: Las reglas utilizadas para el acceso al CLASSPATH, instalación de directorios, etc., aun se aplican a las clases utilizadas en JSP. 18

10 Ejemplo. 19 Ejemplo Con la configuración por defecto, si la localización es: <tomcat_home>/webapps/root/expression.jsp EL URL debe ser: 20

11 Ejemplo 21 Elementos del JSP Scripting 22

12 Uso de las JSPs Los elementos de Scripting llaman al código del Servlet directamente. Los elementos de Scripting llaman al código del Servlet indirectamente mediante clases de uso general(utilities). Uso de Beans. Etiquetas personalizadas. Servlet/JSP combo. Aplicaciones simples Aplicaciones complejas 23 Tipos de elementos de Scripting Expresiones: Formato <%=expression %> Se evalua e inserta en la salida del Servlet, ej., el resultado en algo como: out.println(expression). Scriptlets: Formato <%code%> Insertado textualmente dentro del método _jspservice en los Servlet s (llamada al servicio). Declaraciones: Formato <%! code%> Insertado textualmente dentro del cuerpo de la clase del Servlet, fuera de cualquier método existente. 24

13 Expresiones JSP Formato: <%= Expresión Java %> Resultado: Expresión evaluada, convertida a cadena, y puesta en la página HTML en el lugar donde ocurrió en la página JSP. Es decir, la expresión se pone en el _jspservice dentro de out.print. Ejemplos: Tiempo actual: <%=new java.util.date()%> Tu nombre de maquina: <% request.getremotehost()%> Sintaxis compatible XML : <jsp:expression> Java Expression </jsp:expression> Versión de XML no suportada por Tomcat 3.1 Hasta la versión JSP 1.2, los servidores no tiene que darle soporte. 25 Correspondencia JSP/Servlet Original JSP: <H1> A Random Number </H1> <%= Math.random() %> Resultado posible del código Servlet: public void _jspservice(httpservletrequest request, HttpServletResponse response) throws ServletException IOException{ request.setcontenttype( text/html ); HttpSession session = request.get Session(true); JspWriter out = response.getwriter(); out.println( <H1> Random Number</H1>); out.println(math.randon()); } 26

14 Ejemplo usando expresiones JSP 27 Variables predefinidas Request: El HttpServletRequest 1er argumento para doget(); Response: El HttpSerlvetResponse 2do argumento para doget(); Session: El HttpSession asociada a la petición (al menos que fuera deshabilitada con el atributo de la directiva de sesión). Out: El flujo de datos (de tipo JspWriter) usado para enviar la salida al cliente. Application: El ServletContext (para compartir datos) como fue obtenido vía getservletconfig().getcontext(). 28

15 Java Server Pages (JSP) Objetos Implícitos Objeto Contexto Descripción Ámbito request HttpServletRequest Invocación del servicio Petición response HttpServletResponse Respuesta a la Petición Página pagecontext jsp.pagecontext Características de la página Dependientes de la implementación, espacios de nombres y otras facilidades session http.httpsession Conserva el estado de la session application ServletContext Contexto del servlet de configuración Página Sesión Aplicación out jsp.jspwriter Flujo de salida Página config ServletConfig Configuración del servlet del JSP page Object Página que procesa la petición en curso Página Página 29 JSP Scriptlets Formato: <% Código Java %> Resultado: El código insertado textualmente en el _jspservice del Servlet. Ejemplo: <%String querydata = request.getquerystring(); out.println(attached GET data: + querydata);%> <%response.setcontenttype(text/plain ); %> Sintaxis compatible XML: <%jsp:scriptlet> Código Java </jsp:scriptlet>%> 30

16 Correspondencia JSP/Servlet Original JSP: <%= foo() %> <%= bar() %> Posible resultado del código Servlet: public void _jspservice(httpservletrequest request, HttpServletResponse response) throws ServletException IOException{ request.setcontenttype( text/html ); HttpSession session = request.get Session(true); JspWriter out = response.getwriter(); out.println(foo()); out.println(bar()); } 31 Ejemplo usando JSP Scriptlets 32

17 Ejemplo usando JSP Scriptlets 33 Declaraciones JSP Formato: <%! Código Java %> Resultado: El código se inserta textualmente en la definición de la clase del Servlet, fuera de cualquier método existente. Ejemplos: <%! private int alguncampo=5;%> <%! private void AlgunMetodo( ) { } %> Sintaxis compatible XML : <jsp:declaration> Código Java </jsp:declaration> 34

18 Declaraciones JSP JSP: <H!>Someheading</H1> <%! private String randomheading(){ return( <H2> + Math.random() + </H2> ); } %> <%= randomheading()%> 35 Ejemplo usando declaraciones JSP <!DOCTYPE HTML PUBLIC "- //W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>JSP Declaraciones</TITLE> </HEAD> <BODY> <H1>JSP Declaraciones</H1> <%! private int accesscount = 0; %> <H2>Accesses to page since server reboot: <%= ++accesscount %></H2> </BODY> </HTML> 36

19 Java Server Pages (JSP) Ejemplo de una Página JSP: La siguiente página JSP presenta un saludo. <%-- Esta página da un saludo y despedida --%> <HTML> <BODY> <H1>Bienvenido a JSP!</H1> <% out.println("regrese pronto ); %> </BODY> </HTML> N bienvenido helloworld hellouser response NameHandler 37 Java Server Pages (JSP) Ámbito y Visibilidad de los Objetos JSP Los objetos JSP pueden crearse: implícitamente por directivas JSP explícitamente a través de acciones excepcionalmente usando fragmentos de código El ámbito del objeto establece su duración desde su creación hasta su destrucción; su visibilidad indica los lugares de la página donde puede usarse el objeto. 38

20 Java Server Pages (JSP) Ámbito y Visibilidad de Objetos La siguiente tabla muestra los ámbitos que pueden asociarse a los objetos recién creados. Ámbito Categoría Descripción 4 (mayor) Aplicación Pertenecen a la misma aplicación 3 Sesión Pertenecen a la misma sesión 2 Petición Provienen de la petición que es Atendida 1 (menor) Página Pertenecen a la página en que fueron creados 39 Java Server Pages (JSP) Objetos Implícitos Debido a que la tecnología JSP se basa en aquella de los servlets, existe un conjunto de objetos predefinidos cuyos nombres pueden usarse inmediatamente en JSP. 40

21 Ejemplo Java Server Pages (JSP) Este ejemplo muestra los cuatro ámbitos de los objetos JSP. import= java.util.* %> <HTML> <BODY> Servlet <%= config.getservletname() %><br> <% for (int scope = 1; scope <= 4; scope++) { out.println("<h2>ambito "+scope+"</h2>"); Enumeration e = pagecontext.getattributenamesinscope(scope); while (e.hasmoreelements()) { out.println(e.nextelement()+ <br> ); } } %> </BODY> </HTML> ambitos 41 Java Server Pages (JSP) Resumen de Elementos Básicos de JSP Elementos que se intercalan entre aquellos de HTML o XML. Elemento Sintaxis Descripción Directiva <%@ %> Importar clases o incluir archivos HTML Declaraciones <%! %> Declarar variables o métodos Java Expresiones <%= %> Evaluación de expresiones Java Scriptlets <% %> Ejecución de instrucciones Java Comentarios <% %> Texto no procesado 42

22 JSP: Resumen Elementos Básicos Directivas Las directivas son instrucciones dirigidas al contenedor de servlets JSP, no al flujo de salida. Las directivas determinan los atributos de la página y las dependencias con el contenedor. La directiva de página tiene la forma: <%@ page atributos %> donde los atributos pueden ser: language que indica el lenguaje usado en la página JSP, import que establece las clases que se van usar extends que indica las clases que serán extendidas include que inserta un archivo HTML session que cuando toma el valor true, permite usar la variable predefinida session en la página JSP buffer que establece el tamaño del área temporal de la página autoflush que indica si el envío al flujo de salida es inmediato isthreadsafe que establece que a lo más un proceso está activo a la vez (por omisión, se tienen múltiples procesos concurrentes) errorpage que permite indicar si la página se usa para anunciar un error 43 JSP: Resumen Elementos Básicos Ejemplos de Directivas Las directivas: <%@ page import= java.sql.*,java.util.* %> importa los paquetes java.sql y java.util <%@ page include= sty.css %> inserta los estilos para el documento que están guardados en el archivo sty.css <%@ page buffer= 16k %> establece el tamaño del buffer a 16k <%@ page isthreadsafe= true %> establece que hay sólo un proceso activo a la vez 44

23 JSP: Resumen Elementos Básicos Declaraciones La sintaxis de una declaración es <%! declaración %> o, alternativamente, usando los espacios de nombres de XML <jsp:declaration> declaración </jsp:declaration> Las declaraciones permiten introducir variables y métodos a nivel de página y deben seguir la sintaxis de Java. Las variables declaradas pueden inicializarse y deben estar terminadas por punto y coma. Las declaraciones de métodos, además de aquellos usados en la aplicación, pueden también incluir a jspinit() y jspdestroy(). 45 JSP: Resumen Elementos Básicos Ejemplo de Declaración Código de iniciación para un contador en una página JSP que declara una variable y los métodos jspinit() y jspdestroy(): <%! int counter;%> <%! public void jspinit() { counter = 0; } public void jspdestroy() { } %> 46

24 JSP: Resumen Elementos Básicos Expresiones La sintaxis de una expresión es <%= expresión %> o, alternativamente, usando los espacios de nombres de XML <jsp:expression> expresión </jsp:expression> Las expresiones en JSP permiten que el resultado de la evaluación de una expresión Java se convierta a una cadena de caracteres que será incluida en la página generada. Las expresiones pueden incluirse en gran variedad de contextos y no deben terminarse por puntos y comas. Ejemplo de Expresiones La siguiente expresión produce un elemento H1 usado para escribir el texto de un encabezado: <%! int i = 1; %> <H<%=i%>>Java Server Pages</H<%=i>> 47 JSP: Resumen Elementos Básicos Scriptlets La sintaxis de un scriptlet es <% scriptlet %> o, alternativamente, usando los espacios de nombres de XML <jsp:scriptlet> scriptlet </jsp:scriptlet> Se puede escribir cualquier fragmento de código Java, extendido por elementos HTML y no limitado a una línea. Ejemplo de Scriptlets: El siguiente scriptlet produce una secuencia de encabezados con tamaño decreciente: <% for (int i=1; i<5; i++) { %> <H<%=i%>>Java Server Pages</H<%=i>> <% } %> 48

25 JSP: Resumen Elementos Básicos Comentarios Los comentarios JSP usan elementos especiales, distintos de los comentarios de HTML, para que no puedan verse en los documentos enviados al cliente. Los comentarios pueden usarse también para bloquear la ejecución de ciertos fragmentos de la página JSP. Ejemplo: La siguiente instrucción no será ejecutada (ni siquiera será visible en la página enviada al cliente) <%-- int i = 1; --%> 49 JSP: Ejemplo (contador de accesos) Ejemplo de Contador de Accesos: La siguiente página JSP muestra un contador de accesos a una página. <%-- Esta página da la fecha y hora cuando fue soliciatada así como el número de accesos --%> <%@ page import="java.util.*"%> <%! Date loaddate = new Date(); int loadcounter = 1; %> <HTML> <BODY> <H1>Bienvenido!</H1> <H2>Desde <%=loaddate%>, ésta página ha sido accesada <%=loadcounter%> <% if (loadcounter++ == 1) out.println("vez.<br>"); else out.println("veces.<br>"); %> <% out.println("regrese pronto"); %> </H2> </BODY> </HTML> 50 contadoryfecha

26 JSP: Ejemplo (uso de formularios) Ejemplo con Formas: El siguiente ejemplo demuestra como obtener los valores de un formulario. import="java.util.*"%> <HTML> <BODY> <%Enumeration fields = request.getparameternames();%> <TABLE border="1" > <TR><TH>Nombre</TH><TH>Valor</TH></TR> <% while (fields.hasmoreelements()) { %> <TR> <%String field = (String)fields.nextElement();%> <TD align=center><%=field%></td> <TD align=center> <%=request.getparameter(field)%></td> </TR> <%}%> </TABLE> </BODY> </HTML> formulario programa 51 Concurrencia JSP: Manejo de Concurrencia La directiva page con el atributo isthreadsafe ofrece una forma de evitar los problemas que ocasiona la concurrencia. El problema con este enfoque es que no es escalable, reduciendo considerablemente el desempeño de sistemas con muchos procesos. Una alternativa es usar regiones críticas en scriptlets para sincronizar el acceso a objetos compartidos. <%@page import= java.util.* %> <% synchronized (application) { Properties list = application.getattribute( users ); list.add( ana,new User( ana )) list.setattribute( users,list); } %> 52

27 JSP: Manejo de Excepciones Manejo de Excepciones JSP posee un mecanismo apropiado para el manejo de errores que ocurren a tiempo de ejecución. El atributo errorpage de la directiva page se usa para indicar que la página recibe las excepciones lanzadas por algún scriptlet. Además, el atributo errorpage de la misma directiva indica la página JSP a la cual se redirigirá el objeto implícito exception (de tipo Throwable) que describe el problema. 53 JSP: Manejo de Excepciones Ejemplo de manejo de excepciones Para manejar errores a tiempo de ejecución, se puede usar una página que indique la naturaleza del error. Dicha página debe incluir entre sus directivas la siguiente: <%@page iserrorpage= false errorpage= Error.jsp %> la página redirige a su vez el objeto exception a la página Error.jsp. La página Error.jsp debe contener a su vez, la directiva: <%@page iserrorpage= true %> Esta indicación permite acceder al objeto exception en la página Error.jsp. 54

28 JSP: Manejo de Sesiones Manejo de Sesiones Por omisión todas las páginas JSP participan en una sesión HTTP. El objeto session (de tipo HttpSession) está disponible para almacenar objetos que persistan a lo largo de la vida de la aplicación. El atributo session de la directiva page se usa para permitir o negar el acceso al objeto session en la página; por omisión, el objetosession es accesible. La directiva <%page session= false %> indica que en la página no se usarán sesiones. Una sesión se identifica por un nombre único de sesión y se almacena en el browser del cliente en forma de cookie; si el browser no maneja cookies, la sesión se mantiene por reescritura del URL. La sesión mantiene referencias a todos los objetos almacenados pero tan pronto como la sesión es invalidada o el plazo de los objetos expira, los objetos se marcan para su recolección como basura. 55 JSP: Manejo de Sesiones. Manejo de Sesiones No se pueden guardar tipos simples en una sesión, pero se puede guardar cualquier tipo de objeto identificado por una cadena única de caracteres. El siguiente scriptlet hace al objeto Book públicamente disponible para todas las páginas y servlets JSP que compartan la misma sesión: <% Book book = new Book(); session.putvalue( book,book); %> El objeto book puede recuperarse realizando una coerción para convertirlo al tipo apropiado: <% Book book = (Book)session.getValue( book ); %> No hay límite en el número de objetos que se pueden manejar en una sesión, aunque un gran número de ellos reducirá el rendimiento del sistema. Generalmente, la duración de una sesión está limitada a 30 minutos, aunque la duración puede ampliarse regularmente usando el métodosetmaxintactiveinterval(int secs). 56

29 JSP: Ejemplo de Sesiones <%--session.jsp: Ejemplo de una sesion--%> <HTML> <BODY> <H1>Sesion <%=session.getid()%></h1> <P>La session fue creada el <%=session.getcreationtime()%> <P>Duracion usual de la session:<%=session.getmaxinactiveinterval()%> <P>Reducción de la duracion de la session a 5 segundos <%session.setmaxinactiveinterval(5);%> <P>Nueva duracion de la session:<%=session.getmaxinactiveinterval()%> <P>Depositar un objeto nuevo <%session.setattribute("bible",new String("Sacred Bible"));%> <P>Mostrar el objeto depositado:<%=session.getattribute("bible")%> </BODY> <HTML> session 57 JSP: Ejemplo de Sesiones <%--session1.jsp: Ejemplo de una sesion con invalidacion--%> <HTML> <BODY> Sesion <%= session.getid() %> <% if (session.getattribute("bible")==null) { session.setattribute("bible",new String("Sacred Bible")); out.println("<p>depositar un nuevo libro:" +session.getattribute("bible")); } else { out.println("<p>recuperar el libro:" +session.getattribute("bible")); } %> <FORM TYPE="post" ACTION="session2.jsp"> <INPUT TYPE="submit" NAME="invalidar VALUE="invalidar"> </FORM> <FORM TYPE="post" ACTION="session3.jsp"> <INPUT TYPE="submit" NAME="conservar VALUE="conservar"> </FORM> </BODY> </HTML> session1 58

30 JSP: Ejemplo de Sesiones (Cont..) Los archivos session2.jsp y session3.jsp son llamados por session1.jsp. <%--session2.jsp: Ejemplo de una sesion con invalidacion--%> <%@page iserrorpage="false errorpage="errorpage.jsp"%> <HTML> <BODY> Sesion <%=session.getid()%> <P>Recuperar al libro: <%= session.getvalue("bible") %> <P>Invalidar la session <% session.invalidate(); %> <P>Recuperar de nuevo al libro: <%= session.getvalue("bible") %> <FORM TYPE="post" ACTION="session1.jsp"> <INPUT TYPE="submit" NAME="submit VALUE="regresar"> </FORM> </BODY> </HTML> <%--session3.jsp--%> <HTML> <BODY> Sesion <%=session.getid()%> <P>Recuperar el libro: <%= session.getvalue("bible") %> <FORM TYPE= post ACTION= session1.jsp > <INPUT TYPE= submit NAME= submit VALUE= regresar > </FORM> </BODY> </HTML> session2 session3 ErrorPage 59 JSP: Uso de Cookies Uso de cookies Las cookies ya fueron introducidas en la programación con servlets; en JSP es igual de simple su programación. Las cookie se obtienen de la petición HTTP (objeto request) y se mandan a la respuesta HTTP (objeto response) siempre que el cliente acepte las cookies. Una vez obtenida una cookie de la petición, ésta se puede leer, modificar y alterar su fecha de expiración (cambiando su edad máxima). Además, en cualquier momento se puede agregar nuevas cookies a las ya existentes. 60

31 JSP: Ejemplo de Cookies <%--Cookies.jsp: Este programa puede comportarse distinto en diferentes browsers--%> <HTML> <BODY> Session <%= session.getid() %> <% Cookie[] cookies = request.getcookies(); for(int i = 0; i < cookies.length; i++) { %> Cookie con nombre: <%= cookies[i].getname() %> <br> Valor: <%= cookies[i].getvalue() %><br> Duración máxima en segundos: <%= cookies[i].getmaxage() %><br> <% cookies[i].setmaxage(5); %> Nueva duración en segundos: <%= cookies[i].getmaxage() %><br> <% } %> <%! int count = 0; int dcount = 0; %> <% response.addcookie(new Cookie("Bob" + count++,"dog" + dcount++)); %> </BODY> </HTML> Cookies 61 JSP: Acciones comunes Acciones Comunes Las acciones permiten realizar tareas sofisticadas reduciendo considerablemente la codificación requerida en Java. Las acciones se manifiestan usando elementos especiales (tags) los cuales promueven la reutilización de componentes mejorando el mantenimiento de la aplicación. Algunas acciones más populares son: usar componentes JavaBeans redirigir mensajes encadenar peticiones incluir peticiones 62

32 JSP: Usar componentes JavaBeans El modelo de componentes de JSP se basa en la tecnología JavaBeans que son objetos con un esquema de nombramiento bien definido. Un bean encapsula sus propiedades, como variables privadas, las cuales se pueden leer o modificar usando métodos públicos apropiados. Un bean debe identificarse con un nombre con ámbito de sesión antes de que pueda usarse; el elemento XML <jsp:usebean id= bookbean class= com.beans.books scope= session /> crea una instancia del Bean y lo agrega a la sesión; si se encuentra este elemento en otra página, el objeto se recuperará entonces de la sesión. 63 JSP: Usar componentes JavaBeans El elemento jsp:usebean también puede tener estructura, la cual consiste de un scriptlet que realiza la iniciación de las propiedades del bean cuando éste se crea. <jsp:usebean id= bookbean class= com.beans.books scope= session > <% iniciación de propiedades del bean %> </jsp:usebean> Una vez declarados los beans, sus propiedades pueden accederse usando el elemento <jsp:getproperty name= book property= name /> Para cambiar el valor de una propiedad, se usa el elemento <jsp:setproperty name= book property= name value= Thinking in Java /> En el procesamiento de formas es muy conveniente usar las facilidades que brinda JSP para copiar los valores asociados de los campos a los atributos del bean. 64

33 JSP: Usar componentes JavaBeans El elemento <jsp:setproperty name= book property= * /> copia los valores pero sólo cuando los nombres en ambos (los campos de la forma y los atributos del bean) coinciden. Cuando los nombres no coinciden, la correspondencia se debe hacer explícita: <jsp:setproperty name= book property= propname parameter= parmname /> 65 JSP: Ejemplo de JavaBeans El siguiente JSP es un juego para adivinar un número. Copyright (c) 1999 The Apache Software Foundation. All rights reserved. Number Guess Game Written by Jason Hunter, CTO, K&A Software --> <%@ page import = "num.numberguessbean" %> <jsp:usebean id="numguess class="num.numberguessbean" scope="session"/> <jsp:setproperty name="numguess" property="*"/> <html> <head><title>number Guess</title></head> <body bgcolor="white"> <font size=4> <% if (numguess.getsuccess()) { %> Congratulations! You got it. And after just <%= numguess.getnumguesses() %> tries.<p> <% numguess.reset(); %> Care to <a href="numguess.jsp">try again</a>? <% } else if (numguess.getnumguesses() == 0) { %> Welcome to the Number Guess game.<p> numguess 66

34 JSP: Ejemplo de JavaBeans (Cont ) I'm thinking of a number between 1 and 100.<p> <form method=get> What's your guess? <input type=text name=guess> <input type=submit value="submit"> </form> <% } else { %> Good guess, but nope. Try <b> <%= numguess.gethint() %></b>. You have made <%= numguess.getnumguesses() %> guesses.<p> I'm thinking of a number between 1 and 100.<p> <form method=get> What's your guess? <input type=text name=guess> <input type=submit value="submit"> </form> <% } %> </font> </body> </html> 67 JSP: Ejemplo de JavaBeans (Cont ) El siguiente JavaBean se usa en el juego de adivinanza de números. /* Originally written by Jason Hunter */ package num; import java.util.*; public class NumberGuessBean { int answer; boolean success; String hint; int numguesses; public NumberGuessBean() { reset(); } public void setguess(string guess) { numguesses++; int g; try { g = Integer.parseInt(guess); } catch (NumberFormatException e) { g = -1; } if (g == answer) { success = true; } else if (g == -1) {hint = "a number next time"; NumberGuessBean 68

35 JSP: Ejemplo de JavaBeans (Cont ) } } else if (g < answer) { hint = "higher";} else if (g > answer) { hint = "lower"; } public boolean getsuccess() { return success; } public String gethint() { return "" + hint; } public int getnumguesses() { return numguesses; } public void reset() { answer = Math.abs(new Random().nextInt() % 100) + 1; success = false; numguesses = 0; } } 69 JSP: Redirigir mensajes Una petición se puede redirigir hacia otra página JSP, servlet o página HTML estática pasándole el contexto de la página que hace la invocación. El procesamiento continúa hasta el punto en el que ocurre la redirección para entonces detenerse por completo en esa página. El elemento <jsp:forward page= anotherpage.jsp /> redirige el procesamiento a la página anotherpage.jsp conservando todo el procesamiento realizado en la página actual. Un elemento <jsp:forward> también puede tener parámetros para proporcionar valores a la página invocada: <jsp:forward page= anotherpage.jsp > <jsp:param name= aname1 value= avalue1 /> <jsp:param name= aname2 value= avalue2 /> </jsp:forward> 70

36 JSP: Ejemplo, redirigir mensajes <html> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <% double freemem = Runtime.getRuntime().freeMemory(); double totlmem = Runtime.getRuntime().totalMemory(); double percent = freemem/totlmem; if (percent < 0.5) { %> <jsp:forward page="/jsp/forward/one.jsp"/> <% } else { %> <jsp:forward page="two.html"/> <% } %> </html> 71 JSP: Ejemplo, redirigir mensajes (Cont.) <!--one.jsp--> <html> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <body bgcolor="white"> <font color="red"> VM Memory usage < 50%. </html> <!--two.jsp--> <html> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <body bgcolor="white"> <font color="red"> VM Memory usage > 50%. </html> 72

37 JSP: Incluir páginas El elemento <jsp:include> puede usarse para redirigir una petición a cualquier página estática o dinámica que esté en el mismo contexto. La llamada también puede incluir los beans como parámetros de la petición. Por ejemplo, el elemento <jsp:include page= shopingcart.jsp flush= true /> permite tener acceso a cualquier bean y al contexto dinámico generado por la página invocante; finalmente, el contenido generado se inserta en el lugar del elemento <jsp:include>. La página incluida no puede hacer algunas cosas como encabezados HTTP o hacer galletas. 73 JSP: Ejemplo de incluir páginas La siguiente página inserta la fecha producida por otra. <html> <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <body bgcolor="white"> <font color="red"> <%@ page buffer="5k" autoflush="false" %> <p>in place evaluation of another JSP which gives you the current time: <%@ include file="foo.jsp" %> <p> <jsp:include page="/jsp/include/foo.html flush="true"/> by including the output of another JSP: <jsp:include page="foo.jsp" flush="true"/> :-) </html> El JSP que produce la hora: <!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved. --> <body bgcolor="white"> <font color="red"> <%= System.currentTimeMillis() %> 74

38 Repaso a la directiva page de JSP : Usada como forma para estructurar los Servlets generados 75 Propósito de la directiva page Dar información de alto nivel a cerca del Servlet que resulte del JSP. Puede controlar: Qué clases son importadas, Qué clases el Servlet extiende o hereda, Qué tipo MIME se genera, Cómo se maneja el multi-threading. Si el Servlet participa en sesiones, El tamaño y compartimiento del buffer de salida, Qué página maneja los errores inesperados. 76

39 El atributo Import Formato: page import= package.class %> page import= paqckage1,, package.classn %> Propósito: Generar las declaraciones para importar clases en la parte superior del Servlet. Notas: Aunque las páginas JSP pueden estar casi en cualquier parte del servidor, las clases usadas por JSP deben estar en directorios comunes del Servlet. Por ejemplo, con Tomcat esto es: $CATALINA_HOME/Webapps/ROOT/Web-INF/classes 77 Ejemplo del atributo import mab.* 78

40 Ejemplo del atributo import Primer Acceso Acceso Posterior 79 El atributo contenttype Formato: page contenttype= MIME-Type %> page contenttype= MIME-Type; Proposito: charset=character-set %> Especifica el tipo MIME de la página generada por el Servlet que resulta de la página JSP. 80

41 El atributo contenttype First Last Address Mark Baker Larry Brown Bill Gates Larry Ellison page contenttype="application/vnd.ms-excel" %> <%-- Son tabs en lugar de espacios entre las columnas --%> 81 El atributo isthreadsafe Formato: page isthreadsafe= true %> <%-- Default--%> page isthreadsafe= false %> Propósito: Le dice al sistema cuando el código no es threadsafe, de Notas: modo que el sistema pueda prevenir accesos concurrentes instruye al Servlet a implementar un SingleThreadModel. Por defecto es true El sistema asume que se tienen actualizaciones a campos y otros datos compartidos sincronizadamente. Proporcionando el valor false se puede afectar el buen desempeño. 82

42 Código Non-threadsafe Cuál es el problema con este código? <%! private int idnum = 0;%> <% String UserID = userid + idnum; out.println( Your ID is + userid +. ); idnum = idnum + 1; %> 83 Código Threadsafe <%! private int idnum = 0;%> <% synchronized(this) { String UserID = userid + idnum; out.println( Your ID is + userid +. ); idnum = idnum + 1; } %> acceso seguro a una variable compartida usando la declaración de sincronización normal. 84

43 Otros atributos de la directiva de page Session: Permite Elegir no participar en sesiones. Buffer: Cambia el tamaño minimo del buffer usado por el JspWriter. Autoflush: Requiere al desarrollador explícitamente vaciar el buffer. Extends: Cambia la clase padre del Servlet generado. Error: Indica una página para manejar los errores inesperados. iserrorpage: Indica que la página se puede utilizar como página del error. 85 Incluyendo archivos en documentos JSP 86

44 Incluyendo páginas al momento de la petición Formato: <%jsp:include page= URL relativo flush= true %> Propósito: Reutilizar contenido JSP, HTML o texto plano. El contenido JSP no puede afectar la página principal Solamente es utilizada la salida de JSP incluido. Permitir actualizaciones al contenido incluido sin cambiar la página principal. 87 Ejemplo de inclusión de páginas 88

45 Ejemplo de inclusión de páginas 89 Incluyendo archivos al momento de la traducción de la página. Formato: file= Relative URL %> Propósito: Reutilizar contenido JSP en múltiples páginas, donde el contenido JSP afecta la página principal. Notas: Los servidores no tiene que detectar cambios en los archivos incluidos, y en la práctica muchos no lo hacen de otra manera se necesita cambiar los archivos JSP cuando los archivos incluidos cambian. Puede utilizar mecanismos específicos del sistema operativo tal como el comando touch de UNIX: <%-- Navbar.jsp modified 27/01/03--%> <%@include file= Navbar.jsp%> 90

46 Contenido JSP reutilizable: Ejemplo: ContactSection.jsp page import="java.util.date" %> <%-- Los siguientes viene a ser campos en cada Servlet que resulta de una página JSP que incluye este archivo. --%> <%! private int accesscount = 0; private Date accessdate = new Date(); private String accesshost = "<I>No previous access</i>"; %> <P> <HR> This page 2000 <A HREF="http// This page has been accessed <%= ++accesscount %> times since server reboot. It was last accessed from <%= accesshost %> at <%= accessdate %>. <% accesshost = request.getremotehost(); %> <% accessdate = new Date(); %> 91 Usando el ContactSection Embebido en la página Web: <HTML> <BODY> <HR> <H1> My Page</H!> <HR> <%@ include file= contactsection.jsp %> </BODY> </HTML> 92

47 Creando bibliotecas de etiquetas JSP personalizadas Los bibliotecas de etiquetas JSP (JSP TL) permiten definir y utilizar etiquetas JSP similares a como se definen y usan en funciones típicas en los lenguajes de programación. 93 Bibliotecas de etiquetas JSP La introducción de los Servlets en 1996 hizo a Java una opción razonable para el desarrollo de páginas Web dinámicas. El debut de JavaServer Pages (JSP) seguido por la inclusión del soporte para etiquetas JSP, fueron pasos lógicos en la evolución hacia una rápida y mantenible implementación de páginas Web en Java. Pero la liberación de JSTL (JSP Standard Tag Library) hecha a mediados del 2002 representa tal vez el paso más grande en cuanto a velocidad y simplificación del proceso de desarrollo. JSP 2.0 fue liberado en el 2004 y trajo nuevas mejoras y ayudas adicionales, Tomcat 5.5 comenzó a darle soporte a esta versión en el

48 La biblioteca de etiquetas JSP Las páginas JSTL son también páginas JSP: JSTL es justamente un súper conjunto de la funcionalidad del JSP. También, todas las etiquetas JSTL es XML válido: Eso significa que si trata el contexto de una página fuera de las etiquetas JSTL como una plantilla de texto (el cual normalmente será HTML), las etiquetas JSTL restantes deben ser tratadas como XML válido. JSTL proporciona un conjunto de cuatro bibliotecas estándares (core, internationalization/format, XML y SQL) y soporte para un lenguaje de expresiones (EL: Expression Language). Un objetivo primario del diseño para JSTL y de EL fue simplificar el desarrollo e implementación de las páginas Web. Una etiqueta JSTL corresponde a alguna acción; llamándolas acciones, nos recuerdan explícitamente que están agregando comportamiento dinámico a una página que de otra manera sería estática. Puede usarse tanto expresiones JSP como JSTL EL. 95 Cómo obtener la Librería de Etiquetas? El proyecto Apache Taglibs es un repositorio opensource para las bibliotecas de etiquetas personalizadas JSP y proyectos asociados, tales como las clases TagLibraryValidator y extensiones a herramientas para creación de páginas que soportan biblioteca de etiquetas. Jakarta Taglibs - Para utilizar el estándar Taglib de la distribución Jakarta Taglibs, simplemente copie los archivos JAR que están en el directorio lib de la distribución al directorio de la aplicación Web-INF/lib. JSTL 1.0 API classes: jstl.jar, Standard Taglib JSTL implementation classes: standard.jar. 96

49 Instalando JSTL Para utilizar el JSTL, se debe tener un contenedor JSP 1.2 (o superior) instalado. Uno de los contenedores JSP mas comúnmente utilizados es el servidor Web Apache Tomcat. Usando sólo Tomcat podrá usar código JSP normal. Para utilizar JSTL, se deberá instalar JSTL en Tomcat. JSTL se puede obtener del mismo lugar que el Tomcat. El URL principal para el JSTL es Para usar JSTL, se deberá descomprimir los archivos de la distribución e instalarlos en el lugar correcto dentro de Tomcat. 97 Instalando el JSTL Copie el archivo JAR del JSTL al directorio lib de Tomcat: Si usas Windows la localización del directorio lib normalmente es $CATALINA_HOME\Webapps\ROOT\WEB-INF\lib. Copie los archivos JSTL TLD al directorio WEB-INF de Tomcat: El directorio Web-INF normalmente es: $CATALINA_HOME\ROOT\WEB-INF\tags\. Si tu examinas los archivos de la distribución JSTL, notarás que hay ocho con la extensión TLD que deberán ser copiados al directorio WEB-INF. Modificar el archivo Web.xml para incluir los archivos.tld: Finalmente se deberá modificar el archivo Web.xml y agregar una entrada para los archivos tag libraries que usted agregue. Esto consiste en agregar directivas <taglib> dentro de la directiva principal <Web-app>. 98

50 Instalando JSTL Web.xml 99 Instalando JSTL Después de completar los tres pasos anteriores, esta listo para probar la instalación del JSTL. Esto puede ser hecho creando una página JSP que utilice JSTL. Se debe de colocar el archivo JSP dentro del directorio raíz del Web. ($CATALINA_HOME\Webapps\ROOT). Una vez que el servidor Tomcat es iniciado, se debe ahora poder visualizar para ver su página. 100

51 Instalando JSTL Si no se tiene instalado correctamente el JSTL, normalmente no habrá mensaje de error. Si JSTL no esta interpretando sus etiquetas, éstas serán pasadas directamente al visualizador Web. El Visualizador Web interpretara estas etiquetas como etiquetas desconocidas del HTML. La mayoría de los visualizadores Web normalmente ignoran estas etiquetas desconocidas. 101 Bibliotecas de etiquetas JSTL Se habla comúnmente de JSTL como una biblioteca de etiquetas simple. JSTL son en realidad cuatro bibliotecas de etiquetas. Estos bibliotecas son: Core Tag Library etiquetas que son esenciales para cualquier aplicación Web. Ejemplos de esta biblioteca de etiquetas incluyen ciclos, evaluacion de expresiones, entradas y salidas basicas. Formatting/Internationalization Tag Library etiquetas que se utilizan para analizar datos. Algunas de estas etiquetas analizarán datos, tales como fechas basadas en forma diferente dependiendo de la localizacion. Database Tag Library etiquetas que pueden ser utilizar para tener acceso a las bases de datos con SQL. XML Tag Library etiquetas que se pueden utilizar para tener acceso a elementos XML. Debido a que XML es utilizado en muchas aplicaciones Web, el procesamiento de XML es una característica importante de JSTL. 102

52 Lenguaje de expresiones (EL) (EL) define un lenguaje para expresar expresiones simples en una sintaxis que sea fácil de aprender. (EL) fue inspirado en JavaScript y en cierto grado en XPath, pero EL es mucho más flexible con variables sin valor (null) y realiza más conversiones de tipos en forma automática. Estas características son importantes para aplicaciones en el Web, donde la entrada esta principalmente en forma de parámetros de petición: Los cuales pueden estar presentes en algunas peticiones pero en otras no, y el visualizador siempre envía los parámetros de petición como valores de texto, mientras que la aplicación a menudo necesita usarlos como números o valores booleanos (falso o verdadero). De la manera como EL está diseñado, rara vez necesitamos preocuparnos por ausencia de valores o conversión de tipos. 103 Lenguaje de expresiones (EL) Una expresión EL contiene variables y operadores. Cualquier Bean contenido en uno de los ámbitos del JSP (página, petición, sesión o aplicación) puede ser utilizada como una variable EL. Las expreesiones del EL combinadas con etiquetas JSTL tomadas de las cuatro bibliotecas estándares, provee un conjunto amplio y flexible de características. Todas las expresiones EL están encerradas en ${ }. Las expresiones en JSTL son siempre parte de valores de atributos en las etiquetas JSTL: Las expresiones pudieran ser la única parte del atributo o pudieran estar combinadas e incrustadas en literales de cadena. Los atributos de JSTL pueden también contener simples literales de cadenas. 104

53 Lenguaje de expresiones (EL) Aquí tenemos a EL que agrega 5 a una variable llamada amount: ${amount + 5} Si se desea agregar 5 al valor de una propiedad de un Bean, se utiliza el operador que accede a la propiedad: ${order.amount + 5} EL operador de acceso (punto) le dice a EL que busque por la propiedad indicada (amount, en este caso) en el Bean o colección especifica (order, en este caso, el cual puede ser un Bean o Java.util.Map). 105 Lenguaje de expresiones (EL) Como alternativa, se puede usar el operador de acceso a elementos de un arreglo: ${order['amount'] + 5} El valor entre los corchetes debe ser tanto una cadena para el nombre de la propiedad (como en este ejemplo) o una variable (o aun una sub-expresión EL completa ) que mantiene el nombre de la propiedad. Las expresiones EL pueden ser utilizadas para asignar valores a cualquier atributo de acción estándar o personalizado de JSP que acepte un valor dinámico (o valores de atributo request-time, como se llaman formalmente): <c:out value="${order.amount + 5}"/> 106

54 Lenguaje de expresiones (EL) EL proporciona soporte para acceder propiedades de objetos y elementos de colecciones, un conjunto de objetos implícitos y utilizar operadores relacionales lógicos y aritméticos. Para las propiedades indizadas, incluyendo arreglos y clases Java.util.List, los elementos pueden ser accedidos con la sintaxis siguiente: ${alist[4]} ${alist[somevariable]} 107 Lenguaje de expresiones (EL) Las propiedades de JavaBeans y los elementos de Java.util.Map (los cuales representan un conjunto de pares nombre/valor) pueden ser accedidos usando unas de la siguientes maneras: En las primeras dos expresiones, podemos acceder a una propiedad llamada aproperty en un JavaBean o una entrada a Map con la clave aproperty. En la tercera expresión (note que no hay comillas), tenemos acceso a un elemento de anobject con un nombre contenido en la variable avariablecontainingpropertyname: ${anobject.aproperty} ${anobject["apropertyname"]} ${anobject[avariablecontainingpropertyname]} 108

55 Lenguaje de expresiones (EL) Existe un numero de variables implícitas de EL: Variable name pagescope requestscope Description A collection (a Java.util.Map) of all page scope variables. A collection (a Java.util.Map) of all request scope variables. sessionscope A collection (a Java.util.Map) ) of all session scope variables. applicationscope param paramvalues header headervalues cookie initparam pagecontext A collection (a Java.util.Map) of all application scope variables. A collection (a Java.util.Map) of all request parameter values as a single String value per parameter. A collection (a Java.util.Map) of all request parameter values as a String array per parameter. A collection (a Java.util.Map) of all request header values as a single String value per header. A collection (a Java.util.Map) of all request header values as a String array per header. A collection (a Java.util.Map) of all request cookie values as a single Javax.Servlet.http.Cookie value per cookie. A collection (a Java.util.Map) of all application initialization parameter values as a single String value per parameter. An instance of the Javax.Servlet.jsp.PageContext class, providing access to various request data. 109 Lenguaje de expresiones (EL) Los operadores describen lo que se desea hacer con las variables. Los operadores que se pueden usar en una expresión EL parecerán familiar si ya se ha utilizado algún lenguaje de programación antes, porque son parecidos a los utilizados por la mayoría de los lenguajes: 110

56 Lenguaje de expresiones (EL) Operator Description. Access a Bean property or Map entry. [] Access an array or List element. () Group a subexpression to change the evaluation order.? : Conditional test: condition? iftrue : iffalse. + Addition. - Subtraction or negation of a value. * Multiplication. / or div Division. % or mod Modulo (remainder). == or eq Test for equality.!= or ne Test for inequality. < or lt Test for less than. > or gt Test for greater than. <= or le Test for less than or equal. >= or ge Test for greater than or equal. && or and Test for logical AND. or or Test for logical OR.! or not Unary Boolean complement. empty func(args) Test for an empty variable value: null, an empty String, or an array, Map, or Collection without entries). A function call, where func is the function name and args is zero, one or more comma-separated function arguments. 111 Bibliotecas de etiquetas JSTL JSTL 1.1 fue pensado para acoplar JSTL con JSP 2.0. El cambio más visible es que el JSTL 1.0 bibliotecas gemelas" (una que acepta expresiones EL y un conjunto que acepta expresiones de Java) han sido remplazadas por un conjunto sencillo de bibliotecas que pueden ser utilizadas tanto con EL o con expresiones Java. Cuando se importa cualquier biblioteca de etiquetas dentro de una página JSP, se define un prefijo que señala un espacio de nombres que corresponde a las etiquetas en esa biblioteca. Note que se podría definir sus propios prefijos, pero no existe una buena razón para esto. Las cuatro bibliotecas de etiquetas estándar, con sus convenciones de prefijos definidos JSTL, se enumeran en la diapositiva siguiente. 112

57 Bibliotecas de etiquetas JSTL biblioteca URI Prefijo Core c XML processing x I18N formatting fmt Database access sql Functions fn 113 Bibliotecas de etiquetas JSTL Otro punto por mencionar acerca de la biblioteca de etiquetas JSTL es que hay realmente dos versiones de la mayoría de las etiquetas. Un conjunto toma ventaja del nuevo lenguaje de expresiones y el otro no; Las etiquetas que no hacen uso de un lenguaje de expresiones utilizan expresiones request-time : Esto es útil si se desea la flexibilidad proporcionada por las etiquetas estándares pero no queremos utilizar el lenguaje de expresiones soportado aun, Para tener acceso a estas bibliotecas, simplemente añada -rt al final del URI que señala a la biblioteca: <%@ taglib prefix="c" uri=" %> 114

58 Biblioteca de etiquetas JSTL Para usar la biblioteca de etiquetas core del EL en una página, incluya la directiva del siguiente ejemplo en la parte superior de su página: taglib prefix="c" uri= %> Para usar las etiquetas que están en esa librería core, añada un prefijo a cada etiqueta en la página con el prefijo que se ha señalado en la declaración que se incluyó: <c:out value="${anexpression}"/> 115 Reglas más flexibles del formato de documentos JSP La especificación JSP soporta dos tipos de páginas JSP: páginas JSP regulares conteniendo cualquier tipo de texto o marcado y, Documentos JSP los cuales son documentos XML bien formados; es decir, documentos con elementos del XHTML y de JSP, Para satisfacer los requerimientos de bien formado, las directivas JSP y los elementos scripting en un documento JSP deben estar escritos con una sintaxis diferente a la de una página regular JSP. 116

59 Reglas más flexibles del formato de documentos JSP Página JSP regular Documento JSP page attribute list %> <jsp:directive.page attribute list /> include file="path" %> <jsp:directive.include file="path" /> <%! declaration %> <jsp:declaration>declaration</jsp:declaration> <%= expression %> <jsp:expression>expression</jsp:expression> <% scriptlet %> <jsp:scriptlet>scriptlet</jsp:scriptlet> 117 Ejemplos JSTL Sencillos 118

60 Ejemplo (a) Como ejemplo simple considere el siguiente fragmento de código que utiliza JSTL. La acción set crea una variable llamada browser y le asigna el valor de la propiedad User-Agent. La acción out imprime entonces el valor de la variable browser. <%@ taglib prefix="c" uri=" %> <html> <head> <title>ejemplo Simple</title> </head> <body> <c:set var="browser" value="${header['user-agent']}"/> <c:out value="${browser}"/> </body> </html> 119 Ejemplo (a) 120

61 Ejemplo (b) taglib prefix="c" uri=" %> <html> <head> <title>objetos implictos JSTL</title> </head> <body bgcolor="#ffffcc"> <h3>header info:</h3> <c:foreach var="head" items="${headervalues}"> param: <c:out value="${head.key}"/><br> values: <c:foreach var="val" items="${head.value}"> <c:out value="${val}"/> </c:foreach> <p> </c:foreach> </body> </html> 121 Ejemplo (b) 122

62 Etiquetas XML XML esta siendo cada vez mas importante para los creadores de páginas y JSTL proporciona acciones XML que conducen las necesidades básicas de estos desarrolladores. Las acciones XML pueden ser divididas en core (núcleo), control de flujo (control flow) y acciones de transformación. Las acciones XML core son parecidas a las acciones proporcionadas por core discutidas anteriormente, e incluyen <x:out>, <x:set>, and <x:parse>. La principal diferencia entre las acciones core discutidas antes y las acciones XML core es que las acciones XML soportan expresiones XPath, mientras las acciones core no. De hecho, las acciones XML están basan en expresiones XPath. Xpath es un lenguaje para definir partes de un documento XML; XPath utiliza expresiones del tipo path para identificar nodos en un documento XML. 123 Etiquetas XML Las acciones del flujo de control XML son las mismas que las acciones del core discutidas anteriormente. Estas incluyen: <x:if>, <x:choose>, <x:when>, <x:otherwise>, and <x:foreach>. La principal diferencia es que utilizan el atributo select para especificar expresiones XPath. ejemplo: <x:foreach select="$output/portfolio/stock"> <x:out select="price"/> </x:foreach> En la diapositiva siguiente xml-ex1.jsp utiliza las bibliotecas de etiquetas core y XML para procesar un documento XML. En este ejemplo, el documento XML es incrustado dentro de la página y la etiqueta <x:parse> es utilizada para analizar el documento. Entonces una expresión XPath se utiliza para seleccionar artículos dentro del documento. 124

63 xml-ex1.jsp - i <%@ taglib prefix="c" uri=" %> <%@ taglib prefix="x" uri=" %> <html> <head><title>jstl Support for XML</title></head> <h3>books Info:</h3> <c:set var="xmltext"> <books> <book> <title>book Title A</title> <author>a. B. C.</author> <price>17.95</price> </book> <book> <title>book Title B</title> <author>x. Y. Z.</author> <price>24.99</price> </book> </books> </c:set> 125 xml-ex1.jsp ii <x:parse xml="${xmltext}" var="output"/> <b>the title of the first book is</b>: <x:out select="$output/books/book[1]/title"/> <br> <b>the price of the second book</b>: <x:out select="$output/books/book[2]/price"/> </body> </html> 126

64 xml-ex2.jsp taglib prefix="c" uri=" %> taglib prefix="x" uri=" %> <html> <head> <title>jstl Support for XML</title></head> <h3>portfolio</h3> <c:import url=" var="xmldoc"/> <x:parse xml="${xmldoc}" var="output"/><p> <table border="2" width="50%"> <tr> <th>stock Symbol</th> <th>company Name</th> <th>price</th> </tr> <tr> <x:foreach select="$output/portfolio/stock" var="item"> <td><x:out select="symbol"/></td> <td><x:out select="name"/></td> <td><x:out select="price"/></td></tr> </x:foreach> </table> </body> </html> 127 xml-ex2.jsp 128

65 Extendiendo el JSTL También es posible que se pueda utilizar JSTL como base para desarrollar sus propias etiquetas. Algunas clases abstractas son proporcionadas de tal manera que asisten en el desarrollo rápido de etiquetas y promueven la integración de sus propios etiquetas personalizados con el conjunto de etiquetas JSTL. Por ejemplo, se puede construir sus propias etiquetas personalizados que hagan uso de los mecanismo EL de JSTL. Mediante extender: Javax.Servlet.jsp.jstl.core.ConditionalTagSupport, se podría escribir una etiqueta condicional simplemente implementado un método que regrese un valor booleado correspondiente con el comportamiento condicional deseado de la etiqueta. o, Javax.Servlet.jsp.jstl.core.IteratorTagSupport, Le permite a implementar fácilmente etiquetas de iteración. 129 Desarrollando bibliotecas de etiquetas personalizadas como archivos de etiquetas Comenzando con la versión 2.0 de la especificación JSP, las acciones personalizadas de la biblioteca de etiquetas pueden ser implementadas de dos maneras: Como clases de java o, Como archivos de texto regular conteniendo elementos de JSP. En versiones anteriores, las acciones personalizadas podían solamente ser implementadas como clases de java, dejándolas con esto fuera del alcance de los no programadores. Otro problema con la implementación en java de las acciones personalizadas es que era forzado a imprimir código HTML con llamadas a println() para producir contenido complejo El mismo problema que JSP se supone que resuelve. 130

66 Creando y usando un archivo de etiquetas Un archivo de etiquetas es un archivo de texto que contienen elementos JSP implementando la funcionalidad de acciones personalizadas. Se debe utilizar un archivo con extension.tag* para identificar este tipo de archivo en el contenedor Web. Todos los elementos JSP que se pueden utilizar en un archivo JSP también pueden ser utilizados como un archivo de etiqueta, con excepción a la directiva page (un archivo de etiqueta no es una página). También hay algunas directivas JSP que pueden ser permitidas en un archivo de etiquetas, como lo veremos mas adelante. Aparte de esto, crear un archivo de etiquetas no es diferente de crear una página JSP. Una vez creado e instalado, el archivo de etiquetas se utiliza igual que las acciones personalizadas implementadas en java que se han visto anteriormente. 131 Invocación de una etiqueta Obtain handler dostarttag() EVAL_BODY_INCLUDE Set properties setpagecontext() setparent() SKIP_BODY Process body Set attribute values SKIP_PAGE doendtag() EVAL_PAGE release() release() Stop Continue 132

67 Un archivo de etiquetas sencillo copyright.tag tag body-content="empty" %> taglib prefix="c" uri=" %> <jsp:usebean id="now" scope="application" class="java.util.date" /> Copyright ${now.year } My Company Este archivo de etiquetas inserta una declaración de copyright con el año actual en la página que se llama. La primera línea es una directiva de etiqueta. Se puede utilizar atributos de esta directiva para especificar una descripción, un icono o un ejemplo, que una herramienta de desarrollo de páginas puede mostrar al diseñador. Otros atributos le permiten especificar si las expresiones EL deben ser procesadas, así como información relacionada al código del scripting, ejemplo: el mismo tipo de información que se especifico con la directiva page en las página JSP. 133 Nota de la etiqueta body-content Un manejador de etiquetas para una etiqueta con un cuerpo es implementado de manera diferente dependiendo si el manejador de etiqueta necesita interactuar con el cuerpo o no: Por interactuar, queremos decir que el manejador de etiqueta lee o modifica los contenidos del cuerpo o causa evaluación interactiva del cuerpo. 134

68 Un archivo de etiquetas sencillo En la mayoría de los casos, los autores de archivos de etiquetas sólo se preocupan del atributo que define el contenido del cuerpo (body-content): Este atributo dice cómo el cuerpo de la acción personalizada debe manejarse, y debe tener uno de los siguientes valores: empty, scriptless (por defecto), o tagdependent. Si es empty (vació), el intentar usar el cuerpo de la acción personalizada da como resultado un error de sintaxis. El valor scriptless significa que el cuerpo puede contener algunos elementos JSP : En otras palabras, el texto de plantilla, las expresiones EL, las acciones estándares y las acciones personalizadas, todas son permitidas. Si el atributo se establece a tagdependent el cuerpo del elemento de la acción es tratado como un texto de plantilla (ejemplo, los elementos de la acción y las expresiones EL en el cuerpo no son procesadas, son manejados como texto plano). 135 Un archivo de etiquetas sencillo El resto del archivo de etiquetas luce como una página ordinaria JSP. Declara que utiliza la biblioteca JSTL core, una acción estándar <jsp:usebean> para crear una instancia de la clase Java.util.Date que representa la hora actual y finalmente hace salir el texto estático mezclado con un valor dinámico (el año actual) generado por la expresión EL: ${now.year }.* 136

69 Notas Los archivos Tag pueden ser colocados directamente en la aplicación Web bajo la estructura del directorio o subdirectorio Web-INF/tags. Cada directorio que contiene archivos tag files representa un tag library separado: Web-INF/tags/ mytags/ copyright.tag forevenandodd.tag htmlformat.tag motd.tag myothertags/ foo.tag bar.tag Aquí tenemos dos carpetas de tag: mytags y myothertags. La carpeta mytags contiene el archivo copyright.tag mas otros tres archivos tag. Por defecto, el nombre de las acciones implementadas personalizadas por el archivo tag es el nombre de archivo menos la extensión.tag, así que el archivo copyright.tag representa el nombre de la acción personalizada llamada copyright en la librería mytags. 137 Mas ejemplos Una página JSP debe declarar que utiliza un tag library representada por los archivos tag en la estructura de la aplicación Web con una directiva ligeramente diferente que el usado anteriormente: <%@ page contenttype="text/html" %> <%@ taglib prefix="my" tagdir="/web-inf/tags/mytags" %> <html> <body bgcolor="white">... <my:copyright/> </body> </html> 138

70 Mas ejemplos Note que el atributo tagdir es utilizado en lugar que el atributo del URI. El valor del atributo tagdir es la trayectoria relativa del contexto al directorio que contiene los archivos tag para la biblioteca. Puede parecer redundante tener que especificar la parte del path /Web-INF/tags, puesto que todos los directorios tag de la biblioteca deben comenzar con este path. Aunque es costoso, el grupo que creó la especificación JSP decidió requerir esto para tener consistencia con otros atributos que toman valores del path. Los archivos tag pueden ser empaquetados en archivos JAR. Esto requiere un poco mas de trabajo y es sobre todo de interés para los archivos tag prever ser reutilizado en muchas aplicaciones. 139 El Tag Handler Hay dos interfases que describen al tag handler: Tag usado por los manejadores de etiquetas simples no interesados en la manipulación del contenido del cuerpo. BodyTag una extensión del tag dando acceso al manejador al cuerpo. El Tag Handler tiene dos métodos de acción principales: dostarttag() procesa el comienzo del tag de esta acción. doendtag() procesa el final del tag de esta acción. Llamado después de retornar de dostarttag. release() libera recursos 140

71 Otros ejemplos Tags personalizados 141 Tag Handler Hola mundo Las subclases simples de tag handler soportan la llamada a las clases SimpleTagSupport. Esta clase es una muy buena implementación de la interfase SimpleTag. Proporciona implementacion de los cinco métodos de esta interfaz, el más importante es el método dotag(). El método dotag() en SimpleTagSupport realmente no hace nada hasta que el desarrollador sobreescribe este metodo y codifica la funcionalidad de su tag. El código en la diapositiva siguiente muestran este método en acción. 142

72 Tag Handler Hola mundo // Greeter.Java package mab; import Javax.Servlet.jsp.JspException; import Javax.Servlet.jsp.tagext.SimpleTagSupport; import Java.io.IOException; public class Greeter extends SimpleTagSupport { public void dotag() throws JspException, IOException { getjspcontext().getout().write( "Hello, world!" ); } Compile y sustituya la clase en \Web-INF\classes\mab 143 Tag Handler Hola mundo Esta clase utiliza simplemente dotag() para imprimir el Hola mundo al stream de salida. Las dos declaraciones de importación nos dan acceso a todas las clases requeridas: Usted necesitara el Servlet y las clases JSP API en su classpath para que este código compile: Los usuario de Tomcat encontrarán estos en common/lib como jasper-api.jar and Servlet-api.jar. Por estas razones, esta clase extiende la clase SimpleTagSupport y espera que usted sobrescriba el método dotag(). 144

73 Tag Handler Hola mundo Otra consecuencia de extender la clase es que un método llamado setjspcontext() fue llamado por el contenedor antes del dotag(), que hizo la información actual del contexto del JSP disponible vía getjspcontext(). Utilizamos este método para conseguir el acceso al stream de salida del JSP. 145 Tag Handler Hola mundo Mapeo de tags a clases: Asumimos que esta clase esta en /Web- INF/classes, el siguiente paso debería escribir el archivo TLD. El TLD (Tag Library Descriptor) es un archivo XML que el contenedor utiliza para trazar los tags personalizados de sus JSPs a su correspondiente implementación de clases simples del tag handler. En la siguiente presentación veremos un demo.tld, un archivo simple del TLD, que cuando esta instalado en el directorio /Web- INF/tags/mytags, traza una un tag llamado 'greeter' a la clase 'demo.mytags.tags.greeter'. 146

74 Tag Handler Hola mundo <! demo.tld --> <?xml version="1.0"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" " <!-- demo.tld --> <taglib> <tlib-version>1</tlib-version> <jsp-version>1.2</jsp-version> <short-name>demo Tag Library</short-name> <tag> <name>greeter</name> <tag-class>mab.greeter</tag-class> <body-content>empty</body-content> </tag> </taglib> Drop this file in Web-INF/tags/mytags/ 147 Tag Handler Hola mundo Mapeando Tags a clases: Los elementos de tlib-version y short-name son bastante directos y se relacionan con la versión del tag library y con el prefijo por defecto del tag respectivamente. El elemento de uri, sin embargo vale la pena discutirlo: Cuando se inicializa, el contenedor usa una característica de auto-discovery para trazar todos los elementos de uri a TLD correspondiente; Por lo tanto esta cadena debe ser única dentro de la aplicación. As of JSP 1.2, nosotros no tenemos ninguna necesidad de editar el archivo Web.xml para desplegar un tag personalizado la caracteristica del auto-discovery nos ahorra esta inconvenienza. La parte interesante es el contenido del elemento del <tag>. Es donde, entre otras cosas, nosotros podemos dar a nuestro tag un nombre, definir la clase asociado con el tag handler, y determinar si nuestro tag se le debe o no permitir acceso al contenido del cuerpo. 148

75 Tag Handler Hola mundo Cortesía de las directivas taglib el atributo uri, tenemos dicho que el JSP esta donde esta nuestro archivo TDL y, por tanto, donde se localiza nuestra clase simple de la implementación del tag handler. El atributo uri traza directamente a uno de los mappings del contenedor creado cuando se inicializo; El contenedor traza alternadamente puntos a la información del TLD. Generalmente, esto se toma con cuidado, si el atributo uri no resuelve la traza al contenedor, se asume el path del archivo: Esto es útil solo cuando los valores idénticos del uri se encuentran en diferentes archivos TLD. 149 Hello World Tag Handler Este código muestra como podemos utilizar nuestra etiqueta greeter en un JSP: <!-- greeter.jsp --> <?xml version="1.0"?> <jsp:root xmlns:jsp=" xmlns:c=" xmlns:my="urn:jsptld:/web-inf/tags/mytags/demo.tld" version="1.2"> <jsp:directive.page contenttype="text/html"/> <html> <head><title>jsp Page</title></head> <body> <!-- prints Hello World. --> <my:greeter /> </body> </html> </jsp:root> 150

76 Tag Handler Hola mundo Aquí esta mi comprensión de cómo trabaja el tag personalizado usando el tag "Hello world!" como ejemplo: Cuando la página greeter.jsp es solicitada por primera vez, el servidor Tomcat traducirá la página JSP a una clase de Java, Cuando el tag personalizado <my:greeter/>es encontrado durante la traducción, el servidor Tomcat hará un seguimiento del archivo TLD para localizar al archivo Greeter.class : Observe que el archivo TLD es proporcionado en el elemento jsp:root. Después el servidor Tomcat sustituirá el tag personalizado con un cierto código de Java al instanciar un objeto de la clase tag, inicializara el objeto y llamara al método dotag(). Para obtener datos de salida en la página, usted puede usar el stream del objeto pagecontext proporcionado por la extinción tag JSP, pagecontext.getout(): Esta es la manera de como "Hello world!" es producido. 151 Ejemplo final de Tag 152

77 Ejemplo final de Tag 153 Ejemplo final de Tag 154

78 Ejemplo final de Tag 155 Ejemplo final de Tag Los pasos usados por la extensión JSP para facilitar el procesamiento de los tag personalizados pueden ser resumido como sigue: Instanciamiento del objeto tag, Llamando a setpagecontext() y setparent() del objeto tag, Procesando los atributos del tag. Ver mis otras notas sobre como los valores de los atributos son pasados al objeto tag, Llamando a dostarttag() del objeto tag, que puede retornar una bandera a la petición para saltar el cuerpo y realizar una lógica condicional del cuerpo, Procesamiento del cuerpo del tag, Llamando a doafterbody() del objeto tag, que puede retornar una bandera a la petición para procesar el cuerpo otra vez y realizar un ciclo lógico del cuerpo, Llamando a doendtag() del objeto tag, Llamando a release() del objeto tag. 156

79 Open Source Tag Libraries ver Internationalization, Database access, Sending Mail, JNDI, Data/time, Populating/validating fields, Per regular expressions, Extracting data from other Web pages XSL transformations, And so on 157 Open Source Tag Libraries 158

80 Integrando Servlets y JSPs 159 Porque combinar Servlets y JSPs? Panorama: Se trata de usar JSP para hacer más fácil el desarrollo y mantenimiento de contenido HTML: Para código dinámico simple, llamar código del Servlet desde expresiones scripting, Para casos moderadamente complejos, utilizar clases personalizadas llamadas expresiones scripting, Para casos mas complicados, use Beans y tags personalizados. Pero, eso no es suficiente: Para procesamiento complejo, JSP es lento, Aún con la conveniencia de separar clases, Beans y tags personalizados. La asunción detrás es que una página sencilla de una apariencia sencilla. 160

81 Arquitectura Enfoque: La petición original es contestada por el Servlet, El Servlet proceso los datos solicitados, hace búsquedas en la base de datos, accede a la lógica del negocio, etc. La petición se remite a una página JSP para darle formato a los resultados, Diferentes páginas JSP pueden ser usadas para manejar diferentes tipos de formatos. Terminología: A menudo llamada la arquitectura Model View Controller es una aproximación a JSP. Algo formalizado lo podemos ver en Apache struts framework Apache Struts 162

82 Enviando peticiones Primero, llamar al método getrequestdispatcher de ServletContext: Proveer un URL relativo a la raíz de las aplicaciones Web. Ejemplo: String url = /presentations/presentation1.jsp ; RequestDispatcher dispatcher = getservletcontent().getrequestdispatcher(url); En segundo lugar: Llamar a forward para transferir completamente el control a la página destino vea el ejemplo siguiente. Llama a include para insertar la salida de la página destino y continuar. 163 Enviando peticiones: Código ejemplo. public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { String operation = request.getparameter( operation ); if (operation == null) operation = unknown ; if (operation.equals( operation1 )) { gotopage( /operations/presentation1.jsp, request, response); } else if (operation.equals( operation2 )) { gotopage( /operations/presentation2.jsp, request, response); } else { gotopage( /operations/unknownrequesthandler.jsp, request, response); } 164

83 Enviando peticiones: Código ejemplo.(cont..) public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { ReuestDispatcher dispatcher = getservletcontext(). getrequestdispatcher(address); dispatcher.forward(request, response); } 165 Almacenar datos para uso posterior: El objeto session Propósito: Almacenar los datos que el Servlet buscó y que la página JSP utilizará en esta petición y en las peticiones siguientes del mismo cliente Sintaxis del Servlet para almacenar datos: SomeClass value = new SomeClass( ); Session.setAttribute( key, value); // Use RequestDispatcher to forward to the JSP page. 166

84 Almacenar datos para uso posterior: : The Servlet Context Propósito: Almacenar los datos que el Servlet buscó y que la página JSP utilizara en esta petición y en las peticiones siguientes del mismo cliente Sintaxis del Servlet para almacenar datos : SomeClass value = new SomeClass( ); Get ServletContext().setAttribute( key, value); //Use RequestDispatcher to forward to JSP page 167 On-line Travel Agent 168

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

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

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

Elementos sintácticos de una JSP.

Elementos sintácticos de una JSP. 1 JSP's Una JSP es un documento de texto parecido a HTML que describe como procesar una petición para crear una respuesta. Permiten separar la generación de interfaz de usuario (HTML) de la lógica de negocio.

Más detalles

Laboratorio de Aplicaciones Telemáticas

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

Más detalles

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

Java Server Pages (JSP)

Java Server Pages (JSP) Java Server Pages (JSP) Dr. Víctor J. Sosa S. Java Server Pages (JSP) Características El Servidor Java de Páginas (Java Server Pages, JSP) ofrece no sólo la independencia de operar en diferentes plataformas

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

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 14. Java Server Pages (JSP) Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Ejemplificar la manera de desarrollar aplicaciones i Java EE usando páginas JSP. Describir

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

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

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

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

Más detalles

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

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

Más detalles

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

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

Más detalles

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

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

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

Más detalles

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

Aplicaciones Cliente - Servidor

Aplicaciones Cliente - Servidor Aplicaciones Cliente - Cliente Presentación + Lógica aplicación SQL Acceso remoto a información a través de red. Un servidor - múltiples clientes. Almacenamiento datos es esperan peticiones: protocolos

Más detalles

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor. Sesión 03: Lenguajes web del servidor Competencias a Conseguir: - Conocer el entorno de trabajo a nivel de servidores web. - Instalación del localhost (Servidor Local). - Repaso general de PHP y ejercicios

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

Ejemplos básicos de webmathematica para profesores

Ejemplos básicos de webmathematica para profesores Ejemplos básicos de webmathematica para profesores Cualquier cálculo hecho dentro Mathematica puede ser realizado usando webmathematica con dos limitaciones significativas. Primero, al usar webmathematica,

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

4. DESARROLLO WEB CON JAVA JSP & SERVLETS

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

Más detalles

Escribir código HTML en los servlets es tedioso. que hay que utilizar las instrucciones print, println, etc. Es decir, HTML está dentro de java.

Escribir código HTML en los servlets es tedioso. que hay que utilizar las instrucciones print, println, etc. Es decir, HTML está dentro de java. Java Server Pages Dr. Raúl Pérez Introducción Escribir código HTML en los servlets es tedioso y se presta a equivocarse fácilmente debido a que hay que utilizar las instrucciones print, println, etc. Es

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

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

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

JavaScript como Orientación a Objetos

JavaScript como Orientación a Objetos Gustavo Lacoste (gustavo@lacosox.org) 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

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

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

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

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

Más detalles

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

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

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

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Configuración servidor Tomcat

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

Más detalles

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

Capítulo 1 Documentos HTML5

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

Más detalles

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

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

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

Más detalles

Programación Orientada a Objetos con Java

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

Más detalles

TUTORIAL DE PHP. M. en C. Erika Vilches. Parte 2. http://www.erikavilches.com

TUTORIAL DE PHP. M. en C. Erika Vilches. Parte 2. http://www.erikavilches.com TUTORIAL DE PHP M. en C. Erika Vilches Parte 2 http://www.erikavilches.com Enunciados Condicionales Inicia con la palabra clave if seguida de una condición entre paréntesis $number = 5; if ($number < 10)

Más detalles

(de http://www.coreservlets.com/, documentos 09-JSP-Intro.pdf y 10-JSP-Scripting- Elements.pdf) Página 296

(de http://www.coreservlets.com/, documentos 09-JSP-Intro.pdf y 10-JSP-Scripting- Elements.pdf) Página 296 13. APÉNDICE 7. JAVA SERVER PAGES (JSP) JJ.. RAMÓN GARCÍÍA ESSCRIIVÁ ((DSIIC -- UPV)) (de http://www.coreservlets.com/, documentos 09-JSP-Intro.pdf y 10-JSP-Scripting- Elements.pdf) Página 296 13.1. INTRODUCCIÓN

Más detalles

LiLa Portal Guía para profesores

LiLa Portal Guía para profesores Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista

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

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

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

Operación Microsoft Access 97

Operación Microsoft Access 97 Trabajar con Controles Características de los controles Un control es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comando o un rectángulo que se coloca en un formulario o informe

Más detalles

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP Departamento de Lenguajes y Sistemas Informáticos Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP Curso 001-00 ASP, CFM, JSP y PHP (I) Diferente tecnologías con un mismo propósito: proporcionar

Más detalles

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web. Modulo I. Introducción a la Programación Web. 1.1 Servidor Web. Antes de analizar lo que es un servidor Web y llevara a cabo su instalación, es muy importante identificar diferentes elementos involucrados

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

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

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014 RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014 FAMILIA PROFESIONAL: INFORMATICA Y COMUNICACIONES MATERIA: 28. DESARROLLO WEB EN ENTORNO SERVIDOR CURSO: 2º DE CFGS DESARROLLO DE APLICACIONES

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

apa de presentación: JSP Copyright Universidad de Alicante JSP básico 1 Capa de presentación: JSP Sesión 1: JSP Básico

apa de presentación: JSP Copyright Universidad de Alicante JSP básico 1 Capa de presentación: JSP Sesión 1: JSP Básico Especialista en Aplicaciones y Servicios Web con Java Enterprise apa de presentación: JSP Copyright 2003-2004 Universidad de Alicante JSP básico 1 Capa de presentación: JSP Sesión 1: JSP Básico apa de

Más detalles

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Sintaxis y Convenciones de Java. M. en C. Erika Vilches Sintaxis y Convenciones de Java M. en C. Erika Vilches Estructura del Código en Java Hay una clase en un archivo fuente Hay métodos en una clase Hay enunciados en un método Anatomía de una Clase Cuando

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

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

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

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

Más detalles

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP. Duración: 60 horas FUNDAMENTACIÓN DEL CURSO PROGRAMACIÓN EN PHP El Lenguaje PHP o Hypertext PreProcessor, al igual que C y Perl maneja programación estructurada, lo que le permite a los programadores con

Más detalles

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported PROGRAMACIÓN ORIENTADA A OBJETOS APLICADA A BASES DE DATOS Por LAURA NOUSSAN LETTRY BrowserSQL MySQL Workbench en Linux (Abril 2015, Mendoza) Aviso Legal El presente libro electrónico se distribuye bajo

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

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

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

Instalación y configuración de Windows SharePoint Services (WSS) 2003

Instalación y configuración de Windows SharePoint Services (WSS) 2003 Instalación y configuración de Windows SharePoint Services (WSS) 2003 Autor : Gustavo Velez Para : www.gavd.net/servers Fecha : 15-01-2005 Versión : 1.0.1 Prerrequisitos para la instalación: Windows 2003

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

aplicaciones web: ASP, CFM, JSP y PHP

aplicaciones web: ASP, CFM, JSP y PHP Departamento de Lenguajes y Sistemas Informáticos Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP Curso 2001-2002 Sergio Luján Mora ASP, CFM, JSP y PHP (I) Diferente tecnologías con un

Más detalles

Curso de PHP con MySQL Gratis

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

Más detalles

Curso PHP Módulo 1 R-Luis

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

Más detalles

Programa de Educación a Distancia MOODLE EDUC. (Modular Object Oriented Distance Learning Enviroment)

Programa de Educación a Distancia MOODLE EDUC. (Modular Object Oriented Distance Learning Enviroment) MOODLE EDUC (Modular Object Oriented Distance Learning Enviroment) 1) La Interfaz de la asignatura Manual del Profesor Contiene las mismas 5 zonas que observa el alumno. Sin embargo, respecto a los bloques

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

JSP (I) Aplicaciones Distribuidas

JSP (I) Aplicaciones Distribuidas JSP (I) Aplicaciones Distribuidas Contenido Limitación Modelo Servlets Definición. Elementos de Script Expresiones y declaraciones. Directivas. JavaBeans. Otros aspectos de interés Etiquetas de Extensión

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

Facultad de Ingeniería Escuela de Ciencias y Sistemas 2011-14674 Estructura de Datos Guatemala 2013 JSF + JSP + RichFaces

Facultad de Ingeniería Escuela de Ciencias y Sistemas 2011-14674 Estructura de Datos Guatemala 2013 JSF + JSP + RichFaces JSF + JSP + RichFaces Manual Introductorio al uso de JSF, JSP y RichFaces en Java El siguiente documento es un manual muy introductorio, ya que la primera vez que me encontré con estas 3 frases juntas

Más detalles

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta. Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA raul@laeff.inta.es Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun

Más detalles

Java EE JavaServer Pages (JSP)

Java EE JavaServer Pages (JSP) Java EE JavaServer Pages (JSP) Aplicaciones Web/Sistemas Web Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Material bajo

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

Kaldeera Advanced Forms 2009 Guía del usuario

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

Más detalles

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

Introducción a PHP. * No es necesario declarar previamente las variables.

Introducción a PHP. * No es necesario declarar previamente las variables. Introducción a PHP La programación de sitios web cada día está más orientada al desarrollo de páginas dinámicas y aplicaciones, o sea sitios donde el usuario pueda interactuar con la web. Dentro de los

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,

Más detalles

07 Java EE Tarea 7. Laboratorio de proyectos de tecnologías de la información III Prof. Emmanuel Oropeza Gonzalez

07 Java EE Tarea 7. Laboratorio de proyectos de tecnologías de la información III Prof. Emmanuel Oropeza Gonzalez Instituto Politécnico Nacional Centro de Estudios Científicos y Tecnológicos 9 Laboratorio de proyectos de tecnologías de la información III Prof. Emmanuel Oropeza Gonzalez 07 Java EE Tarea 7 http://coatl.cecyt9.ipn.mx/eoropeza/home.html

Más detalles

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

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Java Server Pages (JSP) Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Jesús Arias Fisteus jaf@it.uc3m.es Java Server Pages (JSP) p. 1 Introducción Un servlet no resulta adecuado para presentación

Más detalles

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

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Java Server Pages (JSP) Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Jesús Arias Fisteus jaf@it.uc3m.es Java Server Pages (JSP) p. 1 Introducción Un servlet no resulta adecuado para presentación

Más detalles

Instalar y configurar W3 Total Cache

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

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

MANUAL INSTALACIÓN DE SUGARMINI PARA SUGAR CRM

MANUAL INSTALACIÓN DE SUGARMINI PARA SUGAR CRM MANUAL INSTALACIÓN DE SUGARMINI PARA SUGAR CRM SugarMini Instalación/Configuración de SugarMini......2 El servidor SugarMini......2 Requisitos del servidor SugarMini......2 Instalación del servidor SugarMini......2

Más detalles

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

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

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

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

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

arquitectura que maneja. Encontraremos también los diferentes servidores que

arquitectura que maneja. Encontraremos también los diferentes servidores que 3.1 INTRODUCCIÓN A lo largo de este capitulo será descrito ArcIMS, así como las características y arquitectura que maneja. Encontraremos también los diferentes servidores que proporciona ArcIMS, además

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

3. Número inicial y número final de mensajes mostrados en la página actual.

3. Número inicial y número final de mensajes mostrados en la página actual. Sistema WEBmail El sistema WEBmail permite el acceso rápido y sencillo a su buzón de correo utilizando un navegador de páginas Web. Normalmente es usado como complemento al lector de correo tradicional,

Más detalles

Capitulo III. Diseño del Sistema.

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

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Servidores Donantonio

Servidores Donantonio Especificación de requisitos software Tabla de contenidos Juan José Amor David Escorial Ismael Olea 1. Introducción...3 1.1. Propósito...3 1.2. Ámbito del sistema...3 1.3. Definiciones, acrónimos y abreviaturas...3

Más detalles

Capítulo II. Arquitectura del Software

Capítulo II. Arquitectura del Software Capítulo II. Arquitectura del Software Después de un cuidadoso análisis de los objetivos del proyecto, se determinó que la mejor manera de estructurar el sistema era haciendo uso del muy famoso patrón

Más detalles