Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Inicio
Casa
Índices
Buscar
Artículo al azar
Cambios recientes
English
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Editando
JavaServer Pages
(sección)
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
== Sintaxis == === Variables implícitas === Las páginas JSP incluyen ciertas variables privilegiadas sin necesidad de declararlas ni configurarlas: {| class="wikitable" |- align="center" ! Variable ! Clase |- | <code>pageContext</code> | <code>javax.servlet.jsp.PageContext</code> |- | <code>request</code> | <code>javax.servlet.http.HttpServletRequest</code> |- | <code>response</code> | <code>javax.servlet.http.HttpServletResponse</code> |- | <code>session</code> | <code>javax.servlet.http.HttpSession</code> |- | <code>config</code> | <code>javax.servlet.ServletConfig</code> |- | <code>application</code> | <code>javax.servlet.ServletContext</code> |- | <code>out</code> | <code>javax.servlet.jsp.JspWriter</code> |- | <code>page</code> | <code>java.lang.Object</code> |- | <code>exception</code> | <code>java.lang.Exception</code> |} === Directivas === Son etiquetas a partir de las cuales se genera información que puede ser utilizada por el motor de JSP. No producen una salida visible al usuario sino que configura cómo se ejecutará la página JSP. Su sintaxis es: <code> <%@ directiva atributo="valor" %> </code> Las directivas disponibles son: * <code>'''include'''</code>: Incluye el contenido de un fichero en la página mediante el atributo ''file''. ::<code><%@ include file="cabecera.html" %></code> * <code>'''taglib'''</code>: Importa bibliotecas de etiquetas (Tag Libraries) ::<code><%@ taglib uri="/tags/struts-html" prefix="html" %></code> * <code>'''page'''</code>: Especifica atributos relacionados con la página a procesar. Los atributos son: :{| class="wikitable" |- align="center" ! Atributo || Sintaxis || Utilización |- | <code>import</code> | <code><%@ page import="class; class" %></code> | Importa clases y paquetes Java para ser utilizadas dentro del fichero JSP. |- | <code>session</code> | <code><%@ page session="false" %></code> | Especifica si utiliza los datos contenidos en sesión; por defecto "true". |- | <code>contentType</code> | <code><%@ page contentType="class; class" %></code> | Especifica el tipo MIME del objeto "response"; por defecto "text/html; charset=ISO-8859-1". |- | <code>buffer</code> | <code><%@ page buffer="12KB" %></code> | Buffer utilizado por el objeto writer "out"; puede tomar el valor de "none"; por defecto "8KB". |- | <code>errorPage</code> | <code><%@ page errorPage="/path_to_error_page" %></code> | Especifica la ruta de la página de error que será invocada en caso de producirse una excepción durante la ejecución de este fichero JSP. |- | <code>isErrorPage</code> | <code><%@ page isErrorPage="true" %></code> | Determina si este fichero JSP es una página que maneja excepciones. Únicamente a este tipo de páginas pueden acceder a la variable implícita "exception", que contiene la excepción que provocó la llamada a la página de error. |} === Declaraciones === Nos permiten declarar variables, funciones y datos estáticos. <code> <%! int maxAlumnosClase = 30; %> </code> === Scriptlets === Los scriptlets son partes de código Java incrustadas entre los elementos estáticos de la página.... <code> <% ... código Java ... %> </code> === Expresiones === Las expresiones se evalúan dentro de la servlet. No deben acabar en ";". <code> <%= maxAlumnosClase + 1%> </code> El siguiente ejemplo pondría como título de la página el atributo "titulo" contenido en el objeto request: <code> <% String titulo = ""; if (request.getAttribute("titulo") != null) { titulo = (String) request.getAttribute ("titulo"); } %> ... <title><%=titulo%></title> .... </code> === Etiquetas === Etiquetas JSP para simplificar el código y dar mayor funcionalidad. Desarrollar sitios web utilizando etiquetas presenta ciertas ventajas como: * facilitar el aprendizaje. * facilitar el mantenimiento. * fomentar la modularidad y la reutilización. * simplificar el código y reducir el número de líneas necesarias. Su sintaxis sería: <code> <%@ taglib uri="/taglib/lycka" prefix="lycka" %> ... <lycka:hola/> ... </code> A la hora de generar el código Java de la Servlet, esta etiqueta '''hola''' será interpretada por el [[Servidor de aplicaciones|Servidor de Aplicaciones]] como perteneciente a la biblioteca de etiquetas (Tag Library) '''lycka'''. Esta biblioteca estará identificada en el fichero descriptor de nuestra aplicación (web.xml) con el nombre de recurso (URI) '''/taglib/lycka'''. <code> <taglib-uri>/taglib/lycka</taglib-uri> <taglib-location>/WEB-INF/tags/lycka.tld</taglib-location> </code> Una implementación de este fichero descriptor, /WEB-INF/tags/'''lycka.tld''' podría ser: <code> <?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> </code> Y por fin, el servidor de aplicaciones sustituirá la etiqueta por su código Java asociado, '''org.lcyka.taglibs.miEtiqueta''': <code> 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; } </code> Y finalmente el '''navegador''' mostraría: Mi gata es preciosa ==== Etiquetas JSP ==== Son las etiquetas pertenecientes a la especificación JSP. Proporcionan una funcionalidad básica. Un primer grupo de etiquetas proporciona funcionalidad a nivel de la página de una manera muy simple: * '''<jsp:forward>''', redirige la request a otra URL * '''<jsp:include>''', incluye el texto de un fichero dentro de la página * '''<jsp:plugin>''', descarga un plugin de Java (una [[applet]] o un Bean). Un segundo grupo permite manipular componentes JavaBean sin conocimientos de Java. * '''<jsp:useBean>''', permite manipular un [[Bean (informática)|Bean]] (si no existe, se creará el Bean), especificando su ámbito (scope), la clase y el tipo. * '''<jsp:getProperty>''', obtiene la propiedad especificada de un bean previamente declarado y la escribe en el objeto response. * '''<jsp:setProperty>''', establece el valor de una propiedad de un bean previamente declarado. ==== Etiquetas JSTL ==== Son proporcionadas por Sun dentro de la distribución de [[JSTL]]. * '''core''', iteraciones, condicionales, manipulación de URL y otras funciones generales. * '''xml''', para la manipulación de XML y para XML-Transformation. * '''sql''', para gestionar conexiones a bases de datos. * '''i18n''', para la internacionalización y formateo de las cadenas de caracteres como cifras. ==== Etiquetas Struts TagLib ==== Distribuidas por [https://web.archive.org/web/20070624063648/http://struts.apache.org/1.x/struts-taglib/index.html Apache] para funcionar junto con el [[Framework]] de Struts. * '''PHP''' * '''Bean''' * '''HTML''' * '''Logic''' * '''Nested''' * '''vjgp ==== Etiquetas personalizadas ==== Anteriormente hemos visto un ejemplo para crear una etiqueta personalizada almacenada en nuestra propia biblioteca de etiquetas. Para desarrollar etiquetas personalizadas, utilizaremos la API de las bibliotecas de etiquetas (Tag Libraries). La API de las Servlet de Java es: <code> javax.servlet.* </code> La API de JSP extiende de esta API, <code> javax.servlet.jsp.* </code> Finalmente, la API de las bibliotecas de etiquetas (Tag Libraries) extiende de esta última, <code> javax.servlet.jsp.tagext.* </code> Lo más relevante de esta API son: * Las [[Interfaz (Java)|interfaces]] ** Tag, que todas las etiquetas deben implementar. ** BodyTag, extiende a la anterior y define métodos adicionales para inspeccionar el cuerpo de una etiqueta. * Las clases ** BodyContent, un manejador (handler) para leer y escribir en el cuerpo de una etiqueta. ** BodyTagSupport, que implementa la interfaz BodyTag. ** TagAttributeInfo, para obtener la información de los atributos de la etiqueta declarados en el TLD. ** TagData, que contiene los valores de los atributos. ** TagExtraInfo, para especificar información extra de una etiqueta, como las variables que introduce en el código o los atributos que serán validados. ** TagInfo, basado en la información de la TLD. ** TagLibraryInfo, representa la información de una TLD. ** TagSupport, implementa la interfaz Tag. ** VariableInfo, contiene información como el tipo y ámbito de las variables creadas o modificadas por la etiqueta. Podemos encontrar una descripción más detallada en http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/jsp/tagext/package-summary.html Otro ejemplo de etiqueta podría ser el siguiente código Java: <code> 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; } } </code> Al encontrar el inicio de la etiqueta, el runtime primero se invocará el método doStart() una vez instanciada la clase. Puede devolver uno de los siguientes valores: * SKIP_BODY, no procesa el contenido del cuerpo de la etiqueta. * EVAL_BODY_INCLUDE , evalúa el cuerpo de la etiqueta. * EVAL_BODY_TAG , evalúa el cuerpo de la etiqueta y lanza el resultado a otro stream almacenado en una propiedad de la etiqueta. El método doAfterBody() después de procesar el cuerpo de la etiqueta. Finalmente se invocará el método doEndTag(). Puede devolver: * EVAL_PAGE, para seguir procesando la página JSP * SKIP_PAGE, para dejar de procesar la página JSP, para por ejemplo redirigir la página Declarado en el descriptor de la biblioteca como <code> <tag> <name>lowercase</name> <tagclass>org.lycka.taglibs.LowerCaseTag</tagclass> <bodycontent>JSP</bodycontent> <info>Put body in lowercase.</info> </tag> </code> Utilizado en la página JSP <code> <%@ taglib uri="/taglib/lycka" prefix="lycka" %> ... <lycka:lowercase>Esto es un EJEMPLO</lycka:lowercase> </code> Y su salida sería esto es un ejemplo
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Editando
JavaServer Pages
(sección)
Añadir idiomas
Añadir tema