• Like
  • Save
Curso Java Avanzado   3 Js Ps
Upcoming SlideShare
Loading in...5
×

Curso Java Avanzado 3 Js Ps

  • 3,407 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,407
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
0
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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