Arquitectura
JavaEE es una especificación
Diagrama
Servidores de aplicaciones
Application Server
Web Container
Tomcat
EJB Container
Servidores
Open Source
GlassFish
JBoss
Geronimo
Comerciales
IBM WebSphere Application Server
Oracle WebLogic
SAP Netweaver
Artefactos
jar
Java Archive
war
Web Archive
Puede incluir varios jars
Se despliega en un contenedor web o application server
ear
Enterprise Archive
Puede incluir varios wars y jars
Se despliega en un application server
Despliegue de aplicaciones
Web
Introducción
Introducción a la arquitectura Web
Aplicación web
Acceso mediante un browser
Internet
Intranet
Ventajas
Actualización inmediata
Multiplataforma
Portable
Alta disponibilidad
Desventajas
Menos funcionalidad que aplicaciones Desktop
Requiere de conexión a Internet
HTTP
Hyper Text Transfer Protocol
Protocolo de comunicación
Desarrollado por el consorcio W3C y la IETF
Esquema request-response
Sin estado
Uso de cookies
Tipos de request
GET
POST
HTML
Hyper Text Markup Language
Le dice al browser como mostrar el contenido
Tags
<!-- -->
<html>
<head>
<title>
<body>
<h1>
<a>
<br>
<form>
<input>
type="text"
type="password"
type="submit"
Estructura de la aplicación web
Estructura de directorios
Descriptor web.xml
Patrón MVC
Introducción
Separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos
Elementos
Model
View
Controller
Diagrama
Frameworks MVC
Características comunes
Frameworks
Struts
JSF
Spring MVC
Servlets y JSP
Servlets
Clase Java que se ejecuta dentro del Web Container
Servlet API
HttpServlet
HttpServletRequest
getParameter()
getParameterValues()
getParameterNames()
HttpServletResponse
getWriter()
getOutputStream()
Jerarquía de clases
Diagrama Servlet API
Ciclo de vida
init
service
doGet
doPost
destroy
Diagrama de ciclo de vida
Session Tracking
Formas
Cookies
URL Rewriting
Hidden Fields
HttpSession
setAttribute()
getAttribute()
invalidate()
Session timeout
Configuración en el web.xml
JSP
Introducción
Java Server Pages
JSP compiler
Convierte el JSP en un Servlet
Versiones
JSP 1.0
JSP 1.2
JSP 2.0
JSP EL
JSP 2.1
JavaEE 5
Sintaxis
Scripting
Comment
<%-- This is a JSP comment --%>
Expression
<?= expression ?>
<%= new java.util.Date()%>
Scriptlet
<% // Any java source code here %>
Declaration
<%! int x = 10; %>
Variables implícitas
request
HttpServletRequest
response
HttpServletResponse
session
HttpSession
config
ServletConfig
out
JspWriter
application
pageContext
page
exception
Directive
include
file
taglib
uri
prefix
page
import
session
contentType
buffer
errorPage
isErrorPage
JSP EL
Acceso a variables
Acceso a beans
Acceso a colecciones
Action
Custom tags
JavaBeans
Estándar de JavaBeans
Métodos get/set
Constructor sin argumentos
AJAX
Introducción
Asynchronous JavaScript and XML
No es una tecnología en sí misma
Técnica de desarrollo web para crear aplicaciones RIA
Comunicación asíncrona
JavaScript
XMLHttpRequest
Ventajas
Realizar cambios sobre las páginas sin recargarlas
Aumenta
Intereactividad
Velocidad
Usabilidad
Tecnologías
XHTML y CSS: Para una presentación basada en estándares.
DOM: para la manipulación de la presentación.
XML, XSLT, JSON: Para el intercambio y manipulación de datos
Javascript (XMLHttpRequest): intercambio asíncrono de información y para integrar las demás tecnologías
Librerías AJAX
DOJO Toolkit
http://dojotoolkit.com/
Script.aculo.us
http://script.aculo.us/
Yahoo UI Widgets
http://developer.yahoo.com/yui/
Google Web Toolkit - Google Code
http://code.google.com/webtoolkit/
Prototype
http://prototype.conio.net/
EJB
Introducción
Enterprise Java Beans
Modelo de componentes distribuido
Enterprise JavaBeans != JavaBeans
Características
Comunicación remota
CORBA
RMI/IIOP
Transacciones
JTA
Control de la concurrencia
Eventos
JMS
Servicios de nombres y de directorio
JNDI
Ubicación de componentes
JNDI
Seguridad
JCE
JAAS
Versiones
EJB 1.0
Especificación original
EJB 1.1
La primera incluida dentro de J2EE
EJB 2.0
J2EE 1.3
JSR 19
Interfaces Locales
Message-Driven beans
EJB 2.1
J2EE 1.4
JSR 153
EJB 3.0
JavaEE 5
JSR 220
Anotaciones
EJB 3.1
JSR 318
Tipos
Session Bean
Stateful
Stateless
Entity Bean
CMP
BMP
Message Driven Bean
Web Services
JAX-RPC
JAX-WS