Your SlideShare is downloading. ×
Java Avanzado Emilio Avilés Ávila http://www.techmi.es
Workshop  (25 horas) Workshop Java avanzado para empresas y profesionales
Temario <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabean...
Tema 3 JSP: Java Server Pages
Objetivos <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabe...
3 – JSP: Java Server Pages <ul><li>¿Por qué JSP? </li></ul><ul><ul><li>Con los servlet es fácil </li></ul></ul><ul><ul><ul...
3 – JSP: Java Server Pages <ul><li>Idea de los JSP </li></ul><ul><ul><li>Usar la estructura estándar HTML. </li></ul></ul>...
3 – JSP: Java Server Pages <ul><li>Beneficios JSP </li></ul><ul><ul><li>A pesar de no hacer todo lo que los servlet hacen,...
3 – JSP: Java Server Pages <ul><li>¿Qué tiene mejor JSP respecto a…? (1/2) </li></ul><ul><ul><li>ASP </li></ul></ul><ul><u...
3 – JSP: Java Server Pages <ul><li>¿Qué tiene mejor JSP respecto a…? (2/2) </li></ul><ul><ul><li>Javascript client (Browse...
3 – JSP: Java Server Pages <ul><li>JSP y Servlets en el mundo Real </li></ul>
3 – JSP: Java Server Pages <ul><li>Sencillez de implantación </li></ul><ul><ul><li>Establecer CLASSPATH </li></ul></ul><ul...
3 – JSP: Java Server Pages <ul><li>Mi primer JSP </li></ul><ul><ul><li>Crear con Netbeans un JSP </li></ul></ul><ul><ul><u...
3 – JSP: Java Server Pages <ul><li>De los JSP no hay que confundir… </li></ul><ul><ul><li>Olvidar que es una  tecnología d...
3 – JSP: Java Server Pages <ul><li>Ciclo de vida de JSP </li></ul><ul><ul><li>Un JSP en estructura es HTML pero se ejecuta...
3 – JSP: Java Server Pages <ul><li>Ciclo de vida de JSP </li></ul>
3 – JSP: Java Server Pages <ul><li>En resumen… </li></ul><ul><ul><li>JSP es más conveniente no más potente </li></ul></ul>...
3 – JSP: Java Server Pages <ul><li>Convencidos? ..A programar! </li></ul><ul><ul><li>JSP :  Documentos de texto que contie...
3 – JSP: Java Server Pages <ul><li>RECOMENDACIÓN </li></ul><ul><li>Separar código Java de JSP </li></ul><ul><ul><li>Dos op...
3 – JSP: Java Server Pages <ul><li>Sintaxis básica </li></ul><ul><ul><li>Text HTML </li></ul></ul><ul><ul><ul><li><H1> hol...
3 – JSP: Java Server Pages <ul><li>Variables predefinidas </li></ul><ul><ul><li>request </li></ul></ul><ul><ul><ul><li>El ...
3 – JSP: Java Server Pages <ul><li>Elementos scripting JSP </li></ul><ul><ul><li>Expressiones </li></ul></ul><ul><ul><ul><...
3 – JSP: Java Server Pages <ul><li>Expresiones  <%= expression %>   </li></ul><ul><ul><li>Resultado </li></ul></ul><ul><ul...
3 – JSP: Java Server Pages <ul><li>Traducción JSP / Servlet </li></ul><ul><ul><li>JSP Original </li></ul></ul><ul><ul><ul>...
3 – JSP: Java Server Pages <ul><li>Ejemplo de Expresión </li></ul><ul><ul><li>Unminuto.jsp </li></ul></ul>
3 – JSP: Java Server Pages <ul><li>Parámetros </li></ul><ul><ul><li>Comparando el ejemplo servlet 3 parámetros </li></ul><...
3 – JSP: Java Server Pages <ul><li>Ejercicio práctico </li></ul><ul><ul><li>Realizar el mismo formulario de registro </li>...
3 – JSP: Java Server Pages <ul><li>Scriptlets  <% code %>   </li></ul><ul><ul><li>Resultado </li></ul></ul><ul><ul><ul><li...
3 – JSP: Java Server Pages <ul><li>Traducción JSP / Servlet  </li></ul><ul><ul><li>JSP Original </li></ul></ul><ul><ul><ul...
3 – JSP: Java Server Pages <ul><li>Ejemplo: Cambiar color de fondo </li></ul><ul><ul><li>¿Qué está mal de este código? </l...
3 – JSP: Java Server Pages <ul><li>Ejercicio práctico </li></ul><ul><ul><li>Construir un JSP que aleatoriamente me desee u...
3 – JSP: Java Server Pages <ul><li>Ejemplo scriptlet Condicional </li></ul><ul><ul><li>Son insertados tal cual se escriben...
3 – JSP: Java Server Pages <ul><li>JSP Declaration  <%!= declaration %>   </li></ul><ul><ul><li>Resultado </li></ul></ul><...
3 – JSP: Java Server Pages <ul><li>Traducción JSP / Servlet </li></ul><ul><ul><li>JSP Original </li></ul></ul><ul><ul><li>...
3 – JSP: Java Server Pages <ul><li>Ejercicio práctico: La primitiva </li></ul><ul><ul><li>Realiza un jsp que genere aleato...
3 – JSP: Java Server Pages <ul><li>Ejercicio práctico </li></ul><ul><ul><li>Construir un Contador de visitas de nuestra We...
3 – JSP: Java Server Pages <ul><li>Ejemplo JSP Declaración </li></ul><ul><ul><li>Accesos a una página  </li></ul></ul>
3 – JSP: Java Server Pages <ul><li>JSP jspInit & jspDestroy </li></ul><ul><ul><li>Las páginas JSP, como servlet que son, a...
3 – JSP: Java Server Pages <ul><li>JSP: Variables predefinidas </li></ul><ul><ul><li>Problema   </li></ul></ul><ul><ul><ul...
3 – JSP: Java Server Pages <ul><li>Ejemplo usando los 3 scripting </li></ul><ul><ul><li>Realizar una aplicación que generé...
3 – JSP: Java Server Pages <ul><li>Código JSP Expresiones </li></ul>
3 – JSP: Java Server Pages <ul><li>Código JSP scriptlets </li></ul>
3 – JSP: Java Server Pages <ul><li>Código JSP: Declaraciones  </li></ul>
3 – JSP: Java Server Pages <ul><li>JSP page directive (I) </li></ul><ul><ul><li><%@ page …&quot; %> </li></ul></ul><ul><ul...
3 – JSP: Java Server Pages <ul><li>JSP page directive (II) </li></ul><ul><ul><li>Tipos </li></ul></ul><ul><ul><ul><li>Impo...
3 – JSP: Java Server Pages <ul><li>JSP page directive Import </li></ul><ul><ul><li><%@ page import=&quot;package.class&quo...
3 – JSP: Java Server Pages <ul><li>Ejemplo <%@page import=“…”  /%> </li></ul>
3 – JSP: Java Server Pages <ul><li>JSP page directive  contentType </li></ul><ul><ul><li>Ejemplos: Excel </li></ul></ul>
3 – JSP: Java Server Pages <ul><li>JSP page directive  contentType </li></ul><ul><ul><li>Ejemplos: Excel Condicionado </li...
3 – JSP: Java Server Pages <ul><li>JSP page directive  session </li></ul><ul><ul><li><%@ page session=&quot;true&quot; %> ...
3 – JSP: Java Server Pages <ul><li>JSP page directive  errorPage </li></ul><ul><ul><li><%@ page errorPage=&quot;Relative U...
3 – JSP: Java Server Pages <ul><li>JSP page directive  isErrorPage </li></ul><ul><ul><li><%@ page isErrorPage=&quot;true&q...
3 – JSP: Java Server Pages <ul><li>JSP page  ErrorPage </li></ul><ul><ul><li>Ejemplo </li></ul></ul>
3 – JSP: Java Server Pages <ul><li>JSP page directive  extend </li></ul><ul><ul><li><%@ page extends=&quot;package.class&q...
3 – JSP: Java Server Pages <ul><li>JSP page directive  ThreadSafe </li></ul><ul><ul><li><%@ page isThreadSafe=&quot;true&q...
3 – JSP: Java Server Pages <ul><li>Resumen de Page Directives </li></ul>
3 – JSP: Java Server Pages <ul><li>JSP include directive </li></ul><ul><ul><li><% include file=&quot;…&quot; %> </li></ul>...
3 – JSP: Java Server Pages <ul><li><jsp:include…/> </li></ul><ul><ul><li><jsp:include page=&quot;Relative address&quot; />...
3 – JSP: Java Server Pages <ul><li><jsp:include…/> </li></ul><ul><ul><li>Ejemplo </li></ul></ul>Item.jsp Observar que no e...
3 – JSP: Java Server Pages <ul><li>Ejemplo jsp include </li></ul><ul><ul><li>Footers reutilizables </li></ul></ul>
3 – JSP: Java Server Pages <ul><li>JSP con XML syntax </li></ul><ul><ul><li>¿Por qué dos versiones? </li></ul></ul><ul><ul...
3 – JSP: Java Server Pages <ul><li>JSP con XML syntax (II) </li></ul><ul><ul><li>Debes usar JSP en muchos entornos XML  </...
3 – JSP: Java Server Pages <ul><li>Para generar XHTML </li></ul><ul><ul><li>Necesitas JSP XML-Syntax </li></ul></ul>
3 – JSP: Java Server Pages <ul><li>Para generar XML </li></ul><ul><ul><li>Cuando envías a un cliente un response que esper...
3 – JSP: Java Server Pages <ul><li>Ejemplo Sintaxis estándar (sample.jsp) </li></ul>
3 – JSP: Java Server Pages <ul><li>Ejemplo Sintaxis XML (sample.jspx) </li></ul>
3 – JSP: Java Server Pages <ul><li>Ejercicio práctico: La primitiva </li></ul><ul><ul><li>Realiza La misma aplicación que ...
3 – JSP: Java Server Pages <ul><li>Resultado de ambas páginas </li></ul>
Conclusiones <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlet </li></ul><ul><li>JSP </li></ul><ul><li>Java...
Referencias <ul><li>Arquitectura JSP   http:// java.sun.com / developer / onlineTraining / JSPIntro / contents.html#JSPInt...
Upcoming SlideShare
Loading in...5
×

Curso Java Avanzado 3 Js Ps

3,574

Published on

Tema 3 - JSP del workshop de 25 horas de Java Avanzado.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,574
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • Transcript of "Curso Java Avanzado 3 Js Ps"

    1. 1. Java Avanzado Emilio Avilés Ávila http://www.techmi.es
    2. 2. Workshop (25 horas) Workshop Java avanzado para empresas y profesionales
    3. 3. Temario <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabeans </li></ul><ul><li>EJB </li></ul><ul><li>Struts </li></ul><ul><li>Resumen y conclusiones </li></ul>
    4. 4. Tema 3 JSP: Java Server Pages
    5. 5. Objetivos <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabeans </li></ul><ul><li>EJB </li></ul><ul><li>Struts </li></ul><ul><li>Resumen y conclusiones </li></ul><ul><li>El porqué y los beneficios de JSP </li></ul><ul><li>Scripting JSP </li></ul><ul><ul><li>Expresiones </li></ul></ul><ul><ul><li>Scriptlet </li></ul></ul><ul><ul><li>Declaraciones </li></ul></ul><ul><li>Directivas JSP </li></ul><ul><ul><li>Page </li></ul></ul><ul><ul><li>Include </li></ul></ul><ul><li>Diferencia entre programación JSP estándar y basada en XML </li></ul>
    6. 6. 3 – JSP: Java Server Pages <ul><li>¿Por qué JSP? </li></ul><ul><ul><li>Con los servlet es fácil </li></ul></ul><ul><ul><ul><li>Leer datos de los Form Data </li></ul></ul></ul><ul><ul><ul><li>Leer cabeceras de las peticiones http </li></ul></ul></ul><ul><ul><ul><li>Establecer códigos de estados y cabeceras </li></ul></ul></ul><ul><ul><ul><li>Usar cookies y Session Tracking </li></ul></ul></ul><ul><ul><ul><li>Compartir datos entre servlets </li></ul></ul></ul><ul><ul><ul><li>Recordar datos entre peticiones </li></ul></ul></ul><ul><ul><li>Pero no es sencillo </li></ul></ul><ul><ul><ul><li>Usar los println para generar HTML </li></ul></ul></ul><ul><ul><ul><li>Mantener el HTML </li></ul></ul></ul>
    7. 7. 3 – JSP: Java Server Pages <ul><li>Idea de los JSP </li></ul><ul><ul><li>Usar la estructura estándar HTML. </li></ul></ul><ul><ul><li>Marcar el código servlet con tag especiales. </li></ul></ul><ul><ul><li>Las páginas JSP serán traducidas a un servlet y éste será el ejecutado. </li></ul></ul>
    8. 8. 3 – JSP: Java Server Pages <ul><li>Beneficios JSP </li></ul><ul><ul><li>A pesar de no hacer todo lo que los servlet hacen, facilitan muchas tareas: </li></ul></ul><ul><ul><ul><li>Escribir HTML </li></ul></ul></ul><ul><ul><ul><li>Leer y mantener HTML </li></ul></ul></ul><ul><ul><li>JSP posibilitan </li></ul></ul><ul><ul><ul><li>Uso de editores Web (Dreamweaver, macromedia) </li></ul></ul></ul><ul><ul><ul><li>Tener diferentes grupos en nuestros equipos </li></ul></ul></ul><ul><ul><ul><ul><li>Desarrollo de la lógica </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Diseño de la página </li></ul></ul></ul></ul><ul><ul><ul><li>Separa la Vista (capa presentación) de la Lógica </li></ul></ul></ul>
    9. 9. 3 – JSP: Java Server Pages <ul><li>¿Qué tiene mejor JSP respecto a…? (1/2) </li></ul><ul><ul><li>ASP </li></ul></ul><ul><ul><ul><li>Mejor lenguaje en la parte dinámica </li></ul></ul></ul><ul><ul><ul><li>Portable a otros servidores y SSOO </li></ul></ul></ul><ul><ul><li>PHP </li></ul></ul><ul><ul><ul><li>Mejor lenguaje en la parte dinámica </li></ul></ul></ul><ul><ul><ul><li>Mejores herramientas de soporte </li></ul></ul></ul><ul><ul><li>Que los servlets </li></ul></ul><ul><ul><ul><li>Más sencillo crear HTML </li></ul></ul></ul><ul><ul><ul><li>Podemos usar herramientas standars </li></ul></ul></ul><ul><ul><ul><li>Divide y vencerás </li></ul></ul></ul><ul><ul><ul><li>Los desarrolladores de JSP saben también de servlets </li></ul></ul></ul>
    10. 10. 3 – JSP: Java Server Pages <ul><li>¿Qué tiene mejor JSP respecto a…? (2/2) </li></ul><ul><ul><li>Javascript client (Browser) </li></ul></ul><ul><ul><ul><li>El control lo tiene el servidor </li></ul></ul></ul><ul><ul><ul><li>Lenguaje de programación más rico </li></ul></ul></ul><ul><ul><li>HTML Static </li></ul></ul><ul><ul><ul><li>Características dinámicas </li></ul></ul></ul><ul><ul><ul><li>Posibilidad de definir etiquetas extensibles </li></ul></ul></ul><ul><ul><ul><ul><li>Personalizar etiquetas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Librería de tags (JSTL) </li></ul></ul></ul></ul>
    11. 11. 3 – JSP: Java Server Pages <ul><li>JSP y Servlets en el mundo Real </li></ul>
    12. 12. 3 – JSP: Java Server Pages <ul><li>Sencillez de implantación </li></ul><ul><ul><li>Establecer CLASSPATH </li></ul></ul><ul><ul><li>Compilar el código </li></ul></ul><ul><ul><li>Usar paquetes para evitar conflictos </li></ul></ul><ul><ul><li>Poner los JSP en un directorio especial </li></ul></ul><ul><ul><ul><li>Usar la carpeta WebContent </li></ul></ul></ul><ul><ul><li>Usar URLs especiales </li></ul></ul><ul><ul><ul><li>Las mismas que las HTML excepto la extensión </li></ul></ul></ul><ul><ul><li>¡ Solo necesitamos un servidor Web con un contenedor Web que cumpla especificaciones JSP ! </li></ul></ul>
    13. 13. 3 – JSP: Java Server Pages <ul><li>Mi primer JSP </li></ul><ul><ul><li>Crear con Netbeans un JSP </li></ul></ul><ul><ul><ul><li>En mi aplicación Web MiPrimeraWeb </li></ul></ul></ul><ul><ul><ul><li>Nombre JSP: MiprimerJSP.jsp </li></ul></ul></ul><ul><ul><ul><li>Establecerlo como página inicial </li></ul></ul></ul><ul><ul><ul><ul><li>En el descriptor web.xml </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Welcome page </li></ul></ul></ul></ul><ul><ul><ul><li>Accede a la URL </li></ul></ul></ul><ul><ul><ul><ul><li>EJ: http://localhost:8080/MiPrimeraWeb/ MiPrimerJSP.jsp </li></ul></ul></ul></ul><ul><ul><ul><ul><li>… . Suerte!!!! </li></ul></ul></ul></ul>
    14. 14. 3 – JSP: Java Server Pages <ul><li>De los JSP no hay que confundir… </li></ul><ul><ul><li>Olvidar que es una tecnología de Servidor </li></ul></ul><ul><ul><ul><li>Y equipararla a HTML, Javascript, applet, etc. </li></ul></ul></ul><ul><ul><li>¿Qué sucede en la traducción? </li></ul></ul><ul><ul><ul><li>El motor JSP crea el servlet </li></ul></ul></ul><ul><ul><ul><li>Traducción al HTML dinámico </li></ul></ul></ul><ul><ul><li>¿Qué sucede en la request ? </li></ul></ul><ul><ul><ul><li>El código del servlet se ejecuta </li></ul></ul></ul><ul><ul><ul><li>No se interpreta el JSP </li></ul></ul></ul><ul><ul><ul><li>El JSP original se ignora </li></ul></ul></ul><ul><ul><ul><li>Sólo se usa el servlet generado </li></ul></ul></ul><ul><ul><li>¿Cuándo sucede la traducción? </li></ul></ul><ul><ul><ul><li>Se cargan en memoria la primera vez que se llaman. </li></ul></ul></ul><ul><ul><ul><li>Ya no se vuelve a llamar al motor JSP, está en el Web Server </li></ul></ul></ul>
    15. 15. 3 – JSP: Java Server Pages <ul><li>Ciclo de vida de JSP </li></ul><ul><ul><li>Un JSP en estructura es HTML pero se ejecuta como un servlet. </li></ul></ul><ul><ul><li>El contenedor/motor JSP parsea el .jsp y lo convierte en un .java declarado como un servlet </li></ul></ul><ul><ul><li>El contenedor compila la anterior clase y la ejecuta como un servlet común. </li></ul></ul><ul><ul><li>La salida (output) de este servlet se envía directamente al cliente. </li></ul></ul>
    16. 16. 3 – JSP: Java Server Pages <ul><li>Ciclo de vida de JSP </li></ul>
    17. 17. 3 – JSP: Java Server Pages <ul><li>En resumen… </li></ul><ul><ul><li>JSP es más conveniente no más potente </li></ul></ul><ul><ul><ul><li>Es más fácil construir HTML y permite acceder a la potencia de los servlet </li></ul></ul></ul><ul><ul><li>Las JSP se traducen en Servlets </li></ul></ul><ul><ul><ul><li>Es el servlet quien lo ejecuta en la petición </li></ul></ul></ul><ul><ul><ul><li>Los clientes no ven nada relacionado con JSP </li></ul></ul></ul><ul><ul><li>Necesitas comprender los Servlets </li></ul></ul><ul><ul><ul><li>Entendiendo como funcionan los JSP </li></ul></ul></ul><ul><ul><ul><li>El código del servlet que se llama en el JSP </li></ul></ul></ul><ul><ul><ul><li>Conocer cuando usar servlet y cuando JSP </li></ul></ul></ul><ul><ul><li>Otras tecnologías no son tan portables ni estandarizadas como Java </li></ul></ul>
    18. 18. 3 – JSP: Java Server Pages <ul><li>Convencidos? ..A programar! </li></ul><ul><ul><li>JSP : Documentos de texto que contienen elementos estáticos (HTML, XML, VML) y elementos dinámicos (JSP) que hacen más sencillo la generación de páginas Web </li></ul></ul><ul><ul><li>Elementos dinámicos </li></ul></ul><ul><ul><ul><li>Programación estándar JSP (scripting) </li></ul></ul></ul><ul><ul><ul><li>Programación basada en XML (XML syntax) </li></ul></ul></ul><ul><ul><ul><li>Custom tags (JSTL) </li></ul></ul></ul>
    19. 19. 3 – JSP: Java Server Pages <ul><li>RECOMENDACIÓN </li></ul><ul><li>Separar código Java de JSP </li></ul><ul><ul><li>Dos opciones </li></ul></ul><ul><ul><ul><li>Escribir 25 líneas de código en un JSP </li></ul></ul></ul><ul><ul><ul><li>Poner esas 25 líneas en un .java y crear un JSP que invoque al fichero Java </li></ul></ul></ul><ul><ul><li>¿Qué es mejor? </li></ul></ul><ul><ul><ul><li>Desarrollo: Escribes en un IDE java no HTML </li></ul></ul></ul><ul><ul><ul><li>Debug: Puedes ver errores en compilación </li></ul></ul></ul><ul><ul><ul><li>Test: Puedes crear test de ejecución múltiple </li></ul></ul></ul><ul><ul><ul><li>Reutilización: Misma clase java para varios JSP </li></ul></ul></ul>
    20. 20. 3 – JSP: Java Server Pages <ul><li>Sintaxis básica </li></ul><ul><ul><li>Text HTML </li></ul></ul><ul><ul><ul><li><H1> hola </H1> se pasa como él siguiente código al servlet: out.print(&quot;<H1>hola</H1>&quot;); </li></ul></ul></ul><ul><ul><li>Comentario HTML </li></ul></ul><ul><ul><ul><li><!-- Comment --> : Se pasa igual que antes </li></ul></ul></ul><ul><ul><li>JSP Comments </li></ul></ul><ul><ul><ul><li><%-- Comment --%> : No se pasan al cliente </li></ul></ul></ul><ul><ul><li>Escaping <% … /%> </li></ul></ul><ul><ul><ul><li>Salida igual al código java interpretado </li></ul></ul></ul>
    21. 21. 3 – JSP: Java Server Pages <ul><li>Variables predefinidas </li></ul><ul><ul><li>request </li></ul></ul><ul><ul><ul><li>El HttpServletRequest (1st argumento del servicio/ doGet ) </li></ul></ul></ul><ul><ul><li>response </li></ul></ul><ul><ul><ul><li>El HttpServletResponse (2nd argumento del servicio/doGet) </li></ul></ul></ul><ul><ul><li>out </li></ul></ul><ul><ul><ul><li>Para enviar output al cliente ( response.getPrintWritter()) </li></ul></ul></ul><ul><ul><li>session </li></ul></ul><ul><ul><ul><li>El HttpSession asociado a la petición ( request.getSession()) </li></ul></ul></ul><ul><ul><li>application </li></ul></ul><ul><ul><ul><li>El ServletContext (para compartir datos) que se obtiene vía getServletContext(). </li></ul></ul></ul>
    22. 22. 3 – JSP: Java Server Pages <ul><li>Elementos scripting JSP </li></ul><ul><ul><li>Expressiones </li></ul></ul><ul><ul><ul><li><%= expression %> Evaluado e insertado como String en la salida del servlet </li></ul></ul></ul><ul><ul><ul><li>Ejemplo: Como si fuera un out.print(expression) </li></ul></ul></ul><ul><ul><li>Scriptlets </li></ul></ul><ul><ul><ul><li><% code %> Manejar cualquier tipo de código válido java </li></ul></ul></ul><ul><ul><li>Declaraciones </li></ul></ul><ul><ul><ul><li><%! code %> Declaraciones de código fuera del cuerpo del servlet y de cualquier método </li></ul></ul></ul>
    23. 23. 3 – JSP: Java Server Pages <ul><li>Expresiones <%= expression %> </li></ul><ul><ul><li>Resultado </li></ul></ul><ul><ul><ul><li>Expresión evaluada, convertida a String y ubicada en el HTML resultando en el mismo sitio que estaba en el JSP </li></ul></ul></ul><ul><ul><ul><li>Se incluye en el método _jspService() en forma de out.print </li></ul></ul></ul><ul><ul><li>Ejemplos </li></ul></ul><ul><ul><ul><li>Hora actual: <%= new java.util.Date() %> </li></ul></ul></ul><ul><ul><ul><li>Hostname: <%= request.getRemoteHost() %> </li></ul></ul></ul><ul><ul><li>XML Syntax </li></ul></ul><ul><ul><ul><li><jsp:expression>Java Expression</jsp:expression> </li></ul></ul></ul><ul><ul><ul><li>Nota: No se puede mezclar versiones, si usamos XML syntax todo nuestro JSP debe usar <jsp:expresion> y no Standar JSP </li></ul></ul></ul>
    24. 24. 3 – JSP: Java Server Pages <ul><li>Traducción JSP / Servlet </li></ul><ul><ul><li>JSP Original </li></ul></ul><ul><ul><ul><li><H1>A Random Number</H1> </li></ul></ul></ul><ul><ul><ul><li><%= Math.random() %> </li></ul></ul></ul><ul><ul><li>Traducción a código del Servlet </li></ul></ul>
    25. 25. 3 – JSP: Java Server Pages <ul><li>Ejemplo de Expresión </li></ul><ul><ul><li>Unminuto.jsp </li></ul></ul>
    26. 26. 3 – JSP: Java Server Pages <ul><li>Parámetros </li></ul><ul><ul><li>Comparando el ejemplo servlet 3 parámetros </li></ul></ul>
    27. 27. 3 – JSP: Java Server Pages <ul><li>Ejercicio práctico </li></ul><ul><ul><li>Realizar el mismo formulario de registro </li></ul></ul><ul><ul><ul><li>Nombre </li></ul></ul></ul><ul><ul><ul><li>Apellidos </li></ul></ul></ul><ul><ul><li>Pero el destino (action) será, en lugar de un servlet, un JSP mostrando: </li></ul></ul><ul><ul><ul><li>Nombre y apellidos </li></ul></ul></ul><ul><ul><ul><li>El tipo de método (POST/GET) por el que envío los parámetros del formulario. </li></ul></ul></ul><ul><ul><ul><li>… .. Suerte!!! </li></ul></ul></ul>
    28. 28. 3 – JSP: Java Server Pages <ul><li>Scriptlets <% code %> </li></ul><ul><ul><li>Resultado </li></ul></ul><ul><ul><ul><li>El código es incluido de manera verbatim (exacta) en el servlet _jspService </li></ul></ul></ul><ul><ul><li>Ejemplos </li></ul></ul><ul><ul><ul><li><% </li></ul></ul></ul><ul><ul><ul><li>String queryData = request.getQueryString(); </li></ul></ul></ul><ul><ul><ul><li>out.println(&quot;Attached GET data: &quot; + queryData); </li></ul></ul></ul><ul><ul><ul><li>%> </li></ul></ul></ul><ul><ul><ul><li><% response.setContentType(&quot;text/plain&quot;); %> </li></ul></ul></ul><ul><ul><li>XML Syntax </li></ul></ul><ul><ul><ul><li><jsp:scriptlet>Java Code</jsp:scriptlet> </li></ul></ul></ul><ul><ul><ul><li>Nota: No se puede mezclar versiones, si usamos XML syntax todo nuestro JSP debe usar <jsp:expresion> y no Standar JSP </li></ul></ul></ul>
    29. 29. 3 – JSP: Java Server Pages <ul><li>Traducción JSP / Servlet </li></ul><ul><ul><li>JSP Original </li></ul></ul><ul><ul><ul><li><H2>foo</H2> </li></ul></ul></ul><ul><ul><ul><li><%= bar() %> </li></ul></ul></ul><ul><ul><ul><li><% baz(); %> </li></ul></ul></ul><ul><ul><li>Servlet code </li></ul></ul>
    30. 30. 3 – JSP: Java Server Pages <ul><li>Ejemplo: Cambiar color de fondo </li></ul><ul><ul><li>¿Qué está mal de este código? </li></ul></ul>
    31. 31. 3 – JSP: Java Server Pages <ul><li>Ejercicio práctico </li></ul><ul><ul><li>Construir un JSP que aleatoriamente me desee un buen/mal día </li></ul></ul><ul><ul><li>Salida: “Que tengas un [buen|mal] día” </li></ul></ul><ul><ul><ul><li>Pista: Math.random() < 0.5 </li></ul></ul></ul><ul><ul><ul><li>Usar scriplet condicional <% if (….) …%> </li></ul></ul></ul><ul><ul><ul><li>… . Suerte!!! …. o no??? </li></ul></ul></ul>
    32. 32. 3 – JSP: Java Server Pages <ul><li>Ejemplo scriptlet Condicional </li></ul><ul><ul><li>Son insertados tal cual se escriben en el servlet </li></ul></ul><ul><ul><li>No necesitan ser expresiones completa Java </li></ul></ul><ul><ul><li>Son más claras y fácil de mantener </li></ul></ul><ul><ul><li>Ejemplo </li></ul></ul><ul><ul><li>Resultado en servlet </li></ul></ul>
    33. 33. 3 – JSP: Java Server Pages <ul><li>JSP Declaration <%!= declaration %> </li></ul><ul><ul><li>Resultado </li></ul></ul><ul><ul><ul><li>El código es incluido de manera verbatim (exacta) en la definición de la clase del servlet fuera del _jspService() </li></ul></ul></ul><ul><ul><li>Ejemplos </li></ul></ul><ul><ul><ul><li><%! private int someField = 5; %> </li></ul></ul></ul><ul><ul><ul><li><%! private void someMethod(...) {...} %> </li></ul></ul></ul><ul><ul><li>Consideraciones de diseño </li></ul></ul><ul><ul><ul><li>Útil para las variables. </li></ul></ul></ul><ul><ul><ul><li>Para el método, es más normal definirlo en una clase aparte </li></ul></ul></ul><ul><ul><li>XML Syntax </li></ul></ul><ul><ul><ul><li><jsp:declaration>Java Code</jsp:declaration> </li></ul></ul></ul><ul><ul><ul><li>Nota: No se puede mezclar versiones, si usamos XML syntax todo nuestro JSP debe usar <jsp:expresion> y no Standar JSP </li></ul></ul></ul>
    34. 34. 3 – JSP: Java Server Pages <ul><li>Traducción JSP / Servlet </li></ul><ul><ul><li>JSP Original </li></ul></ul><ul><ul><li>Servlet code </li></ul></ul>
    35. 35. 3 – JSP: Java Server Pages <ul><li>Ejercicio práctico: La primitiva </li></ul><ul><ul><li>Realiza un jsp que genere aleatoriamente 6 números del 1 al 49 y los muestre por pantalla. </li></ul></ul><ul><ul><ul><li>Pista: </li></ul></ul></ul><ul><ul><ul><li>public static int randomInt(int range) { </li></ul></ul></ul><ul><ul><ul><li> return(1 + ((int)(Math.random() * range))); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>… . Suerte!!! </li></ul></ul></ul>
    36. 36. 3 – JSP: Java Server Pages <ul><li>Ejercicio práctico </li></ul><ul><ul><li>Construir un Contador de visitas de nuestra Web </li></ul></ul><ul><ul><ul><li>Pista 1: Declárate una variable para contar de tipo entero (int) </li></ul></ul></ul><ul><ul><ul><li>Pista2: increméntala++ </li></ul></ul></ul><ul><ul><ul><li>Pista3: Muestra el resultado </li></ul></ul></ul><ul><ul><ul><li>… . Suerte!!! </li></ul></ul></ul>
    37. 37. 3 – JSP: Java Server Pages <ul><li>Ejemplo JSP Declaración </li></ul><ul><ul><li>Accesos a una página </li></ul></ul>
    38. 38. 3 – JSP: Java Server Pages <ul><li>JSP jspInit & jspDestroy </li></ul><ul><ul><li>Las páginas JSP, como servlet que son, a veces quieren hacer uso de un init y destroy </li></ul></ul><ul><ul><li>Problema </li></ul></ul><ul><ul><ul><li>Sobreescribir estos métodos causa problemas. </li></ul></ul></ul><ul><ul><ul><li>De hecho, es ilegal hacer declaraciones init y destroy. </li></ul></ul></ul><ul><ul><li>Solucion: jspInit & jspDestroy </li></ul></ul><ul><ul><ul><li>Son métodos vacíos a completar para tales efectos </li></ul></ul></ul><ul><ul><ul><ul><li><%! void jspInit() { …. } /!%> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><%! void jspDestroy() {…} /!%> </li></ul></ul></ul></ul>
    39. 39. 3 – JSP: Java Server Pages <ul><li>JSP: Variables predefinidas </li></ul><ul><ul><li>Problema </li></ul></ul><ul><ul><ul><li>Las variables predefinidas ( request, response, out, session,…) son locales al método _jspService() </li></ul></ul></ul><ul><ul><ul><li>No están disponibles para los métodos que declaremos </li></ul></ul></ul><ul><ul><li>Solución </li></ul></ul><ul><ul><ul><li>Pasarlas como argumento </li></ul></ul></ul>
    40. 40. 3 – JSP: Java Server Pages <ul><li>Ejemplo usando los 3 scripting </li></ul><ul><ul><li>Realizar una aplicación que generé cinco números aleatorios del 1 al 10 mediante </li></ul></ul><ul><ul><ul><li>JSP Expresiones </li></ul></ul></ul><ul><ul><ul><li>JSP Scriplet </li></ul></ul></ul><ul><ul><ul><li>JSP Declaration </li></ul></ul></ul>
    41. 41. 3 – JSP: Java Server Pages <ul><li>Código JSP Expresiones </li></ul>
    42. 42. 3 – JSP: Java Server Pages <ul><li>Código JSP scriptlets </li></ul>
    43. 43. 3 – JSP: Java Server Pages <ul><li>Código JSP: Declaraciones </li></ul>
    44. 44. 3 – JSP: Java Server Pages <ul><li>JSP page directive (I) </li></ul><ul><ul><li><%@ page …&quot; %> </li></ul></ul><ul><ul><li>Da información de alto nivel del servlet que será resultado del JSP </li></ul></ul><ul><ul><li>Controlando </li></ul></ul><ul><ul><ul><li>Qué clases son importadas. </li></ul></ul></ul><ul><ul><ul><li>De que tipo de servlet heredamos. </li></ul></ul></ul><ul><ul><ul><li>Qué tipo MIME es generado. </li></ul></ul></ul><ul><ul><ul><li>Gestión de Multithreads. </li></ul></ul></ul><ul><ul><ul><li>Qué pagina alberga errores inexperados </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul>
    45. 45. 3 – JSP: Java Server Pages <ul><li>JSP page directive (II) </li></ul><ul><ul><li>Tipos </li></ul></ul><ul><ul><ul><li>Import: <%@ page import=“class” %> </li></ul></ul></ul><ul><ul><ul><li>Session: <%@ page session=&quot;true/false&quot; %> </li></ul></ul></ul><ul><ul><ul><li>Content-type </li></ul></ul></ul><ul><ul><ul><ul><li><%@ page contentType=&quot;MIME-Type&quot; %> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><%@ page pageEncoding=&quot;Character-Set&quot; %> </li></ul></ul></ul></ul><ul><ul><ul><li>ErrorPage: <%@ page errorPage=&quot;Relative URL&quot; %> </li></ul></ul></ul><ul><ul><ul><li>isErrorPage: <%@ page isErrorPage=&quot;true&quot; %> </li></ul></ul></ul><ul><ul><ul><li>Extends : <%@ page extends=&quot;package.class&quot; %> </li></ul></ul></ul><ul><ul><ul><li>isThreadSafe : <%@ page isThreadSafe=&quot;true/false&quot; %> </li></ul></ul></ul>
    46. 46. 3 – JSP: Java Server Pages <ul><li>JSP page directive Import </li></ul><ul><ul><li><%@ page import=&quot;package.class&quot; %> </li></ul></ul><ul><ul><li><%@ page import=&quot;package.class1,...,package.classN&quot; %> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Generar sentencias import en la definición del servlet </li></ul></ul></ul><ul><ul><li>Ojo </li></ul></ul><ul><ul><ul><li>Aunque las páginas JSP pueden almacenarse en cualquier lugar, las classes usadas deben ir en los directorios de los servlets </li></ul></ul></ul><ul><ul><ul><li>WEB-INF/classes </li></ul></ul></ul><ul><ul><ul><li>WEB-INF/classes/paquete…. </li></ul></ul></ul>
    47. 47. 3 – JSP: Java Server Pages <ul><li>Ejemplo <%@page import=“…” /%> </li></ul>
    48. 48. 3 – JSP: Java Server Pages <ul><li>JSP page directive contentType </li></ul><ul><ul><li>Ejemplos: Excel </li></ul></ul>
    49. 49. 3 – JSP: Java Server Pages <ul><li>JSP page directive contentType </li></ul><ul><ul><li>Ejemplos: Excel Condicionado </li></ul></ul>
    50. 50. 3 – JSP: Java Server Pages <ul><li>JSP page directive session </li></ul><ul><ul><li><%@ page session=&quot;true&quot; %> <%-- Default --%> </li></ul></ul><ul><ul><li>– <%@ page session=&quot;false&quot; %> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Designar que la página no sea parte de la sesión </li></ul></ul></ul><ul><ul><ul><li>Por defecto es parte de la session . </li></ul></ul></ul><ul><ul><ul><li>Salva memoria en Web con mucho tráfico. </li></ul></ul></ul>
    51. 51. 3 – JSP: Java Server Pages <ul><li>JSP page directive errorPage </li></ul><ul><ul><li><%@ page errorPage=&quot;Relative URL&quot; %> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Especifica una página en caso de que sucede alguna excepción inesperada. </li></ul></ul></ul><ul><ul><li>Ojo </li></ul></ul><ul><ul><ul><li>También se pueden especificar páginas de error en el descriptor web.xml </li></ul></ul></ul>
    52. 52. 3 – JSP: Java Server Pages <ul><li>JSP page directive isErrorPage </li></ul><ul><ul><li><%@ page isErrorPage=&quot;true&quot; %> </li></ul></ul><ul><ul><li><%@ page isErrorPage=&quot;false&quot; %> <%-- Default --%> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Especifica si la página actual puede actuar como página de error. </li></ul></ul></ul><ul><ul><li>Ojo </li></ul></ul><ul><ul><ul><li>Tendremos la excepción en la variable exception </li></ul></ul></ul>
    53. 53. 3 – JSP: Java Server Pages <ul><li>JSP page ErrorPage </li></ul><ul><ul><li>Ejemplo </li></ul></ul>
    54. 54. 3 – JSP: Java Server Pages <ul><li>JSP page directive extend </li></ul><ul><ul><li><%@ page extends=&quot;package.class&quot; %> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Especifica la clase padre del servlet resultado de procesar el JSP </li></ul></ul></ul><ul><ul><li>Ojo </li></ul></ul><ul><ul><ul><li>Usar con precaución podemos dejar colgado el sistema </li></ul></ul></ul><ul><ul><ul><li>Previene de usar las superclasses que implican alto rendimiento </li></ul></ul></ul><ul><ul><ul><li>Ideal para heredar de las clases que proporciona el server vendor </li></ul></ul></ul><ul><ul><ul><li>Mejor hacer herencia de clases java! </li></ul></ul></ul>
    55. 55. 3 – JSP: Java Server Pages <ul><li>JSP page directive ThreadSafe </li></ul><ul><ul><li><%@ page isThreadSafe=&quot;true&quot; %> <%-- Default --%> </li></ul></ul><ul><ul><li><%@ page isThreadSafe=&quot;false&quot; %> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Indica al sistema que no permita accesos concurrentes. </li></ul></ul></ul><ul><ul><li>Ojo </li></ul></ul><ul><ul><ul><li>Evitar a toda costa, degrada el rendimiento del sistema. </li></ul></ul></ul>
    56. 56. 3 – JSP: Java Server Pages <ul><li>Resumen de Page Directives </li></ul>
    57. 57. 3 – JSP: Java Server Pages <ul><li>JSP include directive </li></ul><ul><ul><li><% include file=&quot;…&quot; %> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Incluir archivos en la pagina en el momento de traducción del JSP </li></ul></ul></ul><ul><ul><li>Ojo </li></ul></ul><ul><ul><ul><li>Es recomendable usar <jsp:include page=&quot;…&quot;/> si es posible. </li></ul></ul></ul>
    58. 58. 3 – JSP: Java Server Pages <ul><li><jsp:include…/> </li></ul><ul><ul><li><jsp:include page=&quot;Relative address&quot; /> </li></ul></ul><ul><ul><li>Propósito </li></ul></ul><ul><ul><ul><li>Reutilizar JSP, HTML, o texto plano </li></ul></ul></ul><ul><ul><ul><li>Permite actualizaciones del contenido incluso sin cambiar el JSP principal </li></ul></ul></ul><ul><ul><li>Ojo: El JSP incluido no afecta al principal, es solo un output. </li></ul></ul><ul><ul><ul><li>Las direcciones “” son relativas al WebApp </li></ul></ul></ul><ul><ul><ul><li>Se pueden incluir archivos del WEB-INF </li></ul></ul></ul>
    59. 59. 3 – JSP: Java Server Pages <ul><li><jsp:include…/> </li></ul><ul><ul><li>Ejemplo </li></ul></ul>Item.jsp Observar que no es HTML Completo
    60. 60. 3 – JSP: Java Server Pages <ul><li>Ejemplo jsp include </li></ul><ul><ul><li>Footers reutilizables </li></ul></ul>
    61. 61. 3 – JSP: Java Server Pages <ul><li>JSP con XML syntax </li></ul><ul><ul><li>¿Por qué dos versiones? </li></ul></ul><ul><ul><ul><li>La sintaxis clásica no es compatible con XML </li></ul></ul></ul><ul><ul><ul><ul><li><%= ... %>, <% ... %>, <%! ... %> </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Es ilegal en XML </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>HTML 4 no es compatible con XML </li></ul></ul></ul></ul><ul><ul><ul><ul><li>No podemos usar editores XML como Spy-XML para generar nuestros JSP </li></ul></ul></ul></ul>
    62. 62. 3 – JSP: Java Server Pages <ul><li>JSP con XML syntax (II) </li></ul><ul><ul><li>Debes usar JSP en muchos entornos XML </li></ul></ul><ul><ul><ul><ul><li>Para construir páginas XHTML </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Para construir documentos regulares XML </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Para Web Services </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Para Ajax </li></ul></ul></ul></ul></ul><ul><ul><li>Luego, existe otra sintaxis, XML-Syntax </li></ul></ul>
    63. 63. 3 – JSP: Java Server Pages <ul><li>Para generar XHTML </li></ul><ul><ul><li>Necesitas JSP XML-Syntax </li></ul></ul>
    64. 64. 3 – JSP: Java Server Pages <ul><li>Para generar XML </li></ul><ul><ul><li>Cuando envías a un cliente un response que espera XML real </li></ul></ul><ul><ul><ul><li>Como AJAX </li></ul></ul></ul><ul><ul><ul><li>Como Webservice </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><li>Necesitas JSP XML-Syntax </li></ul></ul>
    65. 65. 3 – JSP: Java Server Pages <ul><li>Ejemplo Sintaxis estándar (sample.jsp) </li></ul>
    66. 66. 3 – JSP: Java Server Pages <ul><li>Ejemplo Sintaxis XML (sample.jspx) </li></ul>
    67. 67. 3 – JSP: Java Server Pages <ul><li>Ejercicio práctico: La primitiva </li></ul><ul><ul><li>Realiza La misma aplicación que la primitiva pero con XML-Syntax </li></ul></ul><ul><ul><ul><li>Pista: </li></ul></ul></ul><ul><ul><ul><li>public static int randomInt(int range) { </li></ul></ul></ul><ul><ul><ul><li> return(1 + ((int)(Math.random() * range))); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>… . Suerte!!! </li></ul></ul></ul>
    68. 68. 3 – JSP: Java Server Pages <ul><li>Resultado de ambas páginas </li></ul>
    69. 69. Conclusiones <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlet </li></ul><ul><li>JSP </li></ul><ul><li>Javabeans </li></ul><ul><li>EJB </li></ul><ul><li>Struts </li></ul><ul><li>Resumen y conclusiones </li></ul><ul><li>Enumerar los beneficios de JSP respecto tecnologías análogas. </li></ul><ul><li>Conocer los elementos de construcción de páginas JSP </li></ul><ul><ul><li>Expresiones </li></ul></ul><ul><ul><li>Scriptlet </li></ul></ul><ul><ul><li>Declaraciones </li></ul></ul><ul><li>Saber utilizar las directivas de JSP page e include </li></ul><ul><li>Diferenciar la programación estándar JSP con la basada en XML </li></ul>
    70. 70. Referencias <ul><li>Arquitectura JSP http:// java.sun.com / developer / onlineTraining / JSPIntro / contents.html#JSPIntro3 </li></ul><ul><li>MVC en JSP 2.0: http:// www.javaworld.com / javaworld / jw -12-1999/ jw -12- ssj - jspmvc.html </li></ul><ul><li>Especificación en Java Sun: http:// java.sun.com / products / jsp / product.html </li></ul><ul><li>JSP Overview: http:// courses.coreservlets.com / Course - Materials / pdf /csajsp2 </li></ul><ul><li>En el Tutorial J2EE 4: http:// java.sun.com /j2ee/1.4/ docs / tutorial / doc / JSPIntro.html#wp100465 </li></ul>

    ×