Tema 3 - Departamento de Lenguajes y Sistemas Informáticos

Anuncio
escuela técnica superior
de ingeniería informática
Tema 3: Diseño de
la capa de
presentación
Departamento de
Lenguajes y Sistemas Informáticos
Ingeniería del Software de Gestión
III
Índice
●
●
Introducción a HTML / XML, JavaScript,
CSS.
Introducción a JSP
Introducción a HTML / XML, JavaScript,
CSS.
●
Procesamiento en el servidor de datos
●
●
●
●
Procesamiento en el servidor de aplicaciones
●
●
●
●
Integridad referencial.
Procedimientos almacenados.
Disparadores.
CGI (C, Perl, …).
Lenguajes de script (JSP, ASP, PHP, ColdFusion).
Servlets (Java).
Procesamiento en el cliente web
●
●
●
●
JavaScript (Ajax)
Applets (Java).
ActiveX (Microsoft).
Flash (Macromedia).
HTML
●
Etiquetas de la estructura básica
<html>
<head>
<title>Título
del documento</title>
<title>
<!-- otra información de cabecera -->
</head>
<body>
<!-- contenido del documento -->
</body>
</html>
●
●
<html>:
<html> marca raíz del documento.
<head>:
<head> cabecera del documento, aparte del título, puede
contener otra información sobre el documento.
●
<title>:
<title> título del documento.
●
<body>:
<body> cuerpo del documento.
HTML
OJO
El código HTML es
generado
dinámicamente por
el servidor
XML
●
¿Qué es XML?
HTML
<b> Pedro Páramo </b>
<br> Juán Rulfo
<br>Precio: <i> 100 pesos (contado)
Contenido: caracteres
elemento
atributo
XML
<libro>
<titulo> Pedro Páramo </titulo>
<autor> Juan Rulfo </autor>
<precio moneda=“PESO” modo=“contado”> 100</precio>
</libro>
XML
●
Contenido de un documento XML:
●
Elementos y atributos y contenido
<precio moneda=“PTA” modo=“contado”> 275 </precio>
●
Tuberías de metainformación
<?xml version="1.0" encoding="UTF-7" ?>
●
●
Documento “bien formado”(well-formed):
●
Estructura jerárquica de los elementos
●
Un solo elemento raíz
●
Sensible a mayúsculas y minúsculas
●
Etiquetas de cierre obligatorias
Documento válido
●
Sigue la estructura de un Schema o DTD
JavaScript
HTTP
TCP/IP
Cliente web
SQL
Servidor de aplicaciones
Validación en
cliente
Servidor
de datos
CSS.
http://www.csszengarden.com
CSS
●
http://www.thestylecontest.com/
Índice
●
●
Introducción a HTML / XML, JavaScript,
CSS.
Introducción a JSP
Introducción a JSP
●
Problema: los Servlets son difíciles de
mantener (código html embebido en
código java):
●
●
●
Solución ideal: separar roles:
●
●
●
Si modifico código HTML tengo que volver a
recompilar.
No puedo usar herramientas HTML
Diseñador: HTML, WML,…
Programador: Diseño, implementación,…
JSP: Lenguaje de script para ser usado del lado del
servidor. Tiene código java embebido en código
HTML
API JSP
<<interface>>
Servlet
•init()
•destroy()
<<interface>>
JspPage
<%!
public void JspInit(){}
public void JspDestroy(){}
%>
<<interface>>
HttpJspPage
Ciclo de vida
HTTP
GET/POST
JSP
Contenedor
JSP/Servlet
Cliente web
Traductor
JSP
Servlet
Compilador
javac
.java
Sintaxis y estructura
●
●
Los elementos JSP se diferencian de
los HTML porque empiezan por <%
o <jsp:
Existen varios tipos de elementos:
●
●
●
Scripting: código java embebido
Directivas: información para
traducir la página JSP
Acciones: acciones utilizadas
frecuentemente
Scripting
♦ Declaraciones:
<%!
String color = “azul”;
Atributos o métodos de la clase
correspondiente
int contador = 0;
String getDate(){..}
%>
♦ Expresiones:
Conjunto simple de expresiones
cuyo resultado es una cadena y es
enviado al flujo de salida
♦ Scriptlets:
Código Java que se ejecuta
cuando llega una petición.
<%= expresion %>
<%
String user = “david”;
%>
El usuario es <%= user %>
Directivas
♦ include:
<%@ include file =“banner.html” %>
♦ page:
<%@ page import =“java.util.*”
Para incluir html o jsp
Información acerca de la página
language=“Java”%>
Acciones
♦ <jsp:include
Para incluir jsp o html. A
diferencia de la directiva, la
inclusión se procesa cada vez
que se llama a la página
<jsp:include page =“head.jsp”/>
♦ <jsp:forward
Para redireccionar a otro
recurso. En el momento de
redireccionar, el hilo de
ejecución continua
<jsp:forward page =“error.jsp”>
<jsp:param name=“type” value=“1”/>
</jsp:forward>
Objetos implícitos
Objeto
application
out
response
request
session
Descripción
Es de tipo SerlvetContext
Es de tipo JspWriter
Es de tipo HttpServletResponse
Es de tipo HttpServletRequest
Es de tipo HttpSession
Introducción a JSP, ejemplo
<html>
<head>
<title>Hola Usuario</title>
</head>
<body text="#000000" bgcolor="#ffffff">
<h1>Hola <%= request.getParameter("user") %> </h1>
<br><br><br>
<%
String name = request.getParameter("userName");
String times = request.getParameter("times");
int limit = Integer.parseInt(times); %>
Su nombre escrito <%= limit %> veces:<br>
<%
for (int i=0; i<limit; i++) {
%>
<b><%= name %></b> <br>
<%
}
%>
</body>
</html>
Pero...
●
●
¡El código de la capa de presentación se
sigue solapando con el código de la capa
de lógica de negocios! (lo veremos en la
práctica)
¿No hay solución?:
●
●
JSTL (Java Standard Tag Library), incluida
en JSP 2.0.
http://tapestry.apache.org/ Usar XML +
HTML + JavaScript en lugar de JSP
●
Velocity
●
Struts, etc, etc....
Pero...
●
●
¡Normalmente el contenido de una página
es modificado por personal no técnico!
(p.e. blog, noticias, portal de la JA, etc)
¿No hay solución?:
●
●
CMS: Content Managment System:
●
OpenCMS
●
Apache Lenya
●
Magnolia
●
etc
Wiki
(ver http://java-source.net/open-source/content-managment-systems )
(ver http://java-source.net/open-source/wiki-engines )
Pero...
●
●
HTML es una lenguaje de marcado con
limitada funcionalidad, ¡no puedo hacer
un auto completar!, ¡no puedo crear
ventanas que se solapen¡
¿No hay solución?:
●
AJAX
●
XUL
●
Applets
●
Flash
(ver http://ajaxpatterns.org/Java_Ajax_Frameworks )
(ver http://java-source.net/open-source/wiki-engines )
Bibliografía
•
JSTL in Action
Shawn Bayern.
2003, Manning
•
Advanced Java 2 Platform
Harvey M. Deitel, Paul J. Deitel, Harvey M. Deitel
2001, Prentice Hall
ISBN: 0130895601
!Gracias!
●
¿Podemos mejorar esta lección?
●
Mándanos un email a [email protected]
●
Visite la web de la asignatura www.lsi.us.es
Descargar