Logo Studenta

Aplicaciones_Web_Sistemas_Web

¡Estudia con miles de materiales!

Vista previa del material en texto

Material bajo licencia Creat ive Com m ons
Java EE – JavaServer Pages (JSP)
Aplicaciones W eb/ Sistem as W eb
Juan Pavón Mest ras
Dep. I ngenier ía del Softw a re e I nte ligencia Ar t if icia l
Facultad de I nform át ica
Universidad Com plutense Madr id
Java EE Servlets y JSPs
 Servlet
 Muy út iles para leer cabeceras de m ensajes, datos de form ularios, 
gest ión de sesiones, procesar inform ación, etc.
 Pero tediosos para generar todo el código HTML
• El m antenim iento del código HTML es difícil
 JSP ( JavaServer Pages)
 Fichero con código (X)HTML que incluye scripts codificados en Java
• Perm ite usar (X)HTML para definir gran parte de la página
• E int roducir código Java en las partes dinám icas de la página
• Mediante et iquetas especializadas (Custom Tags) que am plían la 
sintaxis de HTML
 Se com pila y se convierte en un servlet (solo la pr im era vez que se 
invoca)
• Se ejecuta com o un servlet
 Con JSP es m ás fácil que se dist r ibuya la tarea de diseño de la 
página web y la program ación de la aplicación web
Juan Pavón - UCM 2012-13 JSP 2
JSP y servlets
 Los servlets t ienen que generar todo el código HTML
 Las JavaServer Pages (JSP) perm iten escribir código HTML e 
insertar código Java para las partes dinám icas
Juan Pavón - UCM 2012-13 JSP 3
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println ("<!DOCTYPE html>\n" + "<html>\n" +
"<head><title>Formulario de saludo</title></head>\n" +
"<body>\n" +
"<h1>Hola "+request.getParameter("cliente")+"</h1>\n" +
"</body></html>");
<!DOCTYPE html>
<html>
<head><title>Saludo JSP</title></head>
<body>
<h1>Hola
<% if (request.getParameter("cliente")!=null) 
out.println(request.getParameter("cliente")); %>
</h1>
</body>
</html>
Servlet generado
 Se encont rará en el director io work del servidor tom cat
Juan Pavón - UCM 2012-13 JSP 4
public final class Saludo_jsp extends org.apache.jasper.runtime.HttpJspBase
//...
public void _jspService(final javax.servlet.http.HttpServletRequest request, 
final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
//...
try {
response.setContentType("text/html");
pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<title>Saludo JSP</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<h1>Hola\r\n");
// ...
JSP
 El texto HTML se denom ina plant illa
 Los ficheros JSP deben tener la extensión . j sp
 Se t raducen en un servlet , que será com pilado automát icam ente
 Se ejecutará el servlet generado
 El cliente no 
 En eclipse se crean dent ro de WebContent
 I gual que los ficheros .htm l
 El código Java se enm arca de varias m aneras:
 < % = expresión % >
• El resultado de evaluar la expresión se inserta en la página HTML
 < % código % >
• Un script let
• El código se insertará en el m étodo de servicio del servlet
 < % ! declaraciones % >
• Las declaraciones se insertan en la clase, no en un m étodo
 < % - - Com entario - - % >
• Com entario JSP
Juan Pavón - UCM 2012-13 JSP 5
Objetos predefinidos
 request
 Objeto Ht tpServletRequest que perm ite acceder a la inform ación de la 
solicitud
 response
 Objeto Ht tpServletResponse para generar la respuesta
 session
 Objeto Ht tpSession asociado a la pet ición
 Si no hubiera sesión será null
 out
 Objeto JspWriter (sim ilar a un PrintWriter) para generar la salida para 
el cliente
 applicat ion
 El objeto ServletContext del contenedor web
Juan Pavón - UCM 2012-13 JSP 6
Expresiones
 < % = expresión Java % >
 El resultado de evaluar la expresión será un St r ing que pasará a 
form ar parte de la página HTML
• Se genera un servlet donde el resultado de la expresión se pone 
com o out .pr int ln(expresión) dent ro del m étodo _jspService( )
Juan Pavón - UCM 2012-13 JSP 7
<?xml version="1.0" encoding="ISO‐8859‐1" ?>
<%@ page language="java" contentType="text/html; charset=ISO‐8859‐1"
pageEncoding="ISO‐8859‐1"%>
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1‐transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http‐equiv="Content‐Type" content="text/html; charset=ISO‐8859‐1" />
<title>Hora</title>
</head>
<body>
<p>Hora actual: <%= new java.util.Date() %></p>
<p>Tu IP: <%= request.getRemoteHost() %></p>
</body>
</html>
Script les
 Es la form a de insertar código Java en JSP
 Entre los sím bolos < % y % >
 Este código se insertará tal cual en el m étodo _jspService( ) del servlet
generado
 En el scr ipt let , el texto a generar de la página HTML t iene que ponerse 
con out .pr int ( )
 Norm alm ente es m ás práct ico usar scr ipt lets que expresiones
 Muchas veces hay que com probar valores, realizar acciones m ás 
com plejas, etc.
• Por ejem plo, en vez de la expresión siguiente
<p>Autor = <%= application.getInitParameter("Autor") %></p>
• Mejor el scr ipt let :
Juan Pavón - UCM 2012-13 JSP 8
<%
String autor = application.getInitParameter("Autor");
if ((autor == null)||(autor.trim().equals("")))
autor = "Anónimo";
out.println("Autor = "+autor);
%>
Partes condicionales
 Con script les se puede condicionar la ejecución de partes del 
fichero JSP
 No obstante este m ecanism o puede dar lugar a código poco claro
Juan Pavón - UCM 2012-13 JSP 9
<p>
<% String parametro = request.getParameter("nombre");
if ((parametro == null) || (parametro.trim().equals(""))) { %>
No nos has dado tu nombre.
<% } else { %>
Bienvenido, 
<% out.println(parametro); } %>
</p>
Declaraciones
 Se pueden incluir declaraciones en la clase del servlet generado
con < % ! declaración % >
 Este código se inserta fuera de los m étodos de la clase, com o nuevas 
declaraciones en la clase
• Variables del servlet
<%! private int edad; %>
• Si se declaran variables con < % ... % > serán locales al scr ipt let
• Métodos
• Es m ejor declararlo en una clase Java aparte
Juan Pavón - UCM 2012-13 JSP 10
<%! private int contador = 0; %>
<p>Número de veces que se ha visitado esta página desde que se 
arrancó el servidor:
<%= ++contador %>
</p>
Direct ivas
 Se aplican a la clase servlet generada
 Sintaxis:
< % @ direct iva at r ibuto= "valor" % >
o bien:
< % @ direct iva at r ibuto1= "valor1"
at r ibuto2= "valor2"
...
at r ibutoN= "valorN" % >
 Direct ivas com unes
 include – perm ite incluir ot ro fichero que se t ratará com o JSP
• Puede t ratarse de un fichero JSP, HTML, JavaScript , etc.
• El fichero se referencia con una URL relat iva a la página JSP o al 
servidor si va precedido de /
<%@ include file="/URL" %>
 page – perm ite im portar un paquete
<%@ page import="java.util.*" %>
Juan Pavón - UCM 2012-13 JSP 11
Uso de Java Beans con JSP
 Los Java Beans son com ponentes Java que se usan 
habitualm ente en aplicaciones Web para gest ionar la lógica de 
negocio
 Se pueden ut ilizar en JSP para obtener inform ación a visualizar
 Más adelante se verá la arquitectura MVC donde JSP im plem enta la 
vista 
Juan Pavón - UCM 2012-13 JSP 12
Java Beans
 Clases Java que cum plen varias convenciones
 Declarados dent ro de un paquete
 Const ructor sin argum entos
• O que no se defina ningún const ructor
 Todos los at r ibutos son pr ivate
• Estos at r ibutos se denom inan propiedades
 Métodos de acceso a las propiedades
• getPropiedad ( ) para lectura
• Para los booleanos isPropiedad ( )
• setPropiedad( va lor ) para escritura
 Métodos para realizar funciones m ás com plejas
 En Eclipse se crean con facilidad
 Crear una clase Java (dent ro de un paquete)
• Para aplicaciones web, dent rodel src/ paquete
 Especificar las propiedades com o at r ibutos pr ivate
 Source  Generate get ters and set ters…
• Se crean los m étodos get y set que interesen
Juan Pavón - UCM 2012-13 Enterprise Beans 13
Java Beans
 Ejem plo de un Bean cliente
Juan Pavón - UCM 2012-13 Enterprise Beans 14
public class Cliente {
private String nombre;
private String nif;
private String email;
private String direccion;
private String telefono;
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getNif() {
return nif;
}
public String getEmail() {
return email;
}
}
JSP y Java Beans
 JSP proporciona varias et iquetas para usar Java Beans
 j sp:useBean
• Crea un Java Bean
<jsp:useBean id="nombreBean" class="paquete.Clase" />
• Equivale a 
<% paquete.Clase nombreBean = new paquete.Clase(); %>
 j sp:setProper ty
• Modifica una propiedad llam ando al m étodo setPropiedad( )
<jsp:setProperty name="nombreBean"
property="propiedad" value="valor" />
• Equivale a 
<% nombreBean.setPropiedad("valor"); %>
 j sp:getProper ty
• Obt iene el valor de una propiedad llam ando a getPropiedad( )
<jsp:getProperty name="nombreBean" property="propiedad" />
• Equivale a 
<%= nombreBean.getPropiedad() %>
Juan Pavón - UCM 2012-13 Enterprise Beans 15
Versión XML de JSP
 Si se quiere ut ilizar JSP con aplicaciones XML habrá que adaptar 
la sintaxis a XML
 XHTML
 Servicios Web
 Aplicaciones Ajax
 Correspondencia en XML:
 HTML: < % = expression % >
XML: < jsp: expression> expresión< / jsp: expression>
 HTML: < % code % >
XML: < jsp: script let> código< / jsp: scr ipt let>
 HTML: < % ! declarat ions % >
XML: < jsp: declarat ion> declaraciones< / jsp: declarat ion>
 HTML: < % @ include file= URL % >
XML: < jsp: direct ive.include file= "URL"/ >
Juan Pavón - UCM 2012-13 JSP 16
Versión XML de JSP
Juan Pavón - UCM 2012-13 JSP 17
<?xml version="1.0" encoding="UTF‐8" ?>
<html xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:output
omit‐xml‐declaration="true"
doctype‐root‐element="html"
doctype‐public="‐//W3C//DTD XHTML 1.0 Transitional//EN"
doctype‐system="http://www.w3.org/TR/xhtml1/DTD/xhtml1‐
transitional.dtd" />
<jsp:directive.page contentType="text/html"/>
<head>
<title>Título de la página</title>
</head>
<body>
Cuerpo con scriptles, etc.
</body>
</html>
Espacio de nom bre para 
las et iquetas j sp: XXX
Declaración del 
t ipo de docum ento
Acciones
 Et iquetas JSP con sintaxis XML para cont rolar el intérprete de 
servlets
<jsp:include page="URL" flush="true" />
• I ncluye el URL indicado en t iem po de ejecución en vez de en t iem po
de com pilación (que es lo que hace la direct iva include)
 Esto sirve para datos que cam bian con frecuencia
<jsp:forward page="URL" />
<jsp:forward page="<%= expresiónJava %>" />
 Salta al URL (estát ico) o al URL resultante de la expresión Java 
(calculado dinám icam ente)
Juan Pavón - UCM 2012-13 JSP 18
Ventajas de JSP
 PHP, ASP, ColdFusion
 Al tener acceso a todo Java, JSP es m ás flexible y m ejor lenguaje para 
la parte dinám ica
 Más herram ientas de desarrollo (m uchas de código abierto)
 Servlets
 Mejor para crear y m antener el código (X)HTML
 Se puede editar en herram ientas t ípicas de desarrollo web
 Aunque antes sigue siendo necesario conocer cóm o program ar servlets
Juan Pavón - UCM 2012-13 JSP 19
Bibliografía
 Eric Jendrock et al. The Java EE 6 Tutorial (2013) . 
ht tp: / / docs.oracle.com / javaee/ 6/ tutor ial/ doc/
 Building Web Apps in Java: Beginning & I nterm ediate Servlet & 
JSP Tutorials. 
ht tp: / / courses.coreservlets.com / Course-Materials/ csajsp2.htm l
 Docum entación oficial
 Java EE Specificat ions 
ht tp: / / www.oracle.com / technetwork/ java/ javaee/ tech/ index.htm l
 API specificat ion for version 6 of Java EE 
ht tp: / / docs.oracle.com / javaee/ 6/ api/
Juan Pavón - UCM 2012-13 JSP 20

Continuar navegando

Materiales relacionados

163 pag.
Lenguaje de Programación II JAVA

SIN SIGLA

User badge image

Stiven Fajardo

27 pag.
7 pag.
CJSP-A-Leccion-IntroduccionJSPs

User badge image

marketingdigital1995