Está en la página 1de 49

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Guia de estudio para OCEJWCD6 Oracle Certified Expert, Java EE 6 Web Component Developer
Fecha 2013-07-23 Cambios Primera publicacin

I. Informacion del examen.


Duracin Nro. de preguntas % para aprobar Costo : : : : 140 minutos 57 64% $150 USD

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

II. Temas del examen


1. Introduccin a los Java Servlets. 1.1. Describir a las aplicaciones Web, CGI y el rol de Java. 1.2. Describir los beneficios de la tecnologa Java Servlet. 1.3. Crear un simple Java Servlet. 1.4. Definir la arquitectura de 3 capas. 1.5. Definir la arquitectura Modelo-Vista-Controlador (MVC). 2. Introduccin a los Java Server Pages. 2.1. Describir porque los Servlets no son suficientes. 2.2. Describir lo principal de JSPs 2.3. Entender los fundamentos y razones para la arquitectura MVC. 3. Implementando un diseo MVC. 3.1. Programar un controlador utilizando un Servlet. 3.2. Programar una vista utilizando un JSP. 3.3. Pasar el control desde un Servlet hacia un JSP. 3.4. Entender los fundamentos de EL. 3.5. Implementar un sistema simple basado en MVC. 4. El 4.1. 4.2. 4.3. 4.4. entorno de un Servlet. Entender los detalles del protocolo HTTP. Entender los fundamentos de un formulario HTML. Entender los fundamentos de un HttpServlet y las APIs relacionadas. Escribir cdigo que maneje sesiones de un cliente y cookies.

5. Facilidades del contenedor para Servlets JSPs. 5.1. Entender el propsito y la estructura de los descriptores de despliegue. 5.2. Controlar el Context Root y el Servlet Mapping. 5.3. Creando y utilizando parametros de inicio y de contexto. 5.4. Utilizando anotaciones para configurar Servlets. 6. Facilidades adicionales para la parte vista. 6.1. Entender los cuatro niveles de alcances de los datos. 6.2. Entender y usar EL 6.3. Entender y usar los objetos implcitos de EL. 6.4. Crear y usar expresiones aritmticas en EL. 6.5. Identificar la necesidad para iteracin y seleccin dentro de la vista, usar los Tags de JSTL para estas necesidades. 7. Desarrollando pginas JSP. 7.1. Entender el origen, beneficios y debilidades de los JSPs. 7.2. Describir la tecnologa JSP, la conversin de JSP a Servlet y el ciclo de vida de una JSP. 7.3. Entender los elementos de scripting de JSP, declaraciones y directivas. 7.4. Uso de las variables implcitas de los JSPs. 7.5. Entender y usar los tags estndares (jsp:) de JSP. 8. Desarrollando pginas JSP utilizando Tags personalizados. 8.1. Relacionar el JSTL a las tareas comunes de desarrollo de una aplicacin Web, y entender el uso de Tags en el desarrollo de JSPs. 8.2. Reconocer la correcta sintaxis para los Tags. 8.3. Configurar un JSP utilizando los Tags de JSTL. 8.4. Escribir cdigo JSP utilizando diversos Tags estndares. 8.5. Listar las capacidades de los Tags de JSTL.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

9. Facilidades adicionales para la parte controlador. 9.1. Entender el ciclo de vida de un Servlet. 9.2. Describir y usar elementos avanzados adicionales del API Servlet. 9.3. Crear filtros y usarlos en aplicaciones Web. 10. Facilidades adicionales para la parte modelo. 10.1. Entender los roles de JDBC y JPA 10.2. Entender los diferentes elementos que conforman el modelo. 10.3. Entender los fundamentos de conexin a base de datos utilizando JDBC o JPA. 11. Aplicaciones Web asncronas. 11.1. Entender las interacciones necesarias para las pginas Web asncronas. 11.2. Entender el rol del estilo AJAX para la programacin del lado del cliente. 11.3. Implementar Servlets asncronos utilizando las facilidades de JEE 6. 12. Seguridad de aplicaciones Web. 12.1. Entendiendo el rol del contenedor dentro de la seguridad. 12.2. Describir e implementar los cuatros modelos de autenticacin. 12.3. Forzar el uso de encriptacin entre una aplicacin Web y el cliente Browser. 12.4. Entender el rol de JAAS dentro de una autenticacin pluggable/extensible para aplicaciones Web.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

III. Desarrollo de temas 1. Introduccin a los Java Servlets.


1.1. Describir a las aplicaciones Web, CGI y el rol de Java.

* CGI= Common Gateway Interface. * Un CGI extiende las funcionalidades de un servidor web. * Caractersticas de un CGI: - Puede ser desarrollado en diversos lenguajes de programacion(C++, Visual Basic, Perl, etc.), incluso en Java. - Cada solicitud es un proceso en el servidor. 1.2. Describir los beneficios de la tecnologa Java Servlet.

* Proceso nico, es ms rpido que los CGI. * Ms escalables que los CGI. * Utilizan lenguaje de programacin Java. * Facilidades de la plataforma Java para el control de logs, seguridad y gestin de errores.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

1.3.

Crear un simple Java Servlet.

* Ejemplo de Servlet:

1.4.

Definir la arquitectura de 3 capas.

* El diseo de las aplicaciones se pueden separa en base a capas o responsabilidades, usualmente se dividen en 3 partes: Presentacin-Negocio-Datos. 1.5. Definir la arquitectura Modelo-Vista-Controlador (MVC).

* El MVC es un patrn de diseo de aplicaciones. * El modelo representa a las entidades y lgica de negocio. * La vista representa los elementos con los que el usuario va a interactuar. * El controlador representa el flujo necesario para relacionar las vistas con el modelo.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

2. Introduccin a los Java Server Pages.


2.1. Describir porque los Servlets no son suficientes. * Editar cdigo HTML dentro de los Servlet es muy complicado. * Los editores de pginas HTML (WYSIWYG) no trabajan con Servlets. 2.2. Describir lo principal de JSPs

* Editar cdigo HTML dentro de los Servlet es muy complicado. 2.3. Entender los fundamentos y razones para la arquitectura MVC.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

3. Implementando un diseo MVC


3.1. Programar un controlador utilizando un Servlet. * Controlador: - Contenedor de los puntos de contacto. - Selecciona y enlaza el modelo y la vista. * Un Servlet controlador:

* El modelo:

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

3.2.

Programar una vista utilizando un JSP.

3.3.

Pasar el control desde un Servlet hacia un JSP. RequestDispatcher rd = request.getRequestDispatcher("view.jsp"); rd.forward(request, response); Entender los fundamentos de EL. Implementar un sistema simple basado en MVC.

3.4. 3.5.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

4. El entorno de un Servlet.
4.1. Entender los detalles del protocolo HTTP. * Mtodos del protocolo HTTP Mtodo HTTP GET Descripcin Pide una representacin del recurso especificado. Por seguridad no debera ser usado por aplicaciones que causen efectos ya que transmite informacin a travs de la URI agregando parmetros a la URL. Ejemplo: GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png Ejemplo con parmetros: /index.php?page=main&lang=es Pide una respuesta idntica a la que correspondera a una peticin GET, pero sin el cuerpo de la respuesta. Esto es til para la recuperacin de meta-informacin escrita en los encabezados de respuesta, sin tener que transportar todo el contenido. Somete los datos a que sean procesados para el recurso identificado. Los datos se incluirn en el cuerpo de la peticin. Esto puede resultar en la creacin de un nuevo recurso o de las actualizaciones de los recursos existentes o ambas cosas. Sube, carga o realiza un upload de un recurso especificado (archivo), es el camino ms eficiente para subir archivos a un servidor, esto es porque en POST utiliza un mensaje multiparte y el mensaje es decodificado por el servidor. En contraste, el mtodo PUT te permite escribir un archivo en una conexin socket establecida con el servidor. La desventaja del mtodo PUT es que los servidores de hosting compartido no lo tienen habilitado. Ejemplo: PUT /path/filename.html HTTP/1.1 Borra el recurso especificado. Este mtodo solicita al servidor que enve de vuelta en un mensaje de respuesta, en la seccin del cuerpo de entidad, toda la data que reciba del mensaje de solicitud. Se utiliza con fines de comprobacin y diagnostico. Devuelve los mtodos HTTP que el servidor soporta para un URL especfica. Esto puede ser utilizado para comprobar la funcionalidad de un servidor web mediante peticin en lugar de un recurso especifico. Se utiliza para saber si se tiene acceso a un host, no necesariamente la peticin llega al servidor, este metodo se utiliza principalmente para saber si un proxy nos da acceso a un host bajo condiciones especiales, como por ejemplo "corrientes" de datos bidireccionales encriptadas (como lo requiere SSL).

HEAD

POST

PUT

DELETE TRACE

OPTIONS

CONNECT

* Existe un mtodo doXXX en Servlet para todos los mtodos del HTTP excepto para el CONNECT.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

HTTP request.

HTTP Header del request.

HTTP response

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

HTTP Header del response

4.2. 4.3.

Entender los fundamentos de un formulario HTML. Entender los fundamentos de un HttpServlet y las APIs relacionadas.

* ServletRequest

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* HttpServletRequest

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

4.4.

Escribir cdigo que maneje sesiones de un cliente y cookies.

HttpSession

Cookies: * Son pares de key-dato almacenados en un archivo de texto.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

5. Facilidades del contenedor para Servlets y JSPs.


5.1. Entender el propsito y la estructura de los descriptores de despliegue.

* Un WAR es JAR para aplicaciones Web. * El context root es la URL base de la aplicacin. http://servidor:8080/modulo1/inicio.html modulo1 es el context root. * El context root por defecto es el nombre del WAR. * Los recursos pueden ser colocados en el directorio META-INF/resources de los JAR que se colocan en WEB-INF/lib. * Estructura basica de un WAR

* La informacin de despliegue de un WAR puede ir en: - web.xml dentro del directorio WEB-INF del WAR. - web-fragment.xml dentro del directorio META-INF del JAR que se coloca en el directorio WEB-INF/lib del WAR. - Anotaciones en los archivos fuente. 5.2. Controlar el Context Root y el Servlet Mapping.

* Los archivos XML sobre escriben lo indicado por las anotaciones. * Se pueden usar los Tags <metadata-completed>, <absolute-ordering>, <ordering> y <tag> para prevenir los conflictos en el DD.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Servlet Mapping.

5.3.

Creando y utilizando parametros de inicio y de contexto.

Parametros de contexto.

Parametros de inicio de un Servlet.

5.4.

Utilizando anotaciones para configurar Servlets.

Mapeo de un Servlet.

Parametros de inicio de un Servlet.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

6. Facilidades adicionales para la parte vista.


6.1. Entender los cuatro niveles de alcances de los datos.

6.2.

Entender y usar EL

* Activando o desactivando Scripting y EL:

* Utilizando el carcter de escape \ la expresin no se evala: \${expresin} * Operadores de comparacin:

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* Operadores lgicos

* empty se utiliza para evaluar null, String vaco o array/Collection/Map sin elementos. * Si utilizamos una variable que es null o que no existe, no se genera excepcin y se retorna una cadena vaca o una valor segn el contexto de la operacin donde se encuentre. * Si utilizamos un atributo que no existe de una variable que si existe, por ejemplo ${existe.noencuentra} entonces se genera una excepcin. * Se puede obtener un elemento de un array (Java arrays o implementaciones de List) utilizando ndices, por ejemplo: ${paramValues.nombre[2]} El ndice puede ser un String que se puede parsear a entero, lo siguiente es valido: ${paramValues.nombre[2.0]} El ndice puede ser una expresin que retorne algn valor correcto. * Podemos utilizar ndices de array de forma directa en mtodos (De JavaBeans) que retornen un array, por ejemplo una empresa puede tener varios clientes (Se obtiene el array de clientes con el metodo getClientes()) y un cliente tiene el atributo fechaNacimiento, entonces: ${requestScope.empresa.clientes[0].fechaNacimiento} Obtiene la fecha de nacimiento del primer cliente. * Podemos buscar los atributos de un objeto como si fueran elementos de un array, por ejemplo: ${requestScope[empresa].propietario[nombre]} Busca el valor del atributo nombre de un propietario de la empresa. * Cuando utilizamos ${variable} el parser utilizara PageContext.findAttribute() para buscar la variable desde el scope page hasta application. EL Function. Ejemplo: ${xx:randomColor()} Se requiere: 1. Crear una clase que tenga la definicin del mtodo (funcin) a invocar. package foo; public class RandomColorGenerator{ public static String pickRandomColor(){ ///cdigo. } } 2. Descripcin en el TLD: <taglib>
Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

<function> <name>randomColor</name> <function-class>foo.RandomColorGenerator</function-class> <function-signature>String pickRamdomColor()</function-signature > </function> </taglib> 6.3. Entender y usar los objetos implcitos de EL.

* initParam obtiene los parametros de contexto y no del Servlet.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

6.4.

Crear y usar expresiones aritmticas en EL.

* Observar la siguiente expresin: ${param.miles * 1.69} Si miles es null o no existe entonces param.miles retornara 0, en caso de ser una cadena y se pueda convertir a numrico se realizara. * ${0 * false} retornara un error de compilacin, false no se puede transformar a un numrico. 6.5. Identificar la necesidad para iteracin y seleccin dentro de la vista, usar los Tags de JSTL para estas necesidades.

* Tag if

* Tag forEach

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* La colleccion puede ser: - Collection - Iterator - Map - Enumeration - Array - Cadenas de texto separados por coma.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

7. Desarrollando pginas JSP.


7.1. Entender el origen, beneficios y debilidades de los JSPs. * El mantenimiento de HTML en los Servlets es muy complicado. * JSP es bsicamente cdigo HTML con cdigo Java embebido. * Se puede utilizar cualquier herramienta de construccin de pginas HTML para construir pginas JSPs. 7.2. Describir la tecnologa JSP, la conversin de JSP a Servlet y el ciclo de vida de una JSP.

Ciclo de vida del JSP

7.3.

Entender los elementos de scripting de JSP, declaraciones y directivas. Elementos de scripting Comentario Directiva Declaracin Scriptlet Expresin Sintaxis estndar <%-- comentario --%> <%@ directiva %> <%! declaracin %> <% cdigo %> <%= expresin %> Sintaxis XML <!-- comentario --> <jsp:directive.include .. /> <jsp:directive.page .. /> <jsp:declaration> .. </jsp:declaration > <jsp:scriptlet> .. </jsp:scriptlet> <jsp:expression> .. </jsp:expression>

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

@page

* Tipos de comentarios en JSP

* Las declaraciones se utilizan para especificar miembros (atributos, mtodos, inner Class) al Servlet generado. La programacion en la declaracin debe seguir la sintaxis Java.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* Sobre escribiendo mtodos:

* El cdigo Scriptlet se colocar por defecto dentro del mtodo _jspService() , este metodo no se puede sobre escribir.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

7.4.

Uso de las variables implcitas de los JSPs.

Variables implcitas en JSP: Nombre de variable request response out session application config pageContext Page exception Descripcin Un objeto de HttpServletRequest asociado con el request. Un objeto de HttpServletResponse asociado con el response. Un objeto JspWrite asociado con enviar un stream en el response. Un objeto HttpSession asociado con la sesin de usuario. Esta variable no existe si el JSP no participa dentro de una sesin. Un objeto ServletContext para la aplicacin Web. Un objeto ServletConfig asociado con el Servlet para el JSP. Un objeto PageContext que encapsula el entorno de un request para el JSP. Es equivalente a la palabra reservada this en programacin Java. Un objeto Throwable que fue lanzado por una otro JSP. La variable esta disponible nicamente si el JSP es de tipo error.

Miembros importantes de PageContext * Object findAttribute(String name), busca el atributo segn el siguiente orden de scope: page, request, session, application. * Object getAttribute(String name), busca el atributo en el scope page. * Object getAttribute(String name, int scope) * void fordward(String relativeUrl) * JspWriter getOut() * Object getPage() * ServletRequest getRequest() * ServletResponse getResponse() * ServletConfig getServletConfig() * ServletContext getServletContext() * HttpSession getSession() 7.5. Entender y usar los tags estndares (jsp:) de JSP.

* Tag useBean

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Si el bean existe lo referencia, en caso contrario lo crea. El tag puede tener cuerpo. type se utiliza para hacer un cast al JavaBean. beanName, se utiliza Beans.instantiate() para la creacin del JavaBean. El contenido del cuerpo es ejecutado nicamente si el bean es creado. El JavaBean deber tener un constructor sin argumentos. El JavaBean no deber tener atributos public. El JavaBean deber implementar java.io.Serializable.

* Tag setProperty

* <jsp:setProperty name=cust property=email> Es equivalente a: cust.setEmail(request.getParameter(email)); * En value se puede indicar una expresin: <jsp:setProperty name=cust property=email value=<%=getEMailExtra()%>> * Tag getProperty

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* Otros Tags

* jsp:param Tiene los atributos obligatorios: name y value.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

8. Desarrollando pginas JSP utilizando Tags personalizados.


8.1. Relacionar el JSTL a las tareas comunes de desarrollo de una aplicacin Web, y entender el uso de Tags en el desarrollo de JSPs.

* JSTL: JSP Standard Tag Library. *

8.2.

Reconocer la correcta sintaxis para los Tags.

8.3.

Configurar un JSP utilizando los Tags de JSTL.

A. Tag personalizado clsico * La librera de tags tienen un jar y un descriptor de la librera (TLD), con extensin .tld. * TLD debe iniciar con el tag taglib y requiere que se especifique la versin de JSP. <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> * Sintaxis para utilizar la librera de tags: <%@ taglib ( uri="tagLibraryURI" | tagdir="tagDir" ) prefix="tagPrefix" %>

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

- prefix: Estos prefijos estn reservados: jsp:, jspx:, java:, javax:, servlet:, sun:, and sunw: - tagdir: Se utiliza para ubicar a los tag file en el directorio /WEB-INF/tags/ o algn sub directorio. * Ejemplos de declaracin:

* El jar se debe colocar en /WEB-INF/lib * El TLD se puede colocar en /WEB-INF, algn subdirectorio de este, en el directorio o subdirectorio /META-INF/ dentro del jar. * Configuracin en web.xml.

Declarando Tags en el TLD Elementos del elemento <tag>

Ejemplo:

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Elementos del elemento <attribute>

Elementos del elemento <variable>

Alcance de la variable:

Programando un Tag Ejemplo Tag simple: <tt:basic/> Handler: import javax.servlet.jsp.tagext.*; public class HelloWorldSimpleTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().write("Hello, world."); } } Ejemplo de Tag con atributo: <c:if test="${Clear}"> Handler: public void setTest(boolean test) { this.test = test; } B. Tag file * Los tag file es un alternativa para crear tags personalizados, se programan nicamente con sintaxis JSP, es decir no requieren compilacin, el archivo TLD es opcional. * El Web Container genera de forma automtica un TLD en /WEB-INF/tags/. * Se deben colocar nicamente en /WEB-INF/tags/ o algn subdirectorio. * Se definen el tag file en un archivo con extensin .tag, .tagx o .tagf, el nombre del archivo se utilizara como nombre del tag.
Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* Tag file puede ser empaquetado en un jar, se deben colocar los tag file en /METAINF/tags/ o algn subdirectorio. * Si el Tag file es empaquetado se debe proporcionar un TLD. Ejemplo 1: Tag simple <%-- WEB-INF/tags/myExample.tag --%> <% out.println("Hello, World !"); %> <%@ taglib prefix="simpleTag" tagdir="/WEB-INF/tags" %> <simpleTag:myExample /> Ejemplo 2: Utilizando atributos <%-- WEB-INF/tags/myExample2.tag --%> <%@ attribute name="someAttribute" %> <% someAttribute = someAttribute.toUpperCase(); out.println(someAttribute);%> <%@ taglib prefix="simpleTag" tagdir="/WEB-INF/tags" %> <simpleTag:myExample2 someAttribute="hello" /> Ejemplo 3: Utilizando JSTL <%-- WEB-INF/tags/myExample3.tag --%> <%@ variable name-given="myVar" scope="AT_BEGIN" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="myVar" value="3"/> After: ${myVar} <jsp:doBody/> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sampleTag" tagdir="/WEB-INF/tags" %> <c:set var="myVar" value="1"/> Before: ${myVar} <br> <simpleTag:myExample3/> 8.4. Escribir cdigo JSP utilizando diversos Tags estndares.

* El Tag set:

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

* El Tag url:

* El Tag out

value: Es lo que se escribir. escapeXml: Por defecto es true e indica que los caracteres <, >, &, y se transformaran a su correspondiente carcter de entidad XML, por ejemplo el < se transformara a: &lt; default Value: Si value es null se escribe lo indicado en default. - No se puede especificar el default como atributo y como cuerpo

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

8.5.

Listar las capacidades de los Tags de JSTL.

Lista de tags JSTL

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

9. Facilidades adicionales para la parte controlador.


9.1. Entender el ciclo de vida de un Servlet. *Ciclo de vida del Servlet.

* En un contenedor Web solo puede existir una instancia de Servlet por definicin de Servlet. * SingleThreadModel esta deprecado. * UnavailableException significa que se debe intentar mas tarde. * ServletConfig

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

9.2.

Describir y usar elementos avanzados adicionales del API Servlet.

a. Upload de archivos. * Manejando formularios de uploads

* Servlet para recibir el upload:

* Formulario de upload:

b. Listeners de eventos. Tipos de eventos: Categora Cambios en el ciclo de vida del contexto Cambios en los atributos del contexto Descripcin * Creacin del contexto. * Bajada del contexto. * Agregar un atributo de contexto. * Remover un atributo Interface javax.servlet. ServletContextListener javax.servlet. ServletContextAttributeListener

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Cambios en el ciclo de vida de la sesin Cambios en los atributos de la sesin.

de contexto. * Remplazar un atributo de contexto. * Creacin de la sesin. * Eliminacin de la sesin. * Timeout de la sesin. * Agregar un atributo de sesin. * Remover un atributo de sesin. * Remplazar un atributo de sesin.

javax.servlet.http. HttpSessionListener javax.servlet.http. HttpSessionAttributeListener

Cambios en el request

Interface for receiving notification events about requests coming into and going out of scope of a web application. A ServletRequest is defined as coming into scope of a web application when it is about to enter the first servlet or filter of the web application, and as going out of scope as it exits the last servlet or the first filter in the chain.

ServletRequestListener

Cambios en los atributos del request.

Interface for receiving notification events about ServletRequest attribute changes. Notifications will be generated while the request is within the scope of the web application. A ServletRequest is defined as coming into scope of a web application when it is about to enter the first servlet or filter of the web application, and as going out of scope when it exits the last servlet or the first filter in the chain.

ServletRequestAttributeListener

* La anotacin con @WebListener o su equivalente en DD solo aplica para los listener anteriores.
Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Clases: ServletContextListener

ServletContextAttributeListener

HttpSessionListener

HttpSessionAttributeListener

HttpSessionBindingListener Permite notificar a un objeto cuando es colocado o retirado de una sesin.

HttpSessionActivationListener Permite notificar a un objeto en sesin cuando se activa o pasiva.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

9.3.

Crear filtros y usarlos en aplicaciones Web.

El API Filter

* Configurando un filtro utilizando anotaciones.

* Configurando un filtro utilizando DD.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Para un Servlet especifico tambin se puede utilizar:

* El API Wrapping - Permiten modificar el request y response. - Se aplican en filtros o en cualquier lugar donde se requiera. - Implementan el patrn de diseo Decorator o Wrapper Clases disponibles: ServletRequestWrapper HttpServletRequestWrapper ServletResponseWrapper HttpServletResponseWrapper. Ejemplo: Deseamos cambiar el valor del parmetro nombre que llega al Servlet. Creamos una clase que extienda HttpServletRequestWrapper y sobre escribimos el metodo getParameter().

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Servlet que cambia el valor del parmetro

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

A este Servlet ya llega el parmetro cambiado.

Valor mostrado en el Browser:

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

10.

Facilidades adicionales para la parte modelo.

10.1. Entender los roles de JDBC y JPA API JDBC: * Un pool de conexin es soportado desde JDBC v2. * El paquete principal para JDBC es java.sql.* * El metodo DriverManager.getConnection() obtiene una conexin exclusiva a la base de datos. * javax.sql.DataSource simplifica el trabajo con pools de conexiones y es portable a travs de los servidores de aplicaciones. * Un objeto de javax.sql.DataSource se obtiene por medio de JNDI: Context ctx = new InitialContext(); ds = (DataSource)ctx.lookup(java:comp/env/jdbc/leagueDB); * DataSource usualmente retorna una conexin a la base de datos desde el pool de conexiones, cuando se cierra la conexin, esta retorna al pool. JPA: * An entity, defined by the programmer * Mappings from entity to the database * Annotations or default rules * persistence.xml specifying the DataSource * JNDI lookup service * A DataSource connected to a connection pool * A connection pool connected to the database * The database with appropriate tables 10.2. Entender los diferentes elementos que conforman el modelo.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

10.3. Entender los fundamentos de conexin a base de datos utilizando JDBC o JPA. JPA: * Obtener un EM @PersistenceContext private EntityManager em; * EM se suele utilizar en aplicaciones JEE * Obtener un PU @PersistenceUnit(unitName="EmployeeService") private EntityManagerFactory factory; EntityManager createdManager = factory.createEntityManager(); * PU se suele utilizar en aplicaciones JSE. JDBC: ds = (DataSource)ctx.lookup(java:comp/env/jdbc/leagueDB); if ( ds == null ) { throw new RuntimeException(DataSource not found.); } connection = ds.getConnection(); stmt = connection.prepareStatement( SELECT * FROM LEAGUE_TABLE WHERE year=?1 and season=?2); stmt.setInt(1, year); stmt.setString(2, season); results = stmt.executeQuery(); while ( results.next() ) { int objectID = results.getInt(LID); num_of_rows++; if ( num_of_rows > 1 ) { throw new SQLException(Too many rows.); } int theYear = results.getInt(year), String theSeason = results.getString(season), }

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

11.

Aplicaciones Web asncronas.

11.1. Entender las interacciones necesarias para las pginas Web asncronas. * Servlets asncronos se agregaron en JEE 6. * Evita que la thread del Servlet quede bloqueada por la espera en alguna condicin externa. * Permite que la respuesta HTTP sea generada por una thread cualquiera. * Aunque es distinto de AJAX, se puede usar en conjunto con esa tecnologa para mejorar la experiencia del usuario. 11.1. Entender el rol del estilo AJAX para la programacin del lado del cliente. * AJAX permite que una pgina genere request a un servidor web de forma asncrona. * Las pginas se actualizaran de forma dinmica. * Proceso de atencin con AJAX: - Cliente solicita una pgina al servidor. - Servidor responde, la pgina utiliza JavaScript. - El cliente invoca a algn metodo de JavaScript. - JavaScript invoca a algn servicio del servidor de forma asncrona. - El servidor responde actualizando el DOM (XML)/JavaScript (JSON) del cliente. * Una mejora de HTTP 1.1 vs HTTP 1.0 es la persistencia de la conexin TCP, de esta forma la misma conexin se utiliza para request sucesivos. Ejemplo de pgina JSP que utiliza AJAX.

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

update.jsp

11.3. Implementar Servlets asncronos utilizando las facilidades de JEE 6. * No se puede hacer un dispatching desde un Servlet sncrono hacia un Servlet asncrono. Cdigo del Servlet asncrono:

En XML <async-supported>true</async-supported>

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

El Handler de control:

Listeners:

AsyncListener:

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

12. Seguridad de aplicaciones Web.


12.1. Entendiendo el rol del contenedor dentro de la seguridad. El contenedor proporciona todos los mecanismos de seguridad. 12.2. Describir e implementar los cuatros modelos de autenticacin. * Modelos de autenticacin: Basic Autenticacin basica HTTP, se basa en un usario/clave que va como parte del header de HTTP, no es posible un mecanismo de logout y la interface grafica para pedir los datos de usuario/clave deben del browser. Se utiliza poco este mecanismo. Requiere HTTPS para proteger la clave. Digest Es similar al Basic, pero transporta el usuario/clave de forma encriptada, el browser sigue contralando la interface de solicitud de usuario/clave. Se utiliza poco este mecanismo. Algunos Contenedores pueden no soportarlo. Form Es el mecanismo ms popular, se puede disear un formulario personalizado para solicitar el usuario/clave, se debe usar HTTPS para proteger los datos. Client Certificate. El cliente requiere tener un certificado digital y este debe estar almacenado (La llave publica) en el servidor, de esa forma se autentica al cliente. Es un mecanismo muy seguro.

* Especificaciones en el DD login-config?: auth-method?: BASIC, DIGEST, CLIENT-CERT, FORM realm-name?: Nombre del repositorio de usuarios/grupos. form-login-config?: Para el caso de un formulario personalizado. form-login-page?: Pgina que contiene el login deben iniciar con / form-error-page?: Pgina que contiene el error deben iniciar con / * Formulario personalizado:

<form method='post' action='j_security_check'> <input type='text' name='j_username'> <input type='password' name='j_password'> </form>

Oscar Vsquez Flores (eoscarvf@gmail.com )

Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Gua de estudio

12.3. Forzar el uso de encriptacin entre una aplicacin Web y el cliente Browser. <security-constraint> . . . <user-data-constraint> <description/> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

Como anotacin transport-guarantee: @ServletSecurity(@HttpConstraint(transportGuarantee = TransportGuarantee.CONFIDENTIAL)) NONE: No hay restricciones respecto al transporte. INTEGRAL: La data enviada entre el cliente y el servidor no debe ser cambiada en el camino. CONFIDENTIAL: La data no debe ser observada por terceros. Tanto INTEGRAL como CONFIDENTIAL requieren por lo menos el uso de un certificado SSL en el lado del servidor. 12.4. Entender el rol de JAAS dentro de una autenticacin pluggable/extensible para aplicaciones Web. JAAS me permite tener independencia del repositorio para la autenticacin y autorizacin, este puede ser una simple base de datos o una LDAP, mi aplicacin Web no se afecta por el tipo de repositorio.

Oscar Vsquez Flores (eoscarvf@gmail.com )