Av. Insurgentes Sur 1388 PH 03230, Mxico D.F. (5255) T. 2789 8400 www.ids.com.mx
Ms de 25 aos comprometidos con nuestros clientes, siendo sus socios tecnolgicos. informacin confidencial Direccin de Tecnologa y Calidad
Conocimientos Necesarios
HTTP
GET POST
Acerca de mi
Javier Zamora (T&Q) Plataforma Java Java 1.3+ JEE 1.3+ ezamora@ids.com.mx je.zamora@live.com je.zamorax@gmail.com http://linkedin.com/in/jezamora
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
JSP/Servle t
informacin confidencial Direccin de Tecnologa y Calidad
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
Introduccin
Aplicacin Web. Aplicacin que es accedida con un navegador web a travs de una red, por ejemplo, Intranet o Internet. Servidor Aplicacin Cliente Navegador Web Tipos de Aplicaciones Web Orientada a Presentacin. Genera paginas Web interactivas (HTML, XML, etc) y contenido dinmico. Orientadas a Servicios. Implementa EndPoint de Web Service SOAPService RESTService
Introduccin
Aplicacin Web de Presentacin
HTTP Request: http://books.shop.ebay.com/
Introduccin
GET https://twitter.com
Introduccin
GET https://twitter.com
Introduccin
GET https://twitter.com
Introduccin
GET https://twitter.com
HTML
Introduccin
GET http://telmex.com
Introduccin
POST http://www.telmex.com/mx/pt_loginMiTmx.jsp
Introduccin
POST http://www.telmex.com/mx/pt_loginMiTmx.jsp
Introduccin
POST http://www.telmex.com/mx/pt_loginMiTmx.jsp
Introduccin
POST http://www.telmex.com/mx/pt_loginMiTmx.jsp
HTML
Introduccin
Cosas que un Web Server (Apache HTTP Server) no podra hacer solo: 1. Generar un Contenido Dinmico 2. Crear y Salvar datos en el Servidor (Base de Datos)
Introduccin
Soluciones para crear Aplicaciones Web CGI C/C++ Perl Python PHP JSP/Servlet ASP.NET
Introduccin
Capa (Layer): Grupo de Clases que comparten las mismas dependencias a otros mdulos. Grupo de componentes reutilizables con lgica funcional similar. Unidad lgica de organizacin. Proyectos Java Package JAR/WAR/EAR
JavaFX
Introduccin
MVC (Modelo Vista Controlador). Patrn de Diseo de Software que separa las responsabilidades de una aplicacin en Capas. Modelo (Negocio) Vista (Presentacin) Controlador (Coordinacin, Navegacin)
Introduccin
JavaServer Page - JavaServlet Componente Web de J2EE 1.2+ Basado principalmente HTTP/HTML Principales elementos: Configuracin web.xml** Filter Listener Servlet JSP JSTL Patrones que se pueden implementarse: Vista. JSP Modelo. Java Class Controller . Servlet
Introduccin
MVC implementado con JSP/Servlet
JSP Servlet
Java Service
Java Types
Introduccin
JSP/Servlet Web App
Introduccin
Componentes Web Server
cmp JSP App
Serv let
Filter
Beans
Laptop
JSP
Listener
JSTL
Interceptors
Web Container
Decorators
Computer CDI
Introduccin
Componentes MVC (JSP/Servlet)
JSP
Serv let
SecurityServ iceEJB
Introduccin
Servlet Controller JSP Vista
Peticiones de la Vista Creacin de contenido Dinmico GET Presentacin de la informacin de negocio
POST
Introduccin
Implementaciones Apache Tomcat RI http://tomcat.apache.org/ Jboss CE Jboss Enterprise Middleware Oracle Glassfish Oracle Weblogic Caucho Resin OW2 Jonas IBM Websphere CE IBM Websphere Server Apache Geronimo Apache TomEE
Introduccin
Glassfish Server Open Source Edition 3.1.
http://download.java.net/glassfish/3.1.1/release/glassfish-3.1.1.zip
Implementacin Referencia Full Profile JavaEE6 JSP 2.2 Servlet 3.0 Inicio veloz EJB JPA CDI NIO
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
QuickStart
Requerimientos JDK6 IDE Eclipse Indigo AS Oracle Glassfish Material Curso \\smprodtq2\software\_JSP
QuickStart
Lista de pasos a realizar 1. JDK 6 jdk-6u30-windows-x64.exe
1.
1.
QuickStart
WebProject Dynamic Web Project JavaEE6 Nombre Target Versin Servlet Configuracin Base
QuickStart
WebProject Carpeta de Salida destino (file class) Context root (Nombre del Proyecto) Content Directory (Pginas)
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
Web Container
Componente del Application Server que interacta con JavaServlets Seguridad MultiThreading Soporte de Protocolos de Comunicacin (HTTP) Administra el ciclo de Vida Servlets Seguridad Declarativa (web.xml) JSP
Web Container
Flujo Completo Peticin GET
Web Container
Ejemplo Peticin Web
Web Container
Ejemplo Peticin Web
Web Container
Ejemplo Peticin Web
Web Container
javax.servlet.http.HttpServletRequest (request) Interface implementada por el contenedor web Encapsula los datos de la peticin del cliente: Datos del formulario: (request.getParameter(login))
Cookies : (request.getCookies()) Direccin cliente: (request.getRemoteAddr())
javax.servlet.http. HttpServletResponse (response) Interface implementada por el contenedor web Encapsula las respuesta generada por el servlet: Establecer el tipo de contenido que se va a generar
(response.setContentType("text/html")) Filo de bytes para escribir contenido (response.getWriter()) Agregar nuevas cookies: (response.addCookie)
Web Container
Estructura de una aplicacin Web (Desarrollo)
Vista Grfica del archivo de configuracin web.xml Vista Grfica de los Service EndPoint Interface (SEI) Implementados por una clase del proyecto Web. Carpetas de cdigo fuente Java. Bibliotecas Java requeridas para compilar JVM JavaEE Servlet API WEB-INF/lib Carpeta de Paginas JSP/HTML WebContent/WEB-INF carpeta de Configuracin
informacin confidencial Direccin de Tecnologa y Calidad
Web Container
Estructura de una aplicacin Web Archivo de despliegue: myWebApp.war WEB-INF. Carpeta de Configuracin, no visible fuera del servidor web
Web Container
Estructura de una aplicacin Web web.xml - archivo de configuracin lib - carpeta de bibliotecas (*.jar) requeridas por los componentes web. classes - Clases compiladas de los componentes web.
Web Container
web.xml Archivo que proporciona informacin sobre la configuracin y despliegue de los componentes web que componen una aplicacin Java Web. Debe residir en la carpeta WEB-INF Parmetros de un JavaServlet Definicin de JavaServlet /JSP Mapeos de URLs Registro de JavaFilter Registro de JavaListener
Web Container
WEB-INF/web.xml Parte 01
Web Container
WEB-INF/web.xml Parte 02
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
JavaServlet
Componente del lado del servidor que vive en un Web Container; proporcionando a los programadores un mecanismo simple y consistente de generar contenido dinmico. Escrito en Java Utilizado principalmente como controlador (MVC) Excelente Interoperabilidad con la capa de Servicios (EJB)
JavaServlet
Elementos que integran un JavaServlet Package + Clase Java Extiende de HTTPServlet, GenericServlet Sobre escribir los mtodos GET, POST Registro del Servlet Archivo web.xml (2.5-) Anotacin Java @WebServlet (3.0+) Asignacin de una URL lgica Archivo web.xml Anotacin Java @WebServlet
JavaServlet
Componente Servlet
cmp Serv let interface Serv let + + + + + destroy() :void getServletConfig() :ServletConfig getServletInfo() :String init(ServletConfig) :void service(ServletRequest, ServletResponse) :void # # # # # # # # + # + HttpServlet HEADER_IFMODSINCE :String = "If-Modified-Since" {readOnly} HEADER_LAST MOD :String = "Last-Modified" {readOnly} LSTRING_FILE :String = "javax.servlet.... {readOnly} lStrings :ResourceBundle = ResourceBundle.... METHOD_DELETE :String = "DELETE" {readOnly} METHOD_GET :String = "GET " {readOnly} METHOD_HEAD :String = "HEAD" {readOnly} METHOD_OPTIONS :String = "OPTIONS" {readOnly} METHOD_POST :String = "POST" {readOnly} METHOD_PUT :String = "PUT " {readOnly} METHOD_T RACE :String = "T RACE" {readOnly} serialVersionUID :long = 1 {readOnly} L doDelete(HttpServletRequest, HttpServletResponse) :void doGet(HttpServletRequest, HttpServletResponse) :void doHead(HttpServletRequest, HttpServletResponse) :void doOptions(HttpServletRequest, HttpServletResponse) :void doPost(HttpServletRequest, HttpServletResponse) :void doPut(HttpServletRequest, HttpServletResponse) :void doT race(HttpServletRequest, HttpServletResponse) :void getAllDeclaredMethods(Class<?>) :Method[] getLastModified(HttpServletRequest) :long HttpServlet() maybeSetLastModified(HttpServletResponse, long) :void service(HttpServletRequest, HttpServletResponse) :void service(ServletRequest, ServletResponse) :void
java.io.Serializable GenericServlet + + + + + + + + + + + + + config :ServletConfig serialVersionUID :long = 1 {readOnly} L destroy() :void GenericServlet() getInitParameter(String) :String getInitParameterNames() :Enumeration<String> getServletConfig() :ServletConfig getServletContext() :ServletContext getServletInfo() :String getServletName() :String init(ServletConfig) :void init() :void log(String) :void log(String, T hrowable) :void service(ServletRequest, ServletResponse) :void
JavaServlet
Servlet 2.0+
99 %
Tipo de Contenido
JavaServlet
Servlet 2.0+ WEB-INF/web.xml
Binding
JavaServlet
Servlet 3.0+
Registro + Binding URL
Tipo de Contenido
JavaServlet
sd Ciclo de Vida WebContainer Cliente .class MyServlet object MyServlet request GET() alt v erify [if servlet is not load] load() instantiate (new) init() Inyeccin Dependencias()
Ciclo de Vida
doGet()
doPost()
response()
JavaServlet
Diseo Singleton Todos los clientes comparten la misma instancia No es recomendable almacenar informacin en los atributos de la clase
sd Thread by Request
:Cliente
:Cliente
JavaServlet
Recuperar Datos del Cliente URL: key=value HTML: <form/>
ke valu y e http://localhost:8080/CursoJSPServlet/MyServlet?nombre=anonimo
GET POST
informacin confidencial Direccin de Tecnologa y Calidad
JavaServlet
Recuperar Datos del Cliente javax.servlet.HttpServletRequest. getParameter*
JavaServlet
Delegando responsabilidad a otro JavaServlet Deletage: Patrn de Diseo donde un objeto en lugar de atender la peticin delega la tarea a otro objeto
cmp Pattern Delegate Application Server
request doGet
/MyServ let
delegate
doGet
/UserServ let
Cliente
response
JavaServlet
Delegando responsabilidad a otro JavaServlet javax.servlet.RequestDispatcher
Referenci a Servlet
Envi de objetos
JavaServlet
Datos en el Servidor HTTP : Protocolo sin estado Cookies : informacin que se almacena en el cliente, y se enva cada vez que se realiza una peticin al servidor javax.servlet.http.HttpSession
JavaServlet
Datos en el Servidor
cmp HttpSession Application Server String peticionesCliente
HttpSession mySession
Cliente
request (jsessionid) HttpServlet Serv let::MyServ let # # request (jsessionid) doGet(HttpServletRequest, HttpServletResponse) :void doPost(HttpServletRequest, HttpServletResponse) :void
UsuarioTO usuario
String peticionesCliente
Cliente11
JavaServlet
Datos en el Servidor
class HttpSession interface Serv let::HttpSession + + + + + + + + + + + + + + + + + getAttribute(String) :Object getAttributeNames() :Enumeration<String> getCreationT ime() :long getId() :String getLastAccessedTime() :long getMaxInactiveInterval() :int getServletContext() :ServletContext getSessionContext() :HttpSessionContext getValue(String) :Object getValueNames() :String[] invalidate() :void isNew() :boolean putValue(String, Object) :void removeAttribute(String) :void removeValue(String) :void setAttribute(String, Object) :void setMaxInactiveInterval(int) :void
JavaServlet
Objetos implcitos. Objetos creados por el contenedor web request javax.servlet.http.HttpServletRequest Parmetro: doGet, doPost response javax.servlet.http.HttpServletResponse Parmetro: doGet, doPost out java.io.PrintWriter Mtodo: request.getWriter() session - javax.servlet.http.HttpSession Mtodo: request.getSession() config javax.servlet.ServletConfig Herencia: GenericServlet.getServletConfig() application - javax.servlet.ServletContext Herencia: GenericServlet.getServletContext() Mtodo: request.getServletContext()
informacin confidencial Direccin de Tecnologa y Calidad
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
JavaServer Page
Componente del lado del servidor que vive en un Web Container; proporcionando a los programadores un mecanismo simple y consistente de generar contenido dinmico. Utilizado principalmente para vista (MVC) JSP es un JavaServlet
JavaServer Page
Elementos que contiene una JSP
Import s
HTML Tags
Scriptlet s JSTL EL
JavaServer Page
JSP -> Servlet Parte 01
JavaServer Page
JSP -> Servlet Parte 02
JavaServer Page
Servlet -> HTML
JavaServer Page
Directiva. Pasa instrucciones especiales al contenedor para posteriormente ser utilizadas al generar un Servlet
<%@ page import=mx.ids.training.common.dto.* %> <%@ page include file=/headerstatic.html %> <%@ page taglib uri=http://java.sun.com/jsp/jstl/core prefix=c %>
JavaServer Page
JSP Scriptlet. Fragmento de cdigo Java incrustada en la pagina HTML.
JSP Expression. Inserta el resultado de un scriptlet al flujo de datos de salida (ej out.println)
JavaServer Page
Objetos implcitos. Objetos creados por el contenedor web JSP Scriptlet request javax.servlet.http.HttpServletRequest response javax.servlet.http.HttpServletResponse out javax.servlet.jsp.JspWriter session - javax.servlet.http.HttpSession config javax.servlet.ServletConfig applicacion - javax.servlet.ServletContext
JavaServer Page
Expression Language Lenguaje de scripting para JSP 2.0+ JSF 1.2+
Tareas que pueden ser realizadas con EL Lectura Dinmica de objetos (JavaBean) implcitos:
page request session Application Escritura de Datos (JSF) Invocacin de mtodos pblicos estticos Ejecucin de operaciones aritmticas
informacin confidencial Direccin de Tecnologa y Calidad
JavaServer Page
Expression Language
Ejemplo ${myArray[1]} Descripcin Regresa el valor de la posicin 1 del arreglo llamado myArray Regresa el valor de la propiedad lName del bean employee Regresa el valor asociado a la llave somekey del mapa myMap Regresa el mensaje de la llave myKey del resourceBundle llamado myRB
${employee.lName}
${myMap.someKey}
${myRB.myKey}
JavaServer Page
Objetos implcitos JSP EL. Objetos creados por el contenedor web
pageContex: el contexto de la pagina JSP servletContext session: el objeto session del cliente request: la peticin del cliente param: mapa de los nombres de los parmetros de la peticin paramValues: mapa con los valores (Arreglo) de un parmetro de la peticin header: mapa de los nombres de las cabeceras HTTP headerValues: mapa con los valores (Arreglo) de una cabecera HTTP cookie: mapa de las cookies initParam: mapa de los parmetros de inicializacin web.xml pageScope: mapa de los atributos almacenados en el objeto page requestScope: mapa de los atributos almacenados en el objeto request sessionScope: mapa de los atributos almacenados en el objeto session applicationScope: mapa de los atributos almacenados en el objeto application
informacin confidencial Direccin de Tecnologa y Calidad
JavaServer Page
Operadores JSP EL Aritmticos: +, -, *, /, div, mod, % Lgicos: and, &&, or, ||, not, ! Relacionales: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >= Vacio: empty Palabras reservadas JSP EL
and ne ge instanceof or lt true empty not gt false div eq le null mod
JavaServer Page
Funciones JSP EL Mtodo Java Registro ids.tdl JSP
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
JSTL
(JavaServer Page Standard Tag Library) Componente del lado del servidor que vive en un Web Container. Encapsula funcionalidad comn para la mayora de las aplicaciones que utiliza JSP
JSTL
rea Core Sub funciones Manipulacin de variables Flujos de control Manipulacin de URL Extras
Prefijo c
XML
I18N
fmt
DataBase Functions
Sql fn
JSTL
Core (<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>) <c:set/>. Establece el valor de una variable EL o propiedad EL en cualquier scope
JSTL
Core (<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>) <c:choose/>. Ejecuta un conjunto de condiciones (switch)
JSTL
I18N Core (<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix=fmt" %>)
<fmt:setLocale/>. Sobre escribe la localidad especifica de un cliente para una sola pagina. <fmt:message/>. Utilizado para dar salida de cadenas con calidad
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
Integracin
CDI Beans WEB-INF/beans.xml @ javax.inject.Inject
Integracin
EJB 3.1 EJB 3.1 Lite Servlet 2.5+ DI @javax.ejb.EJB @ javax.inject.Inject
Integracin
SpringFramework 3.x JavaConfig WEB-INF/web.xml
JavaConfig Enabled
Startup SpringContainer
Integracin
SpringFramework 3.x WEB-INF/lib JavaServlet
JSP/Servlet
Introduccin QuickStart Web Container JavaServlet JavaServer Page JSTL Integracin Lo que sigue
Agenda
Lo que sigue
Apache Struts 2.x JavaServer Faces HTML5 SpringMVC JavaScript Framework CDI Beans Patrones de Vista
Referencias
Prentice Hall - Core Servlets and JavaServer Pages Volume 2 O'reilly - Head First Servlets and JSP 2nd Edition Mar 2008 www.dzone.com - Essential JSP Expression Language
PREGUNTAS