SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
Guia de estudio para OCEJWCD6
“Oracle Certified Expert, Java EE 6 Web Component
Developer”
Fecha Cambios
2013-07-23 Primera publicación
I. Informacion del examen.
Duración : 140 minutos
Nro. de preguntas : 57
% para aprobar : 64%
Costo : $150 USD
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
II. Temas del examen
1. Introducción a los Java Servlets.
1.1. Describir a las aplicaciones Web, CGI y el rol de Java.
1.2. Describir los beneficios de la tecnología 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. Introducción 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 diseño 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 entorno de un Servlet.
4.1. Entender los detalles del protocolo HTTP.
4.2. Entender los fundamentos de un formulario HTML.
4.3. Entender los fundamentos de un HttpServlet y las APIs relacionadas.
4.4. Escribir código que maneje sesiones de un cliente y cookies.
5. Facilidades del contenedor para Servlets JSPs.
5.1. Entender el propósito 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 implícitos de EL.
6.4. Crear y usar expresiones aritméticas en EL.
6.5. Identificar la necesidad para iteración y selección dentro de la vista, usar
los Tags de JSTL para estas necesidades.
7. Desarrollando páginas JSP.
7.1. Entender el origen, beneficios y debilidades de los JSPs.
7.2. Describir la tecnología JSP, la conversión 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 implícitas de los JSPs.
7.5. Entender y usar los tags estándares (jsp:) de JSP.
8. Desarrollando páginas JSP utilizando Tags personalizados.
8.1. Relacionar el JSTL a las tareas comunes de desarrollo de una aplicación
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 código JSP utilizando diversos Tags estándares.
8.5. Listar las capacidades de los Tags de JSTL.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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 conexión a base de datos utilizando JDBC o
JPA.
11. Aplicaciones Web asíncronas.
11.1. Entender las interacciones necesarias para las páginas Web asíncronas.
11.2. Entender el rol del estilo AJAX para la programación del lado del cliente.
11.3. Implementar Servlets asíncronos 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 autenticación.
12.3. Forzar el uso de encriptación entre una aplicación Web y el cliente
Browser.
12.4. Entender el rol de JAAS dentro de una autenticación pluggable/extensible
para aplicaciones Web.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
III. Desarrollo de temas
1. Introducción 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.
* Características 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 tecnología Java Servlet.
* Proceso único, es más rápido que los CGI.
* Más escalables que los CGI.
* Utilizan lenguaje de programación Java.
* Facilidades de la plataforma Java para el control de logs, seguridad y gestión de
errores.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
1.3. Crear un simple Java Servlet.
* Ejemplo de Servlet:
1.4. Definir la arquitectura de 3 capas.
* El diseño de las aplicaciones se pueden separa en base a capas o
responsabilidades, usualmente se dividen en 3 partes:
Presentación-Negocio-Datos.
1.5. Definir la arquitectura Modelo-Vista-Controlador (MVC).
* El MVC es un patrón de diseño de aplicaciones.
* El modelo representa a las entidades y lógica 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.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
2. Introducción a los Java Server Pages.
2.1. Describir porque los Servlets no son suficientes.
* Editar código HTML dentro de los Servlet es muy complicado.
* Los editores de páginas HTML (WYSIWYG) no trabajan con Servlets.
2.2. Describir lo principal de JSPs
* Editar código HTML dentro de los Servlet es muy complicado.
2.3. Entender los fundamentos y razones para la arquitectura MVC.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
3. Implementando un diseño 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:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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);
3.4. Entender los fundamentos de EL.
3.5. Implementar un sistema simple basado en MVC.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
4. El entorno de un Servlet.
4.1. Entender los detalles del protocolo HTTP.
* Métodos del protocolo HTTP
Método
HTTP
Descripción
GET Pide una representación del recurso especificado. Por seguridad no
debería ser usado por aplicaciones que causen efectos ya que
transmite información a través de la URI agregando parámetros a
la URL.
Ejemplo:
GET /images/logo.png HTTP/1.1
obtiene un recurso llamado logo.png
Ejemplo con parámetros:
/index.php?page=main&lang=es
HEAD Pide una respuesta idéntica a la que correspondería a una petición
GET, pero sin el cuerpo de la respuesta. Esto es útil para la
recuperación de meta-información escrita en los encabezados de
respuesta, sin tener que transportar todo el contenido.
POST Somete los datos a que sean procesados para el recurso
identificado. Los datos se incluirán en el cuerpo de la petición. Esto
puede resultar en la creación de un nuevo recurso o de las
actualizaciones de los recursos existentes o ambas cosas.
PUT Sube, carga o realiza un upload de un recurso especificado
(archivo), es el camino más 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 método
PUT te permite escribir un archivo en una conexión socket
establecida con el servidor. La desventaja del método PUT es que
los servidores de hosting compartido no lo tienen habilitado.
Ejemplo:
PUT /path/filename.html HTTP/1.1
DELETE Borra el recurso especificado.
TRACE Este método solicita al servidor que envíe de vuelta en un mensaje
de respuesta, en la sección del cuerpo de entidad, toda la data que
reciba del mensaje de solicitud. Se utiliza con fines de
comprobación y diagnostico.
OPTIONS Devuelve los métodos HTTP que el servidor soporta para un URL
específica. Esto puede ser utilizado para comprobar la
funcionalidad de un servidor web mediante petición en lugar de un
recurso especifico.
CONNECT Se utiliza para saber si se tiene acceso a un host, no
necesariamente la petición 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).
* Existe un método doXXX en Servlet para todos los métodos del HTTP excepto
para el CONNECT.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
HTTP request.
HTTP Header del request.
HTTP response
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
HTTP Header del response
4.2. Entender los fundamentos de un formulario HTML.
4.3. Entender los fundamentos de un HttpServlet y las APIs relacionadas.
* ServletRequest
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* HttpServletRequest
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
4.4. Escribir código que maneje sesiones de un cliente y cookies.
HttpSession
Cookies:
* Son pares de key-dato almacenados en un archivo de texto.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
5. Facilidades del contenedor para Servlets y JSPs.
5.1. Entender el propósito y la estructura de los descriptores de
despliegue.
* Un WAR es JAR para aplicaciones Web.
* El context root es la URL base de la aplicación.
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 información 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.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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 carácter de escape  la expresión no se evalúa:
${expresión}
* Operadores de comparación:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* Operadores lógicos
* empty se utiliza para evaluar null, String vacío o array/Collection/Map sin
elementos.
* Si utilizamos una variable que es null o que no existe, no se genera excepción y
se retorna una cadena vacía o una valor según el contexto de la operación donde se
encuentre.
* Si utilizamos un atributo que no existe de una variable que si existe, por ejemplo
${existe.noencuentra} entonces se genera una excepción.
* 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 expresión que retorne algún valor correcto.
* Podemos utilizar índices de array de forma directa en métodos (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 atribuçtos 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 definición del método (función) a invocar.
package foo;
public class RandomColorGenerator{
public static String pickRandomColor(){
///código.
}
}
2. Descripción en el TLD:
<taglib>
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
<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 implícitos de EL.
* initParam obtiene los parametros de contexto y no del Servlet.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
6.4. Crear y usar expresiones aritméticas en EL.
* Observar la siguiente expresión:
${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 numérico se realizara.
* ${0 * false} retornara un error de compilación, false no se puede transformar a
un numérico.
6.5. Identificar la necesidad para iteración y selección dentro de la vista,
usar los Tags de JSTL para estas necesidades.
* Tag if
* Tag forEach
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* La colleccion puede ser:
- Collection
- Iterator
- Map
- Enumeration
- Array
- Cadenas de texto separados por coma.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
7. Desarrollando páginas JSP.
7.1. Entender el origen, beneficios y debilidades de los JSPs.
* El mantenimiento de HTML en los Servlets es muy complicado.
* JSP es básicamente código HTML con código Java embebido.
* Se puede utilizar cualquier herramienta de construcción de páginas HTML para
construir páginas JSPs.
7.2. Describir la tecnología JSP, la conversión 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
Sintaxis estándar Sintaxis XML
Comentario <%-- comentario --%> <!-- comentario -->
Directiva <%@ directiva %> <jsp:directive.include .. />
<jsp:directive.page .. />
Declaración <%! declaración %> <jsp:declaration> ..
</jsp:declaration >
Scriptlet <% código %> <jsp:scriptlet> ..
</jsp:scriptlet>
Expresión <%= expresión %> <jsp:expression> ..
</jsp:expression>
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
@page
* Tipos de comentarios en JSP
* Las declaraciones se utilizan para especificar miembros (atributos, métodos, inner
Class) al Servlet generado. La programacion en la declaración debe seguir la
sintaxis Java.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* Sobre escribiendo métodos:
* El código Scriptlet se colocará por defecto dentro del método _jspService() , este
metodo no se puede sobre escribir.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
7.4. Uso de las variables implícitas de los JSPs.
Variables implícitas en JSP:
Nombre de
variable
Descripción
request Un objeto de HttpServletRequest asociado con el request.
response Un objeto de HttpServletResponse asociado con el
response.
out Un objeto JspWrite asociado con enviar un stream en el
response.
session Un objeto HttpSession asociado con la sesión de usuario.
Esta variable no existe si el JSP no participa dentro de una
sesión.
application Un objeto ServletContext para la aplicación Web.
config Un objeto ServletConfig asociado con el Servlet para el JSP.
pageContext Un objeto PageContext que encapsula el entorno de un
request para el JSP.
Page Es equivalente a la palabra reservada this en programación
Java.
exception 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 según 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 estándares (jsp:) de JSP.
* Tag useBean
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
- 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 creación 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 expresión:
<jsp:setProperty name=”cust” property=”email” value=’<%=getEMailExtra()%>’>
* Tag getProperty
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* Otros Tags
* jsp:param
Tiene los atributos obligatorios: name y value.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
8. Desarrollando páginas JSP utilizando Tags personalizados.
8.1. Relacionar el JSTL a las tareas comunes de desarrollo de una
aplicación 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 clásico
* La librería de tags tienen un jar y un descriptor de la librería (TLD), con extensión
.tld.
* TLD debe iniciar con el tag taglib y requiere que se especifique la versión 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 librería de tags:
<%@ taglib ( uri="tagLibraryURI" | tagdir="tagDir" )
prefix="tagPrefix" %>
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
- prefix: Estos prefijos están 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 algún
sub directorio.
* Ejemplos de declaración:
* El jar se debe colocar en /WEB-INF/lib
* El TLD se puede colocar en /WEB-INF, algún subdirectorio de este, en el
directorio o subdirectorio /META-INF/ dentro del jar.
* Configuración en web.xml.
Declarando Tags en el TLD
Elementos del elemento <tag>
Ejemplo:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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 compilación, el archivo TLD es
opcional.
* El Web Container genera de forma automática un TLD en /WEB-INF/tags/.
* Se deben colocar únicamente en /WEB-INF/tags/ o algún subdirectorio.
* Se definen el tag file en un archivo con extensión .tag, .tagx o .tagf, el nombre
del archivo se utilizara como nombre del tag.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* Tag file puede ser empaquetado en un jar, se deben colocar los tag file en /META-
INF/tags/ o algún 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 código JSP utilizando diversos Tags estándares.
* El Tag set:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
* 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 carácter 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
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
8.5. Listar las capacidades de los Tags de JSTL.
Lista de tags JSTL
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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 definición
de Servlet.
* SingleThreadModel esta deprecado.
* UnavailableException significa que se debe intentar mas tarde.
* ServletConfig
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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:
Categoría Descripción Interface
Cambios en el ciclo de
vida del contexto
* Creación del contexto.
* Bajada del contexto.
javax.servlet.
ServletContextListener
Cambios en los
atributos del contexto
* Agregar un atributo
de contexto.
* Remover un atributo
javax.servlet.
ServletContextAttributeListener
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
de contexto.
* Remplazar un atributo
de contexto.
Cambios en el ciclo de
vida de la sesión
* Creación de la sesión.
* Eliminación de la
sesión.
* Timeout de la sesión.
javax.servlet.http.
HttpSessionListener
Cambios en los
atributos de la sesión.
* Agregar un atributo
de sesión.
* Remover un atributo
de sesión.
* Remplazar un atributo
de sesión.
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 anotación con @WebListener o su equivalente en DD solo aplica para los
listener anteriores.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
Clases:
ServletContextListener
ServletContextAttributeListener
HttpSessionListener
HttpSessionAttributeListener
HttpSessionBindingListener
Permite notificar a un objeto cuando es colocado o retirado de una sesión.
HttpSessionActivationListener
Permite notificar a un objeto en sesión cuando se activa o pasiva.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
9.3. Crear filtros y usarlos en aplicaciones Web.
El API Filter
* Configurando un filtro utilizando anotaciones.
* Configurando un filtro utilizando DD.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
Para un Servlet especifico también 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 patrón de diseño Decorator o Wrapper
Clases disponibles:
ServletRequestWrapper
HttpServletRequestWrapper
ServletResponseWrapper
HttpServletResponseWrapper.
Ejemplo:
Deseamos cambiar el valor del parámetro nombre que llega al Servlet.
Creamos una clase que extienda HttpServletRequestWrapper y sobre escribimos
el metodo getParameter().
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
Servlet que cambia el valor del parámetro
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
A este Servlet ya llega el parámetro cambiado.
Valor mostrado en el Browser:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
10. Facilidades adicionales para la parte modelo.
10.1. Entender los roles de JDBC y JPA
API JDBC:
* Un pool de conexión es soportado desde JDBC v2.
* El paquete principal para JDBC es java.sql.*
* El metodo DriverManager.getConnection() obtiene una conexión exclusiva a la
base de datos.
* javax.sql.DataSource simplifica el trabajo con pools de conexiones y es portable a
través 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 conexión a la base de datos desde el pool de
conexiones, cuando se cierra la conexión, 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.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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”),
}
10.3. Entender los fundamentos de conexión 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:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
11. Aplicaciones Web asíncronas.
11.1. Entender las interacciones necesarias para las páginas Web
asíncronas.
* Servlets asíncronos se agregaron en JEE 6.
* Evita que la thread del Servlet quede bloqueada por la espera en alguna
condición externa.
* Permite que la respuesta HTTP sea generada por una thread cualquiera.
* Aunque es distinto de AJAX, se puede usar en conjunto con esa tecnología para
mejorar la experiencia del usuario.
11.1. Entender el rol del estilo AJAX para la programación del lado del
cliente.
* AJAX permite que una página genere request a un servidor web de forma
asíncrona.
* Las páginas se actualizaran de forma dinámica.
* Proceso de atención con AJAX:
- Cliente solicita una página al servidor.
- Servidor responde, la página utiliza JavaScript.
- El cliente invoca a algún metodo de JavaScript.
- JavaScript invoca a algún servicio del servidor de forma asíncrona.
- 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 conexión TCP, de
esta forma la misma conexión se utiliza para request sucesivos.
Ejemplo de página JSP que utiliza AJAX.
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
update.jsp
11.3. Implementar Servlets asíncronos utilizando las facilidades de JEE 6.
* No se puede hacer un dispatching desde un Servlet síncrono hacia un Servlet
asíncrono.
Código del Servlet asíncrono:
En XML <async-supported>true</async-supported>
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
El Handler de control:
Listeners:
AsyncListener:
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
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 autenticación.
* Modelos de autenticación:
Basic
Autenticación 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 más popular, se puede diseñar 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?: Página que contiene el login deben iniciar con “/”
form-error-page?: Página 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>
Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio
Oscar Vásquez Flores (eoscarvf@gmail.com )
12.3. Forzar el uso de encriptación entre una aplicación Web y el cliente
Browser.
Como anotación transport-guarantee:
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 autenticación
pluggable/extensible para aplicaciones Web.
JAAS me permite tener independencia del repositorio para la autenticación y
autorización, este puede ser una simple base de datos o una LDAP, mi aplicación
Web no se afecta por el tipo de repositorio.
<security-constraint>
. . .
<user-data-constraint>
<description/>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
@ServletSecurity(@HttpConstraint(transportGuarantee
= TransportGuarantee.CONFIDENTIAL))

Más contenido relacionado

La actualidad más candente (15)

Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Framework
FrameworkFramework
Framework
 
ORACLE SQL
ORACLE SQLORACLE SQL
ORACLE SQL
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Agentes y servlets
Agentes y servletsAgentes y servlets
Agentes y servlets
 
Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
Struts2
Struts2Struts2
Struts2
 
Java Web Lección 03 - MVC
Java Web Lección 03 - MVCJava Web Lección 03 - MVC
Java Web Lección 03 - MVC
 
Statement
StatementStatement
Statement
 
Sesion2 Php Oo Y Mysql
Sesion2 Php Oo Y MysqlSesion2 Php Oo Y Mysql
Sesion2 Php Oo Y Mysql
 
Curso Java Avanzado 6 Struts
Curso Java Avanzado   6 StrutsCurso Java Avanzado   6 Struts
Curso Java Avanzado 6 Struts
 
Modulo 1 java ee platform
Modulo 1   java ee platformModulo 1   java ee platform
Modulo 1 java ee platform
 
Instalacion apachetocamtxammp
Instalacion apachetocamtxammpInstalacion apachetocamtxammp
Instalacion apachetocamtxammp
 
Configuracion del Entorno
Configuracion del EntornoConfiguracion del Entorno
Configuracion del Entorno
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 

Destacado

Clases Anidadas en java
Clases Anidadas en javaClases Anidadas en java
Clases Anidadas en javajent46
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones webFelipe
 
PREGUNTAS DE EXAMEN
PREGUNTAS DE EXAMENPREGUNTAS DE EXAMEN
PREGUNTAS DE EXAMENAlfa Mercado
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web javaCésar Ocampo
 
Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7Carlos Camacho
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programaciónoposicionestic
 
Social Media Strategies (July 2011) at Seattle's School of Visual Concepts
Social Media Strategies (July 2011) at Seattle's School of Visual ConceptsSocial Media Strategies (July 2011) at Seattle's School of Visual Concepts
Social Media Strategies (July 2011) at Seattle's School of Visual Conceptssocial3i
 
Análisis de la pedagogía invertida como tendencia de aprendizaje
Análisis de la pedagogía invertida como tendencia de aprendizajeAnálisis de la pedagogía invertida como tendencia de aprendizaje
Análisis de la pedagogía invertida como tendencia de aprendizajeRojas Uni Yenny
 
INTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓNINTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓNOctavio Arias
 
Seis cosas que quizás no sabías de Halloween
Seis cosas que quizás no sabías de HalloweenSeis cosas que quizás no sabías de Halloween
Seis cosas que quizás no sabías de HalloweenJPEDRAZA12
 
APP101_HARDY_week3_assignment
APP101_HARDY_week3_assignmentAPP101_HARDY_week3_assignment
APP101_HARDY_week3_assignmentNatasha Hardy
 
United liberation movement for west papua
United liberation movement for west papuaUnited liberation movement for west papua
United liberation movement for west papuaIsco Alarcon
 
Social Media: Strategies That Fell Short
Social Media: Strategies That Fell ShortSocial Media: Strategies That Fell Short
Social Media: Strategies That Fell ShortBarbara Nixon
 

Destacado (20)

Clases Anidadas en java
Clases Anidadas en javaClases Anidadas en java
Clases Anidadas en java
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones web
 
Clases Anidadas
Clases AnidadasClases Anidadas
Clases Anidadas
 
PREGUNTAS DE EXAMEN
PREGUNTAS DE EXAMENPREGUNTAS DE EXAMEN
PREGUNTAS DE EXAMEN
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7
 
Java Certification by HUJAK - 2015-05-12 - at JavaCro'15 conference
Java Certification by HUJAK - 2015-05-12 - at JavaCro'15 conferenceJava Certification by HUJAK - 2015-05-12 - at JavaCro'15 conference
Java Certification by HUJAK - 2015-05-12 - at JavaCro'15 conference
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programación
 
Social Media Strategies (July 2011) at Seattle's School of Visual Concepts
Social Media Strategies (July 2011) at Seattle's School of Visual ConceptsSocial Media Strategies (July 2011) at Seattle's School of Visual Concepts
Social Media Strategies (July 2011) at Seattle's School of Visual Concepts
 
Sample
SampleSample
Sample
 
Análisis de la pedagogía invertida como tendencia de aprendizaje
Análisis de la pedagogía invertida como tendencia de aprendizajeAnálisis de la pedagogía invertida como tendencia de aprendizaje
Análisis de la pedagogía invertida como tendencia de aprendizaje
 
INTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓNINTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓN
 
Seis cosas que quizás no sabías de Halloween
Seis cosas que quizás no sabías de HalloweenSeis cosas que quizás no sabías de Halloween
Seis cosas que quizás no sabías de Halloween
 
CSS - Style your site
CSS - Style your siteCSS - Style your site
CSS - Style your site
 
NIRC_ICSI
NIRC_ICSINIRC_ICSI
NIRC_ICSI
 
Audiens Shop
Audiens ShopAudiens Shop
Audiens Shop
 
APP101_HARDY_week3_assignment
APP101_HARDY_week3_assignmentAPP101_HARDY_week3_assignment
APP101_HARDY_week3_assignment
 
United liberation movement for west papua
United liberation movement for west papuaUnited liberation movement for west papua
United liberation movement for west papua
 
Social Media: Strategies That Fell Short
Social Media: Strategies That Fell ShortSocial Media: Strategies That Fell Short
Social Media: Strategies That Fell Short
 
Scotland
ScotlandScotland
Scotland
 

Similar a Guia de estudio para Oracle Certified Java EE 6 Web Component Developer

[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)Eudris Cabrera
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaEudris Cabrera
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slidesmundojava
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver FulgueraJavier Oliver Fulguera
 
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web ServicesLuis Fernando Aguas Bucheli
 
Módulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdfMódulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdftripfrap
 
Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Esca...
Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Esca...Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Esca...
Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Esca...Eudris Cabrera
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCParadigma Digital
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con JavaEudris Cabrera
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptBYRONMIGUELSUBUYUCPA
 
[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7Eudris Cabrera
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Robert Rayco Quiroz
 

Similar a Guia de estudio para Oracle Certified Java EE 6 Web Component Developer (20)

10.desarrollowebconjava
10.desarrollowebconjava10.desarrollowebconjava
10.desarrollowebconjava
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en Java
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Clase_MVC_I.pptx
Clase_MVC_I.pptxClase_MVC_I.pptx
Clase_MVC_I.pptx
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Java Web - Struts
Java Web - StrutsJava Web - Struts
Java Web - Struts
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
 
Módulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdfMódulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdf
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Esca...
Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Esca...Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Esca...
Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Esca...
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
 
[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 

Más de Oscar V

Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerOscar V
 
Curso de JBPM5 - Laboratorios
Curso de JBPM5 - LaboratoriosCurso de JBPM5 - Laboratorios
Curso de JBPM5 - LaboratoriosOscar V
 
Curso de JBPM5
Curso de JBPM5Curso de JBPM5
Curso de JBPM5Oscar V
 
Proceso para el registro o compra de exámenes de certificación en java
Proceso para el registro o compra de exámenes de certificación en javaProceso para el registro o compra de exámenes de certificación en java
Proceso para el registro o compra de exámenes de certificación en javaOscar V
 
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Oscar V
 
Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1Oscar V
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...Oscar V
 
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)Oscar V
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)Oscar V
 
Administracion de WebSphere MQ for zOS v7.0
Administracion de WebSphere MQ for zOS v7.0Administracion de WebSphere MQ for zOS v7.0
Administracion de WebSphere MQ for zOS v7.0Oscar V
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1Oscar V
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
 
WMB for z/OS - Configuracion del nodo CICSRequest en z/OS
WMB for z/OS - Configuracion del nodo CICSRequest en z/OSWMB for z/OS - Configuracion del nodo CICSRequest en z/OS
WMB for z/OS - Configuracion del nodo CICSRequest en z/OSOscar V
 
Preparacion Ambiente Wmb6.X
Preparacion Ambiente Wmb6.XPreparacion Ambiente Wmb6.X
Preparacion Ambiente Wmb6.XOscar V
 

Más de Oscar V (14)

Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 Programmer
 
Curso de JBPM5 - Laboratorios
Curso de JBPM5 - LaboratoriosCurso de JBPM5 - Laboratorios
Curso de JBPM5 - Laboratorios
 
Curso de JBPM5
Curso de JBPM5Curso de JBPM5
Curso de JBPM5
 
Proceso para el registro o compra de exámenes de certificación en java
Proceso para el registro o compra de exámenes de certificación en javaProceso para el registro o compra de exámenes de certificación en java
Proceso para el registro o compra de exámenes de certificación en java
 
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
 
Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 7 de 7(fundamentos) v1
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
 
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
 
Administracion de WebSphere MQ for zOS v7.0
Administracion de WebSphere MQ for zOS v7.0Administracion de WebSphere MQ for zOS v7.0
Administracion de WebSphere MQ for zOS v7.0
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
WMB for z/OS - Configuracion del nodo CICSRequest en z/OS
WMB for z/OS - Configuracion del nodo CICSRequest en z/OSWMB for z/OS - Configuracion del nodo CICSRequest en z/OS
WMB for z/OS - Configuracion del nodo CICSRequest en z/OS
 
Preparacion Ambiente Wmb6.X
Preparacion Ambiente Wmb6.XPreparacion Ambiente Wmb6.X
Preparacion Ambiente Wmb6.X
 

Guia de estudio para Oracle Certified Java EE 6 Web Component Developer

  • 1. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) Guia de estudio para OCEJWCD6 “Oracle Certified Expert, Java EE 6 Web Component Developer” Fecha Cambios 2013-07-23 Primera publicación I. Informacion del examen. Duración : 140 minutos Nro. de preguntas : 57 % para aprobar : 64% Costo : $150 USD
  • 2. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) II. Temas del examen 1. Introducción a los Java Servlets. 1.1. Describir a las aplicaciones Web, CGI y el rol de Java. 1.2. Describir los beneficios de la tecnología 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. Introducción 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 diseño 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 entorno de un Servlet. 4.1. Entender los detalles del protocolo HTTP. 4.2. Entender los fundamentos de un formulario HTML. 4.3. Entender los fundamentos de un HttpServlet y las APIs relacionadas. 4.4. Escribir código que maneje sesiones de un cliente y cookies. 5. Facilidades del contenedor para Servlets JSPs. 5.1. Entender el propósito 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 implícitos de EL. 6.4. Crear y usar expresiones aritméticas en EL. 6.5. Identificar la necesidad para iteración y selección dentro de la vista, usar los Tags de JSTL para estas necesidades. 7. Desarrollando páginas JSP. 7.1. Entender el origen, beneficios y debilidades de los JSPs. 7.2. Describir la tecnología JSP, la conversión 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 implícitas de los JSPs. 7.5. Entender y usar los tags estándares (jsp:) de JSP. 8. Desarrollando páginas JSP utilizando Tags personalizados. 8.1. Relacionar el JSTL a las tareas comunes de desarrollo de una aplicación 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 código JSP utilizando diversos Tags estándares. 8.5. Listar las capacidades de los Tags de JSTL.
  • 3. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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 conexión a base de datos utilizando JDBC o JPA. 11. Aplicaciones Web asíncronas. 11.1. Entender las interacciones necesarias para las páginas Web asíncronas. 11.2. Entender el rol del estilo AJAX para la programación del lado del cliente. 11.3. Implementar Servlets asíncronos 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 autenticación. 12.3. Forzar el uso de encriptación entre una aplicación Web y el cliente Browser. 12.4. Entender el rol de JAAS dentro de una autenticación pluggable/extensible para aplicaciones Web.
  • 4. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) III. Desarrollo de temas 1. Introducción 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. * Características 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 tecnología Java Servlet. * Proceso único, es más rápido que los CGI. * Más escalables que los CGI. * Utilizan lenguaje de programación Java. * Facilidades de la plataforma Java para el control de logs, seguridad y gestión de errores.
  • 5. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 1.3. Crear un simple Java Servlet. * Ejemplo de Servlet: 1.4. Definir la arquitectura de 3 capas. * El diseño de las aplicaciones se pueden separa en base a capas o responsabilidades, usualmente se dividen en 3 partes: Presentación-Negocio-Datos. 1.5. Definir la arquitectura Modelo-Vista-Controlador (MVC). * El MVC es un patrón de diseño de aplicaciones. * El modelo representa a las entidades y lógica 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.
  • 6. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 2. Introducción a los Java Server Pages. 2.1. Describir porque los Servlets no son suficientes. * Editar código HTML dentro de los Servlet es muy complicado. * Los editores de páginas HTML (WYSIWYG) no trabajan con Servlets. 2.2. Describir lo principal de JSPs * Editar código HTML dentro de los Servlet es muy complicado. 2.3. Entender los fundamentos y razones para la arquitectura MVC.
  • 7. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 3. Implementando un diseño 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:
  • 8. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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); 3.4. Entender los fundamentos de EL. 3.5. Implementar un sistema simple basado en MVC.
  • 9. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 4. El entorno de un Servlet. 4.1. Entender los detalles del protocolo HTTP. * Métodos del protocolo HTTP Método HTTP Descripción GET Pide una representación del recurso especificado. Por seguridad no debería ser usado por aplicaciones que causen efectos ya que transmite información a través de la URI agregando parámetros a la URL. Ejemplo: GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png Ejemplo con parámetros: /index.php?page=main&lang=es HEAD Pide una respuesta idéntica a la que correspondería a una petición GET, pero sin el cuerpo de la respuesta. Esto es útil para la recuperación de meta-información escrita en los encabezados de respuesta, sin tener que transportar todo el contenido. POST Somete los datos a que sean procesados para el recurso identificado. Los datos se incluirán en el cuerpo de la petición. Esto puede resultar en la creación de un nuevo recurso o de las actualizaciones de los recursos existentes o ambas cosas. PUT Sube, carga o realiza un upload de un recurso especificado (archivo), es el camino más 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 método PUT te permite escribir un archivo en una conexión socket establecida con el servidor. La desventaja del método PUT es que los servidores de hosting compartido no lo tienen habilitado. Ejemplo: PUT /path/filename.html HTTP/1.1 DELETE Borra el recurso especificado. TRACE Este método solicita al servidor que envíe de vuelta en un mensaje de respuesta, en la sección del cuerpo de entidad, toda la data que reciba del mensaje de solicitud. Se utiliza con fines de comprobación y diagnostico. OPTIONS Devuelve los métodos HTTP que el servidor soporta para un URL específica. Esto puede ser utilizado para comprobar la funcionalidad de un servidor web mediante petición en lugar de un recurso especifico. CONNECT Se utiliza para saber si se tiene acceso a un host, no necesariamente la petición 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). * Existe un método doXXX en Servlet para todos los métodos del HTTP excepto para el CONNECT.
  • 10. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) HTTP request. HTTP Header del request. HTTP response
  • 11. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) HTTP Header del response 4.2. Entender los fundamentos de un formulario HTML. 4.3. Entender los fundamentos de un HttpServlet y las APIs relacionadas. * ServletRequest
  • 12. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com )
  • 13. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * HttpServletRequest
  • 14. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 4.4. Escribir código que maneje sesiones de un cliente y cookies. HttpSession Cookies: * Son pares de key-dato almacenados en un archivo de texto.
  • 15. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 5. Facilidades del contenedor para Servlets y JSPs. 5.1. Entender el propósito y la estructura de los descriptores de despliegue. * Un WAR es JAR para aplicaciones Web. * El context root es la URL base de la aplicación. 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 información 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.
  • 16. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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.
  • 17. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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 carácter de escape la expresión no se evalúa: ${expresión} * Operadores de comparación:
  • 18. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * Operadores lógicos * empty se utiliza para evaluar null, String vacío o array/Collection/Map sin elementos. * Si utilizamos una variable que es null o que no existe, no se genera excepción y se retorna una cadena vacía o una valor según el contexto de la operación donde se encuentre. * Si utilizamos un atributo que no existe de una variable que si existe, por ejemplo ${existe.noencuentra} entonces se genera una excepción. * 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 expresión que retorne algún valor correcto. * Podemos utilizar índices de array de forma directa en métodos (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 atribuçtos 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 definición del método (función) a invocar. package foo; public class RandomColorGenerator{ public static String pickRandomColor(){ ///código. } } 2. Descripción en el TLD: <taglib>
  • 19. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) <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 implícitos de EL. * initParam obtiene los parametros de contexto y no del Servlet.
  • 20. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 6.4. Crear y usar expresiones aritméticas en EL. * Observar la siguiente expresión: ${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 numérico se realizara. * ${0 * false} retornara un error de compilación, false no se puede transformar a un numérico. 6.5. Identificar la necesidad para iteración y selección dentro de la vista, usar los Tags de JSTL para estas necesidades. * Tag if * Tag forEach
  • 21. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * La colleccion puede ser: - Collection - Iterator - Map - Enumeration - Array - Cadenas de texto separados por coma.
  • 22. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 7. Desarrollando páginas JSP. 7.1. Entender el origen, beneficios y debilidades de los JSPs. * El mantenimiento de HTML en los Servlets es muy complicado. * JSP es básicamente código HTML con código Java embebido. * Se puede utilizar cualquier herramienta de construcción de páginas HTML para construir páginas JSPs. 7.2. Describir la tecnología JSP, la conversión 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 Sintaxis estándar Sintaxis XML Comentario <%-- comentario --%> <!-- comentario --> Directiva <%@ directiva %> <jsp:directive.include .. /> <jsp:directive.page .. /> Declaración <%! declaración %> <jsp:declaration> .. </jsp:declaration > Scriptlet <% código %> <jsp:scriptlet> .. </jsp:scriptlet> Expresión <%= expresión %> <jsp:expression> .. </jsp:expression>
  • 23. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) @page * Tipos de comentarios en JSP * Las declaraciones se utilizan para especificar miembros (atributos, métodos, inner Class) al Servlet generado. La programacion en la declaración debe seguir la sintaxis Java.
  • 24. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * Sobre escribiendo métodos: * El código Scriptlet se colocará por defecto dentro del método _jspService() , este metodo no se puede sobre escribir.
  • 25. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 7.4. Uso de las variables implícitas de los JSPs. Variables implícitas en JSP: Nombre de variable Descripción request Un objeto de HttpServletRequest asociado con el request. response Un objeto de HttpServletResponse asociado con el response. out Un objeto JspWrite asociado con enviar un stream en el response. session Un objeto HttpSession asociado con la sesión de usuario. Esta variable no existe si el JSP no participa dentro de una sesión. application Un objeto ServletContext para la aplicación Web. config Un objeto ServletConfig asociado con el Servlet para el JSP. pageContext Un objeto PageContext que encapsula el entorno de un request para el JSP. Page Es equivalente a la palabra reservada this en programación Java. exception 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 según 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 estándares (jsp:) de JSP. * Tag useBean
  • 26. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) - 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 creación 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 expresión: <jsp:setProperty name=”cust” property=”email” value=’<%=getEMailExtra()%>’> * Tag getProperty
  • 27. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * Otros Tags * jsp:param Tiene los atributos obligatorios: name y value.
  • 28. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 8. Desarrollando páginas JSP utilizando Tags personalizados. 8.1. Relacionar el JSTL a las tareas comunes de desarrollo de una aplicación 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 clásico * La librería de tags tienen un jar y un descriptor de la librería (TLD), con extensión .tld. * TLD debe iniciar con el tag taglib y requiere que se especifique la versión 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 librería de tags: <%@ taglib ( uri="tagLibraryURI" | tagdir="tagDir" ) prefix="tagPrefix" %>
  • 29. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) - prefix: Estos prefijos están 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 algún sub directorio. * Ejemplos de declaración: * El jar se debe colocar en /WEB-INF/lib * El TLD se puede colocar en /WEB-INF, algún subdirectorio de este, en el directorio o subdirectorio /META-INF/ dentro del jar. * Configuración en web.xml. Declarando Tags en el TLD Elementos del elemento <tag> Ejemplo:
  • 30. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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 compilación, el archivo TLD es opcional. * El Web Container genera de forma automática un TLD en /WEB-INF/tags/. * Se deben colocar únicamente en /WEB-INF/tags/ o algún subdirectorio. * Se definen el tag file en un archivo con extensión .tag, .tagx o .tagf, el nombre del archivo se utilizara como nombre del tag.
  • 31. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * Tag file puede ser empaquetado en un jar, se deben colocar los tag file en /META- INF/tags/ o algún 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 código JSP utilizando diversos Tags estándares. * El Tag set:
  • 32. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) * 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 carácter 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
  • 33. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 8.5. Listar las capacidades de los Tags de JSTL. Lista de tags JSTL
  • 34. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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 definición de Servlet. * SingleThreadModel esta deprecado. * UnavailableException significa que se debe intentar mas tarde. * ServletConfig
  • 35. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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: Categoría Descripción Interface Cambios en el ciclo de vida del contexto * Creación del contexto. * Bajada del contexto. javax.servlet. ServletContextListener Cambios en los atributos del contexto * Agregar un atributo de contexto. * Remover un atributo javax.servlet. ServletContextAttributeListener
  • 36. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) de contexto. * Remplazar un atributo de contexto. Cambios en el ciclo de vida de la sesión * Creación de la sesión. * Eliminación de la sesión. * Timeout de la sesión. javax.servlet.http. HttpSessionListener Cambios en los atributos de la sesión. * Agregar un atributo de sesión. * Remover un atributo de sesión. * Remplazar un atributo de sesión. 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 anotación con @WebListener o su equivalente en DD solo aplica para los listener anteriores.
  • 37. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) Clases: ServletContextListener ServletContextAttributeListener HttpSessionListener HttpSessionAttributeListener HttpSessionBindingListener Permite notificar a un objeto cuando es colocado o retirado de una sesión. HttpSessionActivationListener Permite notificar a un objeto en sesión cuando se activa o pasiva.
  • 38. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 9.3. Crear filtros y usarlos en aplicaciones Web. El API Filter * Configurando un filtro utilizando anotaciones. * Configurando un filtro utilizando DD.
  • 39. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) Para un Servlet especifico también 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 patrón de diseño Decorator o Wrapper Clases disponibles: ServletRequestWrapper HttpServletRequestWrapper ServletResponseWrapper HttpServletResponseWrapper. Ejemplo: Deseamos cambiar el valor del parámetro nombre que llega al Servlet. Creamos una clase que extienda HttpServletRequestWrapper y sobre escribimos el metodo getParameter().
  • 40. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) Servlet que cambia el valor del parámetro
  • 41. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) A este Servlet ya llega el parámetro cambiado. Valor mostrado en el Browser:
  • 42. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 10. Facilidades adicionales para la parte modelo. 10.1. Entender los roles de JDBC y JPA API JDBC: * Un pool de conexión es soportado desde JDBC v2. * El paquete principal para JDBC es java.sql.* * El metodo DriverManager.getConnection() obtiene una conexión exclusiva a la base de datos. * javax.sql.DataSource simplifica el trabajo con pools de conexiones y es portable a través 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 conexión a la base de datos desde el pool de conexiones, cuando se cierra la conexión, 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.
  • 43. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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”), } 10.3. Entender los fundamentos de conexión 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:
  • 44. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 11. Aplicaciones Web asíncronas. 11.1. Entender las interacciones necesarias para las páginas Web asíncronas. * Servlets asíncronos se agregaron en JEE 6. * Evita que la thread del Servlet quede bloqueada por la espera en alguna condición externa. * Permite que la respuesta HTTP sea generada por una thread cualquiera. * Aunque es distinto de AJAX, se puede usar en conjunto con esa tecnología para mejorar la experiencia del usuario. 11.1. Entender el rol del estilo AJAX para la programación del lado del cliente. * AJAX permite que una página genere request a un servidor web de forma asíncrona. * Las páginas se actualizaran de forma dinámica. * Proceso de atención con AJAX: - Cliente solicita una página al servidor. - Servidor responde, la página utiliza JavaScript. - El cliente invoca a algún metodo de JavaScript. - JavaScript invoca a algún servicio del servidor de forma asíncrona. - 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 conexión TCP, de esta forma la misma conexión se utiliza para request sucesivos. Ejemplo de página JSP que utiliza AJAX.
  • 45. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) update.jsp 11.3. Implementar Servlets asíncronos utilizando las facilidades de JEE 6. * No se puede hacer un dispatching desde un Servlet síncrono hacia un Servlet asíncrono. Código del Servlet asíncrono: En XML <async-supported>true</async-supported>
  • 46. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) El Handler de control: Listeners: AsyncListener:
  • 47. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com )
  • 48. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 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 autenticación. * Modelos de autenticación: Basic Autenticación 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 más popular, se puede diseñar 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?: Página que contiene el login deben iniciar con “/” form-error-page?: Página 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>
  • 49. Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)-Guía de estudio Oscar Vásquez Flores (eoscarvf@gmail.com ) 12.3. Forzar el uso de encriptación entre una aplicación Web y el cliente Browser. Como anotación transport-guarantee: 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 autenticación pluggable/extensible para aplicaciones Web. JAAS me permite tener independencia del repositorio para la autenticación y autorización, este puede ser una simple base de datos o una LDAP, mi aplicación Web no se afecta por el tipo de repositorio. <security-constraint> . . . <user-data-constraint> <description/> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> @ServletSecurity(@HttpConstraint(transportGuarantee = TransportGuarantee.CONFIDENTIAL))