Variables Implícitaseditar
Las Páginas JSP Incluyen Ciertas Variables Privilegiadas Sin Necesidad de Declararlas Ni Configurarlas:
variable | clase |
---|---|
pageContext |
javax.servlet.jsp.PageContext |
request |
javax.servlet.http.HttpServletRequest |
response |
javax.servlet.http.HttpServletResponse |
session |
javax.servlet.http.HttpSession |
config |
|
application |
javax.servlet.ServletContext |
out |
javax.servlet.jsp.JspWriter |
page |
java.lang.Object |
exception |
java.lang.Exception |
Directivaseditar
Son Etiquetas A Partir de les Cuales SE Genera Informació Que Puede Ser Utilitzat per El Motor de JSP. NO PRODUCT UNA SALIDA VISUEBLE AL USUARIO SINO QUE CONFIÇ COMO SE EJECUTARÁ LA PÁGINA JSP.
Su Sintaxis es:
<%@ directiva atributo="valor" %>
Las directivas disposa el fill:
-
include
: incluye el contenido de un fichero en la página mediante el fitxer el atributo.
taglib
: Importa Bibliotecas de Etiquetas (Biblioteques d’etiquetes) <%@ taglib uri="/tags/struts-html" prefix="html" %>
-
page
: especifica atributos relacionades con la página a procesar. Los Atributos Fill:
atributo | Sintaxis | utilització |
---|---|---|
import |
Importa classifica i paquetes java per a e utilizadas Dentro del fichero JSP. | |
session |
<%@ page session="false" %> |
especifica si utilitza los datos contenidos en sesión; Per defecte “true”. |
contentType |
especifica el tipo mimel del objeto “Resposta”; Por defecto “Text / HTML; CHARSET = ISO-8859-1”. | |
<%@ page buffer="12KB" %> |
buffer utilizado por el objeto escriptor “out”; Puedo Tomar El Valor de “Cap”; Per defecto “8kb”. | |
errorPage |
<%@ page errorPage="/path_to_error_page" %> |
especifica la ruta de la página d’error que será invocada en caso de producirse una excepción durante la ejecución de este fichero jsp. |
isErrorPage |
<%@ page isErrorPage="true" %> |
determina si este fichero jsp es una página que la manba excepciones. Únicamente A Este Tipo de Páginas Pueden Acceden A la variable Implícita “Excepció”, que contínua la excepció que provocó la llamada a la página d’error. |
Declaracioneseditar
Declaració de les variables de Declarar, FUNCIONES y dats estáticos.
<%! int maxAlumnosClase = 30; %>
scriptletseditar
Los scriptlets son Partes de código Java incrustadas entre los elements estàtics de la página ….
<% ... código Java ... %>
expressioneseditar
Las expressiones se avaluan Dentro de la Servlet. No deben Acabar en “;”.
<%= maxAlumnosClase + 1%>
<% String titulo = ""; if (request.getAttribute("titulo") != null) { titulo = (String) request.getAttribute ("titulo"); } %> ... <title><%=titulo%></title> ....
Etiquetaseditar
Etiquetas jsp para simplificar el código i dar alcalde funcionalidad.
Desenvolupament Sitios web UtiLizando Etiquetas presenta les ciertas ventajas Como:
- facilitar el aprendizaje.
- Facilitar el manteniment.
- fomentar la modularitat i la reutilització.
- Simplificar el Código y Reducir El Número de Línies Necesarias.
La seva sintaxi seria:
<%@ taglib uri="/taglib/lycka" prefix="lycka" %> ... <lycka:hola/> ...
A l’hora de generar el codi Java de l’Servlet, aquesta etiqueta hola serà interpretada pel Servidor d’aplicacions com pertanyent a la biblioteca d’etiquetes (Tag Library) Lycka. Aquesta biblioteca estarà identificar en el fitxer descriptor de la nostra aplicació (web.xml) amb el nom de recurs (URI) / taglib / Lycka.
<taglib-uri>/taglib/lycka</taglib-uri> <taglib-location>/WEB-INF/tags/lycka.tld</taglib-location>
Una implementació d’aquest fitxer descriptor, /WEB-INF/tags/lycka.tld podria ser:
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>simp</shortname> <uri>http://www.hachisvertas.net/jcs/taglibs/lycka</uri> <info>A simple sample tag library</info> <tag> <name>hola</name> <tagclass>org.lcyka.taglibs.miEtiqueta</tagclass> <bodycontent>empty</bodycontent> <info>Alaba la belleza de mi gata.</info> </tag> </taglib>
I per fi, el servidor d’aplicacions substituirà l’etiqueta pel seu codi Java associat, org.lcyka.taglibs.miEtiqueta:
package org.lcyka.taglibs; import ...; public class miEtiqueta extends TagSupport { public int doStartTag { try { pageContext.getOut().print("Mi gata es preciosa"); } catch (IOException ioe) { } return SKIP_BODY; }
I finalment el navegador mostraria:
Mi gata es preciosa
etiquetes JSPEditar
Són les etiquetes pertanyents a l’especificació JSP. Proporcionen una funcionalitat bàsica.
Un primer grup d’etiquetes proporciona funcionalitat a nivell de la pàgina d’una manera molt simple:
- < jsp: forward >, redirigeix la request a una altra URL
- < jsp: include >, inclou el text d’un fitxer dins de la pàgina
- < jsp: plugin >, descarrega un plugin de Java (una applet o un Bean).
Un segon grup permet manipular components JavaBean sense coneixements de Java.
- < jsp: useBean >, permet manipular un Bean (si no existeix, es crearà el Bean), especificant el seu àmbit (scope), la classe i el tipus.
- < jsp: getProperty >, obté la propietat especificada d’un bean prèviament declarat i l’escriu en l’objecte response.
- < jsp: setProperty >, estableix el valor d’una propietat d’un bean prèviament declarat.
Etiquetes JSTLEditar
Són proporcionades per Sun dins de la distribució de JSTL.
- core, iteracions, condicionals, manipulació d’URL i altres funcions generals.
- xml, per a la manipulació de XML i per XML-Transformation.
- sql, per gestionar connexions a bases de dades.
- i18n, per a la internacionalització i format de les cadenes de caràcters com xifres.
Etiquetes Struts TagLibEditar
Distribuïdes per Apache per a funcionar juntament amb el Framework de Struts.
- PHP
- Bean
- HTML
- Logic
- Nested
- vjgp
Etiquetes personalizadasEditar
Anteriorment hem vist un exemple per crear una etiqueta personalitzada emmagatzemada en la nostra pròpia biblioteca d’etiquetes.
per a desenvolupar etiquetes personalitzades, utilitzarem l’API de les biblioteques d’etiquetes (Tag Libraries).
L’API de les Servlet de Java és:
javax.servlet.*
L’API de JSP estén d’aquesta API,
javax.servlet.jsp.*
Finalment, l’API de les biblioteques d’etiquetes (Tag Libraries) estén d’aquesta última,
javax.servlet.jsp.tagext.*
El més rellevant d’aquesta API són:
- les interfícies
- Tag, que totes les etiquetes han d’implementar .
- BodyTag, estén a l’anterior i defineix mètodes addicionals per inspeccionar el cos d’una etiqueta.
- Les classes
- BodyContent , un gestor (handler) per llegir i escriure al cuerp o d’una etiqueta.
- BodyTagSupport, que implementa la interfície BodyTag.
- TagAttributeInfo, per obtenir la informació dels atributs de l’etiqueta declarats en el TLD.
- TagData, que conté els valors dels atributs.
- TagExtraInfo, per especificar informació extra d’una etiqueta, com les variables que introdueix en el codi o els atributs que seran validats.
- TagInfo, basat en la informació de la TLD.
- TagLibraryInfo, representa la informació d’una TLD.
- TagSupport, implementa la interfície Tag.
- VariableInfo, conté informació com el tipus i àmbit de les variables creades o modificades per l’etiqueta.
Podem trobar una descripció més detallada en http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/jsp/tagext/package-summary.html
Un altre exemple d’etiqueta podria ser el següent codi Java:
package org.lycka.taglibs; import ...; public class LowerCaseTag extends BodyTagSupport { public int doAfterBody() throws JspException { try { BodyContent body = getBodyContent(); JspWriter writer = body.getEnclosingWriter(); String bodyString = body.getString(); if ( bodyString != null ) { writer.print( bodyString.toLowerCase()); } } catch(IOException ioe) { throw new JspException("Error: IOException while writing to the user"); } return SKIP_BODY; } }
A l’trobar l’inici de l’etiqueta, el runtime primer s’invocarà el mètode doStart () un cop instanciada la classe. Pot retornar un dels següents valors:
- SKIP_BODY, no processa el contingut de el cos de l’etiqueta.
- EVAL_BODY_INCLUDE, avalua el cos de l’etiqueta.
- EVAL_BODY_TAG, avalua el cos de l’etiqueta i llança el resultat a un altre stream emmagatzemat en una propietat de l’etiqueta.
el mètode doAfterBody () després de processar el cos de l’etiqueta .
Finalment s’invocarà el mètode doEndTag (). Pot retornar:
- EVAL_PAGE, per seguir processant la pàgina JSP
- SKIP_PAGE, per deixar de processar la pàgina JSP, per ara redirigir la pàgina
Declarat al descriptor de la biblioteca com
<tag> <name>lowercase</name> <tagclass>org.lycka.taglibs.LowerCaseTag</tagclass> <bodycontent>JSP</bodycontent> <info>Put body in lowercase.</info> </tag>
Utilitzat en la pàgina JSP
<%@ taglib uri="/taglib/lycka" prefix="lycka" %> ... <lycka:lowercase>Esto es un EJEMPLO</lycka:lowercase>
I la seva sortida seria
esto es un ejemplo