SlideShare una empresa de Scribd logo
Tema 2a - JSP Dr. Diego L z. de Ipiña Gz. de Artaza http://paginaspersonales.deusto.es/dipina http://paginaspersonales.deusto.es/dipina/cursos/J2EECesine.zip [email_address]
JSP: Introducción Una tecnología que permite combinar código HTML estático con código generado dinámicamente en un mismo fichero. Ventajas: Separación de datos estáticos/dinámicos . Independencia de formato/plataforma. Sencillez (sabiendo servlets)
JSP: Introducción Comparaciones con otras tecnologías: Vs ASP (Active Server Pages) y ASP.NET. Vs Servlets. Vs JavaScripts Los JSP nos permiten separar la parte dinámica de nuestras páginas Web del HTML estático. Simplemente escribimos el HTML regular de la forma normal y encerramos el código de las partes dinámicas en unas etiquetas especiales, la mayoría de las cuales empiezan con &quot; <% &quot; y terminan con &quot; %> &quot;.
JSP: Introducción Damos extensión  .jsp . Aunque el código parezca mas bien HTML, el servidor lo traduce a un servlet en la primera petición. 3 elementos en un JSP: Elementos script (scriptlets) Directivas Acciones
JSP: Sintaxis Expresión JSP <%= expression %>;   La Expresión es evaluada y situada en la salida.  El equivalente XML es  <jsp:expression> expression </jsp:expression> Las variables predefinidas son  request, response, out, session, application, config , y  pageContext .  Scriptlet JSP <% code %>; El código se inserta en el método  service .  El equivalente XML es:  <jsp:scriptlet>code</jsp:scriptlet>.
JSP: Sintaxis Declaración JSP <%! code %> El código se inserta en el cuerpo de la clase del servlet, fuera del método  service .  El equivalente XML es:  <jsp:declaration> code </jsp:declaration>.  Directiva page JSP   <%@ page att=&quot;val&quot; %> Dirige al motor servlet sobre la configuración general. El equivalente XML es:  <jsp:directive.page att=&quot;val&quot;\>.   Los atributos legales son (con los valores por defecto en negrita):  import=&quot;package.class&quot;  contentType=&quot;MIME-Type&quot;  isThreadSafe=&quot;true|false&quot;
JSP: Sintaxis session=&quot; true|false &quot;  buffer=&quot; sizekb|none &quot;  autoflush=&quot; true|false &quot;  extends=&quot; package.class &quot;  info=&quot; message &quot;  errorPage=&quot; url &quot;  isErrorPage=&quot; true|false &quot;  language=&quot; java &quot;  Directiva include JSP   <%@ include file=&quot;url&quot; %> Un fichero del sistema local se incluirá cuando la página se traduzca a un Servlet. El equivalente XML es:  <jsp:directive.include   file=&quot;url&quot;\>
JSP:Sintaxis Comentario JSP <%-- comment --%> Comentario ignorado cuando se traduce la página JSP en un servlet. Si queremos un comentario en el HTML resultante, usamos la sintaxis de comentario normal del HTML  <!-- comment -->.   Acción  jsp:include   <jsp:include page=&quot;relative URL&quot; flush=&quot;true&quot;/> Incluye un fichero en el momento en que la página es solicitada. Aviso:  en algunos servidores, el fichero incluido debe ser un fichero HTML o JSP, según determine el servidor (normalmente basado en la extensión del fichero).
JSP: Sintaxis Acción jsp:useBean   <jsp:useBean&nbsp;att=val*/>  <jsp:useBean&nbsp;att=val*>   ...  </jsp:useBean>  Encuentra o construye un Java Bean.  Los posibles atributos son:  id=&quot;name&quot;  scope=&quot;page|request|session|application&quot;  class=&quot;package.class&quot;  type=&quot;package.class&quot;  beanName=&quot;package.class&quot;
JSP: Sintaxis Acción jsp:setProperty <jsp:setProperty att=val*/> Selecciona las propiedades del bean, bien directamente o designando el valor que viene desde un parámetro de la petición. Los atributos legales son:  name=&quot;beanName&quot;  property=&quot;propertyName|*&quot;  param=&quot;parameterName&quot;  value=&quot;val&quot;  Acción jsp:getProperty <jsp:getProperty name=&quot;propertyName&quot; value=&quot;val&quot;/> Recupera y saca las propiedades del Bean.
JSP: Sintaxis Acción jsp:forward <jsp:forward page=&quot;relative URL&quot;/> Reenvía la petición a otra página.    Acción jsp:plugin <jsp:plugin attribute=&quot;value&quot;*> ...  </jsp:plugin>  Genera etiquetas OBJECT o EMBED, apropiadas al tipo de navegador, pidiendo que se ejecute un applet usando el Java Plugin.
JSP: Expresiones EXPRESIONES:  <%= expresión %>  Se evalúan y se insertan en la salida. Se tiene acceso a variables: request , el  HttpServletRequest response , el  HttpServletResponse session , el  HttpSession  asociado con el  request  (si existe) out , el  PrintWriter  (una versión con buffer del tipo JspWriter) usada para enviar la salida al cliente.  Your hostname: <%= request.getRemoteHost() %>
JSP: Expresiones El equivalente en XML es usar una síntaxis alternativa para las expresiones JSP: <jsp:expression> Expresión Java </jsp:expression> Los elementos XML, al contrario que los del HTML, son sensibles a las mayúsculas.
JSP: Scriptlets SCRIPTLETS:  <% codido %>  que se insertan dentro del método service del servlet. Tienen acceso a las mismas variables que las expresiones. El código dentro de un scriptlet se insertará  exactamente  como está escrito, y cualquier HTML estático (plantilla de texto) anterior o posterior al scriptlet se convierte en sentencias  print . Esto significa que los scriptlets no necesitan completar las sentencias Java, y los bloques abiertos pueden afectar al HTML estático fuera de los scriplets
JSP: Scriptlets <% if (Math.random() < 0.5) { %> Have a <B>nice</B> day! <% } else { %> Have a <B>lousy</B> day! <% } %>   Que se traducirá en: if (Math.random() < 0.5) { out.println(&quot;Have a <B>nice</B> day!&quot;);} else {  out.println(&quot;Have a <B>lousy</B> day!&quot;); }
JSP: Scriptlets El equivalente XML de  <% Código %>  es: <jsp:scriptlet> Código </jsp:scriptlet>   Si se quiere poder usar los caracteres  &quot; %> &quot;  dentro de un scriptlet, hay que usar  &quot; %\> &quot;
JSP: Declaraciones DECLARACIONES:   <%! codigo %>   que se insertan en el cuerpo de la clase del servlet, fuera de cualquier método existente. Permite insertar métodos, variables... No generan salida alguna. Se usan combinadas con scriptlets. <%! private int accessCount = 0; %> Accesses to page since server reboot:  <%= ++accessCount %>
JSP: Declaraciones Como con los scriptlet, si queremos usar los caracteres &quot; %> &quot;, ponemos &quot; %\> &quot;.  El equivalente XML de  <%! Código %>  es: <jsp:declaration> Código </jsp:declaration>
JSP: Directivas Afecta a la estructura general de la clase servlet. Normalmente tienen la siguiente forma: <%@ directive attribute=&quot;value&quot; %> También podemos combinar múltiples selecciones de atributos para una sola directiva: <%@ directive  attribute1=&quot;value1“ attribute2=&quot;value2“ ... attributeN=&quot;valueN&quot; %>
JSP: Directivas page : import=&quot;package.class“  o  import=&quot;package.class1,...,package.classN &quot;.  Esto permite especificar los paquetes que deberían ser importados.  El atributo  import  es el único que puede aparecer múltiples veces. ContentType = &quot;MIME-Type&quot;  o  contentType = &quot;MIME-Type; charset = Character-Set&quot;  Esto especifica el tipo MIME de la salida. El valor por defecto es  text/html . Tiene el mismo valor que el scriptlet usando “ response.setContentType ”. isThreadSafe=&quot;true|false&quot;.   Un valor de  true  (por defecto) indica un procesamiento del servlet normal, donde múltiples peticiones pueden procesarse simultáneamente con un sólo ejemplar del servlet, bajo la suposición que el autor sincroniza los recursos compartidos. Un valor de  false  indica que el servlet debería implementar  SingleThreadModel .
JSP: Directivas session=&quot;true|false&quot;.   Un valor de  true  (por defecto) indica que la variable predefinida  session  (del tipo  HttpSession ) debería unirse a la sesión existente si existe una, si no existe se debería crear una nueva sesión para unirla. Un valor de  false  indica que no se usarán sesiones, y los intentos de acceder a la variable  session  resultarán en errores en el momento en que la página JSP sea traducida a un servlet.  buffer=&quot;sizekb|none&quot;.   Esto especifica el tamaño del buffer para el  JspWriter   out . El valor por defecto es específico del servidor y debería ser de al menos 8kb.  autoflush=&quot;true|false&quot;.   Un valor de  true  (por defecto) indica que el buffer debería descargase cuando esté lleno. Un valor de  false , raramente utilizado, indica que se debe lanzar una excepción cuando el buffer se sobrecargue. Un valor de  false  es ilegal cuando usamos  buffer=&quot;none&quot; .
JSP: Directivas extends=&quot;package.class&quot;.   Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaución, ya que el servidor podría utilizar una superclase personalizada.  info=&quot;message&quot;.  Define un string que puede usarse para ser recuperado mediante el método  getServletInfo .  errorPage=&quot;url&quot;.  Especifica una página JSP que se debería procesar si se lanzará cualquier  Throwable  pero no fuera capturado en la página actual.  isErrorPage=&quot;true|false&quot;.   Indica si la página actual actúa o no como página de error de otra página JSP. El valor por defecto es false.  language=&quot;java&quot;.  En algunos momentos, esto está pensado para especificar el lenguaje a utilizar. Por ahora, no debemos precuparnos por él ya que java es tanto el valor por defecto como la única opción legal.
JSP: Directivas include : P ermite incluir ficheros en el momento en que la página JSP es traducida a un servlet. <%@ include file=&quot;url relativa&quot; %>   Los contenidos del fichero incluido son analizados como texto normal JSP y así pueden incluir HTML estático, elementos de script, directivas y acciones. Uso: Barras de navegación.
JSP: Directivas La síntaxis XML para definir directivas es: <jsp:directive. TipoDirectiva  atributo=valor /> Por ejemplo, el equivalente XML de: <%@ page import=&quot;java.util.*&quot; %>   es: <jsp:directive.page import=&quot;java.util.*&quot; />
JSP: Variables predefinidas request :  Este es el  HttpServletRequest  asociado con la petición, y nos permite mirar los parámetros de la petición (mediante  getParameter ), el tipo de petición (GET, POST, HEAD, etc.), y las cabeceras HTTP entrantes (cookies, Referer, etc.). Estrictamente hablando, se permite que la petición sea una subclase de  ServletRequest  distinta de  HttpServletRequest , si el protocolo de la petición es distinto del HTTP. Esto casi nunca se lleva a la práctica.
JSP: Variables predefinidas response :  Este es el  HttpServletResponse  asociado con la respuesta al cliente. Como el stream de salida tiene un buffer, es legal seleccionar los códigos de estado y cabeceras de respuesta, aunque no está permitido en los servlets normales una vez que la salida ha sido enviada al cliente.
JSP: Variables predefinidas out : Este es el  PrintWriter  usado para enviar la salida al cliente. Sin embargo, para poder hacer útil el objeto response esta es una versión con buffer de  PrintWriter  llamada  JspWriter . Podemos ajustar el tamaño del buffer, o incluso desactivar el buffer, usando el atributo buffer de la directiva  page . Se usa casi exclusivamente en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de salida, y por eso raramente se refieren explícitamente a  out .
JSP: Variables predefinidas session : Este es el objeto  HttpSession  asociado con la petición. Las sesiones se crean automáticamente, por esto esta variable se une incluso si no hubiera una sesión de referencia entrante. La única excepción es usar el atributo  session  de la directiva  page  para desactivar las sesiones, en cuyo caso los intentos de referenciar la variable  session  causarán un error en el momento de traducir la página JSP a un servlet.
JSP: Variables predefinidas application : El  ServletContext  obtenido mediante  getServletConfig().getContext().   config : El objeto  ServletConfig . pageContext : JSP presenta una nueva clase llamada  PageContext  para encapsular características de uso específicas del servidor como  JspWriter s de alto rendimiento. La idea es que, si tenemos acceso a ellas a través de esta clase en vez directamente, nuestro código seguirá funcionando en motores servlet/JSP &quot;normales&quot;.
JSP: Variables predefinidas page : Esto es sólo un sinónimo de  this , y no es muy útil en Java. Fue creado como situación para el día que el los lenguajes de script puedan incluir otros lenguajes distintos de Java.
JSP: Acciones Usan construcciones de síntaxis XML para controlar el comportamiento del motor de Servlets. Podemos insertar un fichero dinámicamente, reutilizar componentes JavaBeans, reenviar al usuario a otra página, o generar HTML para el plug-in Java .
JSP: Acciones:  include a)  jsp:include  nos permite insertar ficheros en una página que está siendo generada. La síntaxis se parece a esto: <jsp:include page=&quot;relative URL&quot; flush=&quot;true&quot; />   Al contrario que la directiva  include , que inserta el fichero en el momento de la conversión a un Servlet, inserta el fichero cuando la página es solicitada. Se pierde eficiencia, e imposibilita a la página incluida contener código JSP general pero se obtiene gran flexibilidad.   Uso: Noticias...
JSP: Acciones:  useBean b)  jsp:useBean  permite cargar y utilizar un JavaBean en la página JSP y así utilizar la reusabilidad de las clases Java sin sacrificar la conveniencia de añadir JSP sobre servlets solitarios. <jsp:useBean id=&quot;name&quot; class=&quot;package.class&quot; /> Esto normalmente significa &quot;usa un objeto de la clase especificada por  class , y únelo a una variable con el nombre especificado por  id . Ahora podemos modificar sus propiedades mediante  jsp:setProperty , o usando un scriptlet y llamando a un método de  id . Para recoger una propiedad se usa  jsp:getProperty .
JSP: Acciones:  useBean La forma más sencilla de usar un Bean es usar: <jsp:useBean id=&quot; name &quot; class=&quot; package.class &quot; /> Pero si hacemos  <jsp:useBean ...>  Body  </jsp:useBean>   La porción  Body  sólo se debería ejecutar cuando el bean es instanciado por primera vez, no cuando un bean existente se encuentre y se utilice. No todas las sentencias  jsp:useBean  resultan en la instanciación de un Bean.
JSP: Acciones:  useBean id  Da un nombre a la variable que referencia al bean. Se usará un objeto bean anterior en lugar de instanciar uno nuevo si se puede encontrar uno con el mismo  id  y  scope .  class   Designa el nombre completo del paquete del bean. scope   Indica el contexto en el que el bean debería estar disponible. Hay cuatro posibles valores:  page ,  request ,  session ,  y   application .   type   Especifica el tipo de la variable a la que se referirá el objeto. beanName   Da el nombre del bean, como lo suministraríamos en el método instantiate de Beans. Esta permitido suministrar un  type  y un  beanName , y omitir el atributo  class .
JSP: Acciones:  setProperty Para obtener valores de propiedades de los beans que se han referenciado anteriormente. 2 usos: Después de un  useBean . <jsp:useBean id=&quot;myName&quot; ... /> ... <jsp:setProperty name=&quot;myName“ property=&quot;someProperty&quot; ... />   Se ejecuta siempre que haya una solicitud.
JSP: Acciones: setProperty Dentro de un  useBean <jsp:useBean id=&quot;myName“ ... >    ...   <jsp:setProperty name=&quot;myName&quot;  property=&quot;someProperty&quot; ... /> </jsp:useBean>   Sólo se ejecuta cuando haya que instanciar un bean.
JSP: Acciones:  setProperty name   Este atributo requerido designa el bean cuya propiedad va a ser seleccionada. El elemento  jsp:useBean  debe aparecer antes del elemento  jsp:setProperty .  property   Este atributo requerido indica la propiedad que queremos seleccionar. Sin embargo, hay un caso especial: un valor de &quot;*&quot; significa que todos los parámetros de la petición cuyos nombres correspondan con nombres de propiedades del Bean serán pasados a los métodos de selección apropiados. value   Este atributo opcional especifica el valor para la propiedad. Los valores string son convertidos automáticamente a lo que corresponda mediante el método estándard  valueOf . No se pueden usar  value  y  param  juntos, pero si está permitido no usar ninguna.
JSP: Acciones:  setProperty param   Este parámetro opcional designa el parámetro de la petición del que se debería derivar la propiedad. Si la petición actual no tiene dicho parámetro, no se hace nada: el sistema no pasa null al método seleccionador de la propiedad. Así, podemos dejar que el bean suministre los valores por defecto, sobrescribiéndolos sólo cuando el parámetro dice que lo haga.  <jsp:setProperty  name=&quot;orderBean“ property=&quot;numberOfItems&quot;  param=&quot;numItems&quot; />   Si no indicamos nada, el servidor revisa todos los parametros de la petición e intenta encontrar alguno que concuerde con la propiedad indicada.
Ejemplos Revisar ejemplos disponibles en: Cabecera JSP 1.2 Examples http://localhost:8080/jsp-examples/
JSP 2.0 Algunas nuevas características de JSP 2.0 frente a 1.2 orientadas a simplificar su desarrollo son: Simple Expression Language (EL) Fragmentos JSP Ficheros de Tags Manejadores de Etiquetas Simplificados
Simple Expression Language La Expression Language, está inspirada en los lenguajes de expresiones de ECMAScript y XPath Simplifican el uso de expresiones en JSPs.  Permite la ejecución de expresiones fuera de los elementos de scripting de JSP Fue introducida con JSTL 1.0 como un mecanismo alternativo al uso de expresiones en Java para asignar valores a atributos Desde JSP 2.0 el JSP container entiende expresiones en EL EL es mucho más tolerante sobre variables sin valor ( null ) y realiza conversiones automáticas de datos Se puede habilitar (por defecto) o deshabilitar el uso de expresiones EL:  <%@ page isScriptingEnabled=&quot;true|false&quot;  isELEnabled=&quot;true|false &quot;%>
Sintaxis de EL Una expresión en EL contiene variables y operadores ${expr} , donde  expr  es: Literales: true  o  false Integer Floating point String   null Ejemplos: ${false} <%-- evaluates to false --%> ${3*8}
Sintaxis de EL ${expr} , donde  expr  es: Operadores: Aritméticos: +, -, *, /, div, %, mod, - Lógicos: and, &&, or, ||, !, not Relacionales: ==, eq, !=, ne, <, lt, <, gt, <=, le, >=, ge Vacío,  empty , valida si una variable es null o una collección no tiene elementos Llamadas a función, donde  func  es el nombre de la función y args es 0 o más argumentos separados por comas. Condicional:  A ? B: C , como en C y Java Ejemplos: ${ (6 * 5) + 5 } <%-- evaluates to 35 --%> ${empty name}
Sintaxis de EL ${expr} , donde  expr  es: Objetos implícitos: pageContext     contexto del JSP, puede usarse para acceder a objetos implícitos como request, response, session, out, servletContext, etc. Ejemplo :  ${pageContext.response}  param $(param.name)  <-> request.getParameter (name) paramValues ${paramvalues.name) <-> request.getParamterValues(name ) header ${header.name}  <-> request.getHeader(name)   headerValues ${headerValues.name}  <-> request.getHeaderValues(name) cookie ${cookie.name.value}     devuelve el valor de la primera cookie con el nombre dado initParam initParam.name     ServletContext.getInitparameter(String name)
Sintaxis de EL ${expr} , donde  expr  es: Objetos implícitos: pageScope     puede acceder a objetos dentro del contexto de página ${pageScope.objectName}  ${pageScope.objectName.attributeName}.  requestScope   ${requestScope.objectName}  ${requestScope.objectName.attributeName} sessionScope ${sessionScope.name}  applicationScope
Ejemplos EL ${amount + 5}  , añade 5 a una variable amount ${order.amount + 5} , añade 5 a la propiedad amount del bean order Lo mismo sería hacer:  ${order['amount'] + 5}   Para asignar un valor dinámico a un atributo podemos hacer: <input name=&quot;firstName&quot; value=&quot;${customer.firstName}&quot;>
Ejemplos EL El operador  ? : <select name=&quot;artist&quot;> <option value=&quot;1&quot;  ${param.artist == 1 ? 'selected' : ''} > Vesica Pisces <option value=&quot;2&quot; ${param.artist == 2 ? 'selected' : ''}> Cortical Control <option value=&quot;3&quot; ${param.artist == 3 ? 'selected' : ''}> Vida Vierra </select>
Ejemplos EL Revisar ejemplos de la documentación que viene con Tomcat 5.0 en sección: JSP 2.0 Examples, Expression Language http://localhost:8080/jsp-examples/
Páginas de Error JSP Errores en servlets and JSPs desde su versión 2.0 vienen dadas en la variable  javax.servlet.error.exception   La propiedad  errorData  del objeto implícito  pageContext  expone información sobre el problema.  javax.servlet.jsp.ErrorData  tiene las siguientes propiedades: requestURI     la URI para la que falló la petición servletName     el nombre del servlet o JSP que falló statusCode     el código del fallo throwable     la excepción que causó la invocación de la página de error
Páginas de Error JSP <%@ page isErrorPage=&quot;true&quot; contentType=&quot;text/html&quot; %> <%@ taglib prefix=&quot;log&quot; uri=&quot;http://jakarta.apache.org/taglibs/log-1.0&quot; %> Sorry, but things didn't work out as planned. I've logged as much as I know about the problem, so rest assured that my master will look into what's wrong as soon as he's sober. <jsp:useBean id=&quot;now&quot; class=&quot;java.util.Date&quot; /> <log:fatal> ----- ${now} Request that failed: ${pageContext.errorData.requestURI} Status code: ${pageContext.errorData.statusCode} Exception: ${pageContext.errorData.throwable} ----- </log:fatal>
Páginas de Error JSP En el  web.xml  se puede indicar que esta es la página de error mediante los siguientes elementos: ... <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-code>500</exception-code> <location>/error.jsp</location> </error-page> ...
web.xml  en JSP 2.0 Aunque se sigue utilizando  web.xml  hay dos diferencias principales: Las reglas de  web.xml  están definidas en un XML Schema  Las configuraciones específicas de JSP han sido movidas a un nuevo elemento XML Usar Schemas en vez de DTDs nos permite colocar los elementos XML de primer nivel en cualquier orden y realizar aún mas verificaciones sobre la sintaxis de  web.xml Todos los elementos específicos a la configuración de un JSP se encuentran agrupados dentro del nuevo elemento  <jsp-config> .
Elemento  jsp-config Su subelemento  <jsp-property-group>  es muy interesante. Permite aplicar configuraciones a un grupo de JSPs que conforman con un patrón de url específico ... <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config> ...
Elemento  jsp-config Elemento Descripción <el-ignored> Indica si ignorar o no las expresiones EL dentro de un JSP correspondiente al patrón URL indicado. Por defecto es  false .  <scripting-invalid> Si es true no se pueden introducir scriplets en el JSP.  <page-encoding> Indica la codificación de caracteres para un conjunto de JSPs <include-coda> Indica el path correspondiente a un fichero a añadir al final de cada página JSP..  <include-prelude> Lo mismo pero al comienzo de cada JSP. <is-xml> Si se asigna a  true  la sintaxis de los JSPs es en XML.

Más contenido relacionado

PDF
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
PPTX
Jsp(java server pages)
PPT
Java Script BáSico Ajax
PPTX
jQuery - 01 Conceptos básicos de java script
PPTX
Introducción a Javascript I
PPT
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
Jsp(java server pages)
Java Script BáSico Ajax
jQuery - 01 Conceptos básicos de java script
Introducción a Javascript I

La actualidad más candente (19)

PDF
Lenguaje de-programacion-java script-1
ODP
Introducción a php (es)
PPTX
Javascript
PPTX
jsp - funcionamiento
PPT
Jsf
ODP
componentes de jsp
PPTX
Elementos de JSP
PPT
Sistema integrado
PDF
Clase 10 expresiones regulares
PPT
DiseñO Pagina Web
PPTX
PPTX
Guía de buenas prácticas para desarrolladores web
PPT
Todo Javascript para canibales
PPT
Java Script de canibaless
PDF
Guia JavaScript INCES Militar - Kurt Gude
PPTX
Angular Conceptos Practicos 1
PDF
Programacion en php
PDF
2. Java Servlets (J2EE) - Curso 2005-2006
Lenguaje de-programacion-java script-1
Introducción a php (es)
Javascript
jsp - funcionamiento
Jsf
componentes de jsp
Elementos de JSP
Sistema integrado
Clase 10 expresiones regulares
DiseñO Pagina Web
Guía de buenas prácticas para desarrolladores web
Todo Javascript para canibales
Java Script de canibaless
Guia JavaScript INCES Militar - Kurt Gude
Angular Conceptos Practicos 1
Programacion en php
2. Java Servlets (J2EE) - Curso 2005-2006
Publicidad

Destacado (15)

ODP
PDF
PPT
JSP diana y yo
PDF
Jsp Paginacion
PDF
Guia N2 Proyectos Web Php
PPT
Servlets y jsp
DOCX
Cuadro comparativo de apache y iis
PPTX
Servidor web
PDF
Aprende JavaScript
PPTX
Ventajas y desventajas de los servidores apache y IIS
PPTX
Ventajas y desventajas de los servidores apache y IIS
PDF
JavaScript Avanzado
PPT
Php Presentation
PDF
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
JSP diana y yo
Jsp Paginacion
Guia N2 Proyectos Web Php
Servlets y jsp
Cuadro comparativo de apache y iis
Servidor web
Aprende JavaScript
Ventajas y desventajas de los servidores apache y IIS
Ventajas y desventajas de los servidores apache y IIS
JavaScript Avanzado
Php Presentation
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Publicidad

Similar a Tema2a Jsp (20)

PDF
PDF
Sesion06 apuntes
ODP
Curso Jsp
ODP
Curso Jsp Mas
PPT
Java Server Page JSP, otra forma de hacer
PPTX
Java Web - JSP
DOCX
Resumen de la sintaxis jsp
PDF
Practica jsp
PPT
Curso Java Avanzado 3 Js Ps
PPT
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
PPT
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
PDF
Introducción a Tomcat
PDF
Introducción al desarrollo de aplicaciones web en Java
PDF
SERVLET BASICS
PDF
DOCX
TEMA Nº 3: ELEMENTOS DE JSP
PDF
Manual programacion - java - jsp & xml
PDF
Capa de presentacion jsp
PPTX
Java Web - Servlet
Sesion06 apuntes
Curso Jsp
Curso Jsp Mas
Java Server Page JSP, otra forma de hacer
Java Web - JSP
Resumen de la sintaxis jsp
Practica jsp
Curso Java Avanzado 3 Js Ps
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
Introducción a Tomcat
Introducción al desarrollo de aplicaciones web en Java
SERVLET BASICS
TEMA Nº 3: ELEMENTOS DE JSP
Manual programacion - java - jsp & xml
Capa de presentacion jsp
Java Web - Servlet

Tema2a Jsp

  • 1. Tema 2a - JSP Dr. Diego L z. de Ipiña Gz. de Artaza http://paginaspersonales.deusto.es/dipina http://paginaspersonales.deusto.es/dipina/cursos/J2EECesine.zip [email_address]
  • 2. JSP: Introducción Una tecnología que permite combinar código HTML estático con código generado dinámicamente en un mismo fichero. Ventajas: Separación de datos estáticos/dinámicos . Independencia de formato/plataforma. Sencillez (sabiendo servlets)
  • 3. JSP: Introducción Comparaciones con otras tecnologías: Vs ASP (Active Server Pages) y ASP.NET. Vs Servlets. Vs JavaScripts Los JSP nos permiten separar la parte dinámica de nuestras páginas Web del HTML estático. Simplemente escribimos el HTML regular de la forma normal y encerramos el código de las partes dinámicas en unas etiquetas especiales, la mayoría de las cuales empiezan con &quot; <% &quot; y terminan con &quot; %> &quot;.
  • 4. JSP: Introducción Damos extensión .jsp . Aunque el código parezca mas bien HTML, el servidor lo traduce a un servlet en la primera petición. 3 elementos en un JSP: Elementos script (scriptlets) Directivas Acciones
  • 5. JSP: Sintaxis Expresión JSP <%= expression %>; La Expresión es evaluada y situada en la salida. El equivalente XML es <jsp:expression> expression </jsp:expression> Las variables predefinidas son request, response, out, session, application, config , y pageContext . Scriptlet JSP <% code %>; El código se inserta en el método service . El equivalente XML es: <jsp:scriptlet>code</jsp:scriptlet>.
  • 6. JSP: Sintaxis Declaración JSP <%! code %> El código se inserta en el cuerpo de la clase del servlet, fuera del método service . El equivalente XML es: <jsp:declaration> code </jsp:declaration>. Directiva page JSP <%@ page att=&quot;val&quot; %> Dirige al motor servlet sobre la configuración general. El equivalente XML es: <jsp:directive.page att=&quot;val&quot;\>. Los atributos legales son (con los valores por defecto en negrita): import=&quot;package.class&quot; contentType=&quot;MIME-Type&quot; isThreadSafe=&quot;true|false&quot;
  • 7. JSP: Sintaxis session=&quot; true|false &quot; buffer=&quot; sizekb|none &quot; autoflush=&quot; true|false &quot; extends=&quot; package.class &quot; info=&quot; message &quot; errorPage=&quot; url &quot; isErrorPage=&quot; true|false &quot; language=&quot; java &quot; Directiva include JSP <%@ include file=&quot;url&quot; %> Un fichero del sistema local se incluirá cuando la página se traduzca a un Servlet. El equivalente XML es: <jsp:directive.include   file=&quot;url&quot;\>
  • 8. JSP:Sintaxis Comentario JSP <%-- comment --%> Comentario ignorado cuando se traduce la página JSP en un servlet. Si queremos un comentario en el HTML resultante, usamos la sintaxis de comentario normal del HTML <!-- comment -->. Acción jsp:include <jsp:include page=&quot;relative URL&quot; flush=&quot;true&quot;/> Incluye un fichero en el momento en que la página es solicitada. Aviso: en algunos servidores, el fichero incluido debe ser un fichero HTML o JSP, según determine el servidor (normalmente basado en la extensión del fichero).
  • 9. JSP: Sintaxis Acción jsp:useBean <jsp:useBean&nbsp;att=val*/> <jsp:useBean&nbsp;att=val*> ... </jsp:useBean> Encuentra o construye un Java Bean. Los posibles atributos son: id=&quot;name&quot; scope=&quot;page|request|session|application&quot; class=&quot;package.class&quot; type=&quot;package.class&quot; beanName=&quot;package.class&quot;
  • 10. JSP: Sintaxis Acción jsp:setProperty <jsp:setProperty att=val*/> Selecciona las propiedades del bean, bien directamente o designando el valor que viene desde un parámetro de la petición. Los atributos legales son: name=&quot;beanName&quot; property=&quot;propertyName|*&quot; param=&quot;parameterName&quot; value=&quot;val&quot; Acción jsp:getProperty <jsp:getProperty name=&quot;propertyName&quot; value=&quot;val&quot;/> Recupera y saca las propiedades del Bean.
  • 11. JSP: Sintaxis Acción jsp:forward <jsp:forward page=&quot;relative URL&quot;/> Reenvía la petición a otra página.   Acción jsp:plugin <jsp:plugin attribute=&quot;value&quot;*> ... </jsp:plugin> Genera etiquetas OBJECT o EMBED, apropiadas al tipo de navegador, pidiendo que se ejecute un applet usando el Java Plugin.
  • 12. JSP: Expresiones EXPRESIONES: <%= expresión %> Se evalúan y se insertan en la salida. Se tiene acceso a variables: request , el HttpServletRequest response , el HttpServletResponse session , el HttpSession asociado con el request (si existe) out , el PrintWriter (una versión con buffer del tipo JspWriter) usada para enviar la salida al cliente. Your hostname: <%= request.getRemoteHost() %>
  • 13. JSP: Expresiones El equivalente en XML es usar una síntaxis alternativa para las expresiones JSP: <jsp:expression> Expresión Java </jsp:expression> Los elementos XML, al contrario que los del HTML, son sensibles a las mayúsculas.
  • 14. JSP: Scriptlets SCRIPTLETS: <% codido %> que se insertan dentro del método service del servlet. Tienen acceso a las mismas variables que las expresiones. El código dentro de un scriptlet se insertará exactamente como está escrito, y cualquier HTML estático (plantilla de texto) anterior o posterior al scriptlet se convierte en sentencias print . Esto significa que los scriptlets no necesitan completar las sentencias Java, y los bloques abiertos pueden afectar al HTML estático fuera de los scriplets
  • 15. JSP: Scriptlets <% if (Math.random() < 0.5) { %> Have a <B>nice</B> day! <% } else { %> Have a <B>lousy</B> day! <% } %> Que se traducirá en: if (Math.random() < 0.5) { out.println(&quot;Have a <B>nice</B> day!&quot;);} else { out.println(&quot;Have a <B>lousy</B> day!&quot;); }
  • 16. JSP: Scriptlets El equivalente XML de <% Código %> es: <jsp:scriptlet> Código </jsp:scriptlet> Si se quiere poder usar los caracteres &quot; %> &quot; dentro de un scriptlet, hay que usar &quot; %\> &quot;
  • 17. JSP: Declaraciones DECLARACIONES: <%! codigo %> que se insertan en el cuerpo de la clase del servlet, fuera de cualquier método existente. Permite insertar métodos, variables... No generan salida alguna. Se usan combinadas con scriptlets. <%! private int accessCount = 0; %> Accesses to page since server reboot: <%= ++accessCount %>
  • 18. JSP: Declaraciones Como con los scriptlet, si queremos usar los caracteres &quot; %> &quot;, ponemos &quot; %\> &quot;. El equivalente XML de <%! Código %> es: <jsp:declaration> Código </jsp:declaration>
  • 19. JSP: Directivas Afecta a la estructura general de la clase servlet. Normalmente tienen la siguiente forma: <%@ directive attribute=&quot;value&quot; %> También podemos combinar múltiples selecciones de atributos para una sola directiva: <%@ directive attribute1=&quot;value1“ attribute2=&quot;value2“ ... attributeN=&quot;valueN&quot; %>
  • 20. JSP: Directivas page : import=&quot;package.class“ o import=&quot;package.class1,...,package.classN &quot;. Esto permite especificar los paquetes que deberían ser importados. El atributo import es el único que puede aparecer múltiples veces. ContentType = &quot;MIME-Type&quot; o contentType = &quot;MIME-Type; charset = Character-Set&quot; Esto especifica el tipo MIME de la salida. El valor por defecto es text/html . Tiene el mismo valor que el scriptlet usando “ response.setContentType ”. isThreadSafe=&quot;true|false&quot;. Un valor de true (por defecto) indica un procesamiento del servlet normal, donde múltiples peticiones pueden procesarse simultáneamente con un sólo ejemplar del servlet, bajo la suposición que el autor sincroniza los recursos compartidos. Un valor de false indica que el servlet debería implementar SingleThreadModel .
  • 21. JSP: Directivas session=&quot;true|false&quot;. Un valor de true (por defecto) indica que la variable predefinida session (del tipo HttpSession ) debería unirse a la sesión existente si existe una, si no existe se debería crear una nueva sesión para unirla. Un valor de false indica que no se usarán sesiones, y los intentos de acceder a la variable session resultarán en errores en el momento en que la página JSP sea traducida a un servlet. buffer=&quot;sizekb|none&quot;. Esto especifica el tamaño del buffer para el JspWriter out . El valor por defecto es específico del servidor y debería ser de al menos 8kb. autoflush=&quot;true|false&quot;. Un valor de true (por defecto) indica que el buffer debería descargase cuando esté lleno. Un valor de false , raramente utilizado, indica que se debe lanzar una excepción cuando el buffer se sobrecargue. Un valor de false es ilegal cuando usamos buffer=&quot;none&quot; .
  • 22. JSP: Directivas extends=&quot;package.class&quot;. Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaución, ya que el servidor podría utilizar una superclase personalizada. info=&quot;message&quot;. Define un string que puede usarse para ser recuperado mediante el método getServletInfo . errorPage=&quot;url&quot;. Especifica una página JSP que se debería procesar si se lanzará cualquier Throwable pero no fuera capturado en la página actual. isErrorPage=&quot;true|false&quot;. Indica si la página actual actúa o no como página de error de otra página JSP. El valor por defecto es false. language=&quot;java&quot;. En algunos momentos, esto está pensado para especificar el lenguaje a utilizar. Por ahora, no debemos precuparnos por él ya que java es tanto el valor por defecto como la única opción legal.
  • 23. JSP: Directivas include : P ermite incluir ficheros en el momento en que la página JSP es traducida a un servlet. <%@ include file=&quot;url relativa&quot; %> Los contenidos del fichero incluido son analizados como texto normal JSP y así pueden incluir HTML estático, elementos de script, directivas y acciones. Uso: Barras de navegación.
  • 24. JSP: Directivas La síntaxis XML para definir directivas es: <jsp:directive. TipoDirectiva atributo=valor /> Por ejemplo, el equivalente XML de: <%@ page import=&quot;java.util.*&quot; %> es: <jsp:directive.page import=&quot;java.util.*&quot; />
  • 25. JSP: Variables predefinidas request : Este es el HttpServletRequest asociado con la petición, y nos permite mirar los parámetros de la petición (mediante getParameter ), el tipo de petición (GET, POST, HEAD, etc.), y las cabeceras HTTP entrantes (cookies, Referer, etc.). Estrictamente hablando, se permite que la petición sea una subclase de ServletRequest distinta de HttpServletRequest , si el protocolo de la petición es distinto del HTTP. Esto casi nunca se lleva a la práctica.
  • 26. JSP: Variables predefinidas response : Este es el HttpServletResponse asociado con la respuesta al cliente. Como el stream de salida tiene un buffer, es legal seleccionar los códigos de estado y cabeceras de respuesta, aunque no está permitido en los servlets normales una vez que la salida ha sido enviada al cliente.
  • 27. JSP: Variables predefinidas out : Este es el PrintWriter usado para enviar la salida al cliente. Sin embargo, para poder hacer útil el objeto response esta es una versión con buffer de PrintWriter llamada JspWriter . Podemos ajustar el tamaño del buffer, o incluso desactivar el buffer, usando el atributo buffer de la directiva page . Se usa casi exclusivamente en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de salida, y por eso raramente se refieren explícitamente a out .
  • 28. JSP: Variables predefinidas session : Este es el objeto HttpSession asociado con la petición. Las sesiones se crean automáticamente, por esto esta variable se une incluso si no hubiera una sesión de referencia entrante. La única excepción es usar el atributo session de la directiva page para desactivar las sesiones, en cuyo caso los intentos de referenciar la variable session causarán un error en el momento de traducir la página JSP a un servlet.
  • 29. JSP: Variables predefinidas application : El ServletContext obtenido mediante getServletConfig().getContext(). config : El objeto ServletConfig . pageContext : JSP presenta una nueva clase llamada PageContext para encapsular características de uso específicas del servidor como JspWriter s de alto rendimiento. La idea es que, si tenemos acceso a ellas a través de esta clase en vez directamente, nuestro código seguirá funcionando en motores servlet/JSP &quot;normales&quot;.
  • 30. JSP: Variables predefinidas page : Esto es sólo un sinónimo de this , y no es muy útil en Java. Fue creado como situación para el día que el los lenguajes de script puedan incluir otros lenguajes distintos de Java.
  • 31. JSP: Acciones Usan construcciones de síntaxis XML para controlar el comportamiento del motor de Servlets. Podemos insertar un fichero dinámicamente, reutilizar componentes JavaBeans, reenviar al usuario a otra página, o generar HTML para el plug-in Java .
  • 32. JSP: Acciones: include a) jsp:include nos permite insertar ficheros en una página que está siendo generada. La síntaxis se parece a esto: <jsp:include page=&quot;relative URL&quot; flush=&quot;true&quot; /> Al contrario que la directiva include , que inserta el fichero en el momento de la conversión a un Servlet, inserta el fichero cuando la página es solicitada. Se pierde eficiencia, e imposibilita a la página incluida contener código JSP general pero se obtiene gran flexibilidad. Uso: Noticias...
  • 33. JSP: Acciones: useBean b) jsp:useBean permite cargar y utilizar un JavaBean en la página JSP y así utilizar la reusabilidad de las clases Java sin sacrificar la conveniencia de añadir JSP sobre servlets solitarios. <jsp:useBean id=&quot;name&quot; class=&quot;package.class&quot; /> Esto normalmente significa &quot;usa un objeto de la clase especificada por class , y únelo a una variable con el nombre especificado por id . Ahora podemos modificar sus propiedades mediante jsp:setProperty , o usando un scriptlet y llamando a un método de id . Para recoger una propiedad se usa jsp:getProperty .
  • 34. JSP: Acciones: useBean La forma más sencilla de usar un Bean es usar: <jsp:useBean id=&quot; name &quot; class=&quot; package.class &quot; /> Pero si hacemos <jsp:useBean ...> Body </jsp:useBean> La porción Body sólo se debería ejecutar cuando el bean es instanciado por primera vez, no cuando un bean existente se encuentre y se utilice. No todas las sentencias jsp:useBean resultan en la instanciación de un Bean.
  • 35. JSP: Acciones: useBean id Da un nombre a la variable que referencia al bean. Se usará un objeto bean anterior en lugar de instanciar uno nuevo si se puede encontrar uno con el mismo id y scope . class Designa el nombre completo del paquete del bean. scope Indica el contexto en el que el bean debería estar disponible. Hay cuatro posibles valores: page , request , session , y application . type Especifica el tipo de la variable a la que se referirá el objeto. beanName Da el nombre del bean, como lo suministraríamos en el método instantiate de Beans. Esta permitido suministrar un type y un beanName , y omitir el atributo class .
  • 36. JSP: Acciones: setProperty Para obtener valores de propiedades de los beans que se han referenciado anteriormente. 2 usos: Después de un useBean . <jsp:useBean id=&quot;myName&quot; ... /> ... <jsp:setProperty name=&quot;myName“ property=&quot;someProperty&quot; ... /> Se ejecuta siempre que haya una solicitud.
  • 37. JSP: Acciones: setProperty Dentro de un useBean <jsp:useBean id=&quot;myName“ ... >    ...   <jsp:setProperty name=&quot;myName&quot; property=&quot;someProperty&quot; ... /> </jsp:useBean> Sólo se ejecuta cuando haya que instanciar un bean.
  • 38. JSP: Acciones: setProperty name Este atributo requerido designa el bean cuya propiedad va a ser seleccionada. El elemento jsp:useBean debe aparecer antes del elemento jsp:setProperty . property Este atributo requerido indica la propiedad que queremos seleccionar. Sin embargo, hay un caso especial: un valor de &quot;*&quot; significa que todos los parámetros de la petición cuyos nombres correspondan con nombres de propiedades del Bean serán pasados a los métodos de selección apropiados. value Este atributo opcional especifica el valor para la propiedad. Los valores string son convertidos automáticamente a lo que corresponda mediante el método estándard valueOf . No se pueden usar value y param juntos, pero si está permitido no usar ninguna.
  • 39. JSP: Acciones: setProperty param Este parámetro opcional designa el parámetro de la petición del que se debería derivar la propiedad. Si la petición actual no tiene dicho parámetro, no se hace nada: el sistema no pasa null al método seleccionador de la propiedad. Así, podemos dejar que el bean suministre los valores por defecto, sobrescribiéndolos sólo cuando el parámetro dice que lo haga. <jsp:setProperty name=&quot;orderBean“ property=&quot;numberOfItems&quot; param=&quot;numItems&quot; /> Si no indicamos nada, el servidor revisa todos los parametros de la petición e intenta encontrar alguno que concuerde con la propiedad indicada.
  • 40. Ejemplos Revisar ejemplos disponibles en: Cabecera JSP 1.2 Examples http://localhost:8080/jsp-examples/
  • 41. JSP 2.0 Algunas nuevas características de JSP 2.0 frente a 1.2 orientadas a simplificar su desarrollo son: Simple Expression Language (EL) Fragmentos JSP Ficheros de Tags Manejadores de Etiquetas Simplificados
  • 42. Simple Expression Language La Expression Language, está inspirada en los lenguajes de expresiones de ECMAScript y XPath Simplifican el uso de expresiones en JSPs. Permite la ejecución de expresiones fuera de los elementos de scripting de JSP Fue introducida con JSTL 1.0 como un mecanismo alternativo al uso de expresiones en Java para asignar valores a atributos Desde JSP 2.0 el JSP container entiende expresiones en EL EL es mucho más tolerante sobre variables sin valor ( null ) y realiza conversiones automáticas de datos Se puede habilitar (por defecto) o deshabilitar el uso de expresiones EL: <%@ page isScriptingEnabled=&quot;true|false&quot; isELEnabled=&quot;true|false &quot;%>
  • 43. Sintaxis de EL Una expresión en EL contiene variables y operadores ${expr} , donde expr es: Literales: true o false Integer Floating point String null Ejemplos: ${false} <%-- evaluates to false --%> ${3*8}
  • 44. Sintaxis de EL ${expr} , donde expr es: Operadores: Aritméticos: +, -, *, /, div, %, mod, - Lógicos: and, &&, or, ||, !, not Relacionales: ==, eq, !=, ne, <, lt, <, gt, <=, le, >=, ge Vacío, empty , valida si una variable es null o una collección no tiene elementos Llamadas a función, donde func es el nombre de la función y args es 0 o más argumentos separados por comas. Condicional: A ? B: C , como en C y Java Ejemplos: ${ (6 * 5) + 5 } <%-- evaluates to 35 --%> ${empty name}
  • 45. Sintaxis de EL ${expr} , donde expr es: Objetos implícitos: pageContext  contexto del JSP, puede usarse para acceder a objetos implícitos como request, response, session, out, servletContext, etc. Ejemplo : ${pageContext.response} param $(param.name) <-> request.getParameter (name) paramValues ${paramvalues.name) <-> request.getParamterValues(name ) header ${header.name} <-> request.getHeader(name) headerValues ${headerValues.name} <-> request.getHeaderValues(name) cookie ${cookie.name.value}  devuelve el valor de la primera cookie con el nombre dado initParam initParam.name  ServletContext.getInitparameter(String name)
  • 46. Sintaxis de EL ${expr} , donde expr es: Objetos implícitos: pageScope  puede acceder a objetos dentro del contexto de página ${pageScope.objectName} ${pageScope.objectName.attributeName}. requestScope ${requestScope.objectName} ${requestScope.objectName.attributeName} sessionScope ${sessionScope.name} applicationScope
  • 47. Ejemplos EL ${amount + 5} , añade 5 a una variable amount ${order.amount + 5} , añade 5 a la propiedad amount del bean order Lo mismo sería hacer: ${order['amount'] + 5} Para asignar un valor dinámico a un atributo podemos hacer: <input name=&quot;firstName&quot; value=&quot;${customer.firstName}&quot;>
  • 48. Ejemplos EL El operador ? : <select name=&quot;artist&quot;> <option value=&quot;1&quot; ${param.artist == 1 ? 'selected' : ''} > Vesica Pisces <option value=&quot;2&quot; ${param.artist == 2 ? 'selected' : ''}> Cortical Control <option value=&quot;3&quot; ${param.artist == 3 ? 'selected' : ''}> Vida Vierra </select>
  • 49. Ejemplos EL Revisar ejemplos de la documentación que viene con Tomcat 5.0 en sección: JSP 2.0 Examples, Expression Language http://localhost:8080/jsp-examples/
  • 50. Páginas de Error JSP Errores en servlets and JSPs desde su versión 2.0 vienen dadas en la variable javax.servlet.error.exception La propiedad errorData del objeto implícito pageContext expone información sobre el problema. javax.servlet.jsp.ErrorData tiene las siguientes propiedades: requestURI  la URI para la que falló la petición servletName  el nombre del servlet o JSP que falló statusCode  el código del fallo throwable  la excepción que causó la invocación de la página de error
  • 51. Páginas de Error JSP <%@ page isErrorPage=&quot;true&quot; contentType=&quot;text/html&quot; %> <%@ taglib prefix=&quot;log&quot; uri=&quot;http://jakarta.apache.org/taglibs/log-1.0&quot; %> Sorry, but things didn't work out as planned. I've logged as much as I know about the problem, so rest assured that my master will look into what's wrong as soon as he's sober. <jsp:useBean id=&quot;now&quot; class=&quot;java.util.Date&quot; /> <log:fatal> ----- ${now} Request that failed: ${pageContext.errorData.requestURI} Status code: ${pageContext.errorData.statusCode} Exception: ${pageContext.errorData.throwable} ----- </log:fatal>
  • 52. Páginas de Error JSP En el web.xml se puede indicar que esta es la página de error mediante los siguientes elementos: ... <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-code>500</exception-code> <location>/error.jsp</location> </error-page> ...
  • 53. web.xml en JSP 2.0 Aunque se sigue utilizando web.xml hay dos diferencias principales: Las reglas de web.xml están definidas en un XML Schema Las configuraciones específicas de JSP han sido movidas a un nuevo elemento XML Usar Schemas en vez de DTDs nos permite colocar los elementos XML de primer nivel en cualquier orden y realizar aún mas verificaciones sobre la sintaxis de web.xml Todos los elementos específicos a la configuración de un JSP se encuentran agrupados dentro del nuevo elemento <jsp-config> .
  • 54. Elemento jsp-config Su subelemento <jsp-property-group> es muy interesante. Permite aplicar configuraciones a un grupo de JSPs que conforman con un patrón de url específico ... <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config> ...
  • 55. Elemento jsp-config Elemento Descripción <el-ignored> Indica si ignorar o no las expresiones EL dentro de un JSP correspondiente al patrón URL indicado. Por defecto es false . <scripting-invalid> Si es true no se pueden introducir scriplets en el JSP. <page-encoding> Indica la codificación de caracteres para un conjunto de JSPs <include-coda> Indica el path correspondiente a un fichero a añadir al final de cada página JSP.. <include-prelude> Lo mismo pero al comienzo de cada JSP. <is-xml> Si se asigna a true la sintaxis de los JSPs es en XML.