English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elementos de acción de JSP

Diferentes de los elementos de instrucción JSP, los elementos de acción JSP actúan en la fase de procesamiento de solicitudes. Los elementos de acción JSP se escriben en sintaxis XML.

Las acciones de JSP pueden insertar archivos dinámicamente, reutilizar componentes de JavaBean, redirigir a los usuarios a otras páginas, y generar código HTML para el Java Plugin.

Los elementos de acción tienen solo una sintaxis, que cumple con los estándares XML:

<jsp:action_name attribute="value"> />

Los elementos de acción son básicamente funciones predefinidas, la especificación JSP define una serie de acciones estándar, que se prefijan con JSP, y los elementos de acción estándar disponibles son los siguientes:

SintaxisDescripción
jsp:includeIntroduce un archivo en el momento en que se solicita la página.
jsp:useBeanBusca o ejemplifica un JavaBean.
jsp:setPropertyEstablece una propiedad de un JavaBean.
jsp:getPropertySalida de una propiedad de un JavaBean.
jsp:forwardRedirige la solicitud a una nueva página.
jsp:pluginGenera las etiquetas OBJECT o EMBED para el Java Plugin según el tipo de navegador.
jsp:elementDefine los elementos XML dinámicos.
jsp:attributeEstablece las propiedades de los elementos XML definidos dinámicamente.
jsp:bodyEstablece el contenido de los elementos XML definidos dinámicamente.
jsp:textPlantilla de escritura de texto utilizada en la página JSP y el documento.

Propiedades comunes

Todos los elementos de acción tienen dos propiedades: la propiedad id y la propiedad scope.

  • Propiedad id:

    La propiedad id es la identificación única del elemento de acción, y se puede referenciar en la página JSP. El valor de id creado por el elemento de acción se puede llamar a través de PageContext.

  • Propiedad scope:

    Esta propiedad se utiliza para identificar el ciclo de vida del elemento de acción. La propiedad id y la propiedad scope están directamente relacionadas, la propiedad scope define la duración de vida de los objetos asociados con el id. La propiedad scope tiene cuatro posibles valores: (a) page, (b) request, (c) session, y (d) application.

Elemento de acción <jsp:include>

El elemento de acción <jsp:include> se utiliza para incluir archivos estáticos y dinámicos. Esta acción inserta el archivo especificado en la página que se está generando. El formato de sintaxis es el siguiente:

<jsp:include page="dirección URL relativa" flush="true"> />

 Se ha presentado anteriormente la instrucción include, que introduce el archivo cuando el archivo JSP se convierte en Servlet, mientras que aquí la acción jsp:include es diferente, ya que la inserción del archivo ocurre en el momento en que se solicita la página.

A continuación se muestra la lista de atributos relacionados con la acción include.

AtributoDescripción
pageDirección URL relativa incluida en la página.
flushAtributo booleano, define si se actualiza el área de caché antes de incluir los recursos.

Ejemplo en línea

A continuación, definimos dos archivos date.jsp y main.jsp,el código se muestra a continuación:

Código del archivo date.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   La fecha de hoy es: <%= (new java.util.Date()).toLocaleString() %>
</p>

Código del archivo main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
!DOCTYPE html
<html>
<head>
<meta charset="utf-8">
<title>Web de Tutoriales Básicos(oldtoolbag.com)</title>
</head>
<body>
<h2>Ejemplo de acción include</h2>
<jsp:include page="date.jsp" flush="true" />
</body>
</html>

Ahora coloca estos dos archivos en la carpeta raíz del servidor y accede al archivo main.jsp. El resultado se mostrará como sigue:

Ejemplo de acción include
La fecha de hoy es: 2016-6-25 14:08:17

Elemento de acción <jsp:useBean>

jsp:useBean La acción se utiliza para cargar un JavaBean que se utilizará en la página JSP.

Esta función es muy útil, ya que nos permite aprovechar las ventajas de la reutilización de componentes Java.

La sintaxis más simple de la acción jsp:useBean es:

<jsp:useBean id="name" />

Después de que se cargue la clase, podemos modificar y recuperar las propiedades del bean mediante las acciones jsp:setProperty y jsp:getProperty.

A continuación, se muestra la lista de atributos relacionados con la acción useBean.

AtributoDescripción
classSe especifica el nombre completo del paquete del Bean.
typeSe especifica el tipo de variable de objeto que se referirá.
beanNameSe especifica el nombre del Bean a través del método instantiate() de java.beans.Beans.

Antes de proporcionar ejemplos específicos, permítenos ver primero los elementos de acción jsp:setProperty y jsp:getProperty:

Elemento de acción <jsp:setProperty>

jsp:setProperty se utiliza para configurar las propiedades de un objeto Bean ya instanciado, y tiene dos formas de uso. Primero, puedes usar jsp:setProperty fuera del elemento jsp:useBean (después), como se muestra a continuación:

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" ...>/>

En este momento, independientemente de si jsp:useBean encuentra un Bean existente o crea una nueva instancia de Bean, jsp:setProperty se ejecutará. La segunda forma de uso es colocar jsp:setProperty dentro del elemento jsp:useBean, como se muestra a continuación:

<jsp:useBean id="myName" ... >
...
   <jsp:setProperty name="myName" property="someProperty" ...>/>
</jsp:useBean>

En este momento, jsp:setProperty solo se ejecuta cuando se crea una nueva instancia de Bean, si se utiliza una instancia existente no se ejecuta jsp:setProperty.

La acción jsp:setProperty tiene los siguientes cuatro atributos, como se muestra en la tabla siguiente:

AtributoDescripción
nameEl atributo name es obligatorio. Representa qué Bean se debe configurar.
propertyLa propiedad property es obligatoria. Representa qué propiedad se va a establecer. Hay un uso especial: si el valor de property es "}}*" indica que todos los parámetros de solicitud que coinciden con los nombres y los nombres de las propiedades del Bean se pasarán a los métodos set de las propiedades correspondientes.
valueLa propiedad value es opcional. Se utiliza para especificar el valor de la propiedad del Bean. Los datos de cadena se convertirán automáticamente en números, boolean, Boolean, byte, Byte, char, Character en el objetivo clase mediante el método valueOf estándar. Por ejemplo, los valores de tipo boolean y Boolean (como "true") se convierten a través de Boolean.valueOf, los valores de tipo int e Integer (como "42" se convierte a través de Integer.valueOf.   value y param no pueden utilizarse al mismo tiempo, pero se puede utilizar uno de los dos.
paramparam es opcional. Especifica qué parámetro de solicitud se utilizará como el valor de la propiedad del Bean. Si no hay parámetros en la solicitud actual, no se realiza nada, el sistema no pasa null al método set de la propiedad del Bean. Por lo tanto, puede permitir que el Bean proporcione valores predeterminados para las propiedades, modificando los valores predeterminados solo cuando se especifica explícitamente un nuevo valor en los parámetros de solicitud.

El elemento de acción <jsp:getProperty>

La acción jsp:getProperty extrae el valor de la propiedad del Bean especificado, lo convierte en una cadena y luego lo muestra. El formato de sintaxis es el siguiente:

<jsp:useBean id="myName" ... />
...
<jsp:getProperty name="myName" property="someProperty" .../>

La siguiente tabla muestra las propiedades asociadas a getProperty:

AtributoDescripción
nameEl nombre de la propiedad del Bean que se va a buscar. El Bean debe estar definido.
propertyRepresenta el valor de la propiedad del Bean que se va a extraer

Ejemplo en línea

En el siguiente ejemplo utilizamos Bean:

package com.w3codebox.main;
public class TestBean {
   private String message = "基础教程网";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

Compilar el archivo de ejemplo superior TestBean.java :

$ javac TestBean.java

Después de la compilación, se generará en el directorio actual un TestBean.class archivo, Copia este archivo al directorio actual del proyecto JSP: WebContent/WEB-INF/classes/com/w3codebox/maindebajo ( com/w3codebox/La ruta del paquete 'main', no es necesario crearla manualmente).

A continuación, se muestra un diagrama de estructura de directorios en Eclipse:

A continuación, se muestra un ejemplo muy simple, que carga un Bean y luego configura/Leer su propiedad 'message'.

Ahora llamamos a este Bean en el archivo main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
!DOCTYPE html
<html>
<head>
<meta charset="utf-8">
<title>Web de Tutoriales Básicos(oldtoolbag.com)</title>
</head>
<body>
<h2>Ejemplo de uso de JavaBean por Jsp</h2>
<jsp:useBean id="test"> />
 
<jsp:setProperty name="test"> 
                    property="message" 
                    value="Tutoriales básicos..." />
 
<p>Información de salida....</p>
 
<jsp:getProperty name="test" property="message"> />
</body>
</html>

Accediendo al navegador, ejecutando los archivos anteriores, el resultado será el siguiente:

Elemento de acción <jsp:forward>

 La acción 'jsp:forward' redirige la solicitud a otra página. La etiqueta 'jsp:forward' tiene solo un atributo 'page'. El formato de sintaxis es el siguiente:

<jsp:forward page="dirección de URL relativa"> />

A continuación, se muestra una lista de atributos asociados con 'forward':

AtributoDescripción
pageLa propiedad 'page' contiene una URL relativa. El valor de 'page' puede proporcionarse directamente o calcularse dinámicamente en el momento de la solicitud, y puede ser una página JSP o un Servlet Java.

Ejemplo en línea

En el siguiente ejemplo, hemos utilizado dos archivos,分别是: date.jsp y main.jsp。

El código del archivo date.jsp es el siguiente:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   La fecha de hoy es: <%= (new java.util.Date()).toLocaleString() %>
</p>

Código del archivo main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
!DOCTYPE html
<html>
<head>
<meta charset="utf-8">
<title>Web de Tutoriales Básicos(oldtoolbag.com)</title>
</head>
<body>
<h2>Ejemplo de acción 'forward'</h2>
<jsp:forward page="date.jsp"> />
</body>
</html>

Ahora coloca estos dos archivos en la carpeta raíz del servidor y accede al archivo main.jsp. El resultado se mostrará como sigue:

La fecha de hoy es: 2016-6-25 14:37:25

Elemento de acción <jsp:plugin>

El elemento de acción 'jsp:plugin' se utiliza para insertar elementos OBJECT o EMBED necesarios para ejecutar Java Applet a través de complementos de Java en el navegador.

Si el plugin necesario no existe, se descarga el plugin y luego se ejecuta el componente Java. El componente Java puede ser un applet o un JavaBean.

El elemento de acción plugin tiene múltiples atributos correspondientes a elementos HTML para formatear el componente Java. El elemento param se puede usar para pasar parámetros al Applet o Bean.

A continuación, se muestra un ejemplo típico del uso del elemento de acción plugin:

<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
                           width="60" height="80">
   <jsp:param name="fontcolor" value="red" />
   <jsp:param name="background" value="black" />
 
   <jsp:fallback>
      No se puede inicializar el Java Plugin
   </jsp:fallback>
 
</jsp:plugin>

Si tiene interés, puede intentar usar applet para probar el elemento de acción jsp:plugin, el elemento <fallback> es un nuevo elemento que envía información de error al usuario cuando ocurre un error en el componente.

<jsp:element> 、 <jsp:attribute>、 elemento de acción jsp:body

<jsp:element> 、 <jsp:attribute>、 <jsp:body>La definición dinámica de elementos XML mediante elementos de acción. Lo dinámico es muy importante, lo que significa que los elementos XML se generan dinámicamente en tiempo de compilación y no estáticamente.

A continuación, se muestra un ejemplo de definición dinámica de elementos XML:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
!DOCTYPE html
<html>
<head>
<meta charset="utf-8">
<title>Web de Tutoriales Básicos(oldtoolbag.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
   Valor del atributo
</jsp:attribute>
<jsp:body>
   Cuerpo del elemento XML
</jsp:body>
</jsp:element>
</body>
</html>

El navegador accede a la siguiente página y muestra el siguiente resultado:


<jsp:text>elemento de acción

El elemento de acción <jsp:text> permite usar plantillas de escritura de texto en páginas JSP y documentos, el formato de sintaxis es el siguiente:

Datos de plantilla <jsp:text>/jsp:text

La plantilla de texto anterior no puede contener elementos repetidos, solo puede contener texto y expresiones EL (nota: las expresiones EL se presentarán en capítulos posteriores). Tenga en cuenta que no puedes usar expresiones como ${whatever > 0} en archivos XML, porque el símbolo > es ilegal. Puedes usar la expresión ${whatever gt 0} o insertar un valor dentro de una sección deCDATA.

<jsp:text><![CDATA[<br>]]></jsp:text

Si necesitas declarar DOCTYPE en XHTML, debes usar el elemento de acción <jsp:text>, ejemplo a continuación:

<jsp:text><![CDATA[<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">]]>
</jsp:text
<head><title>jsp:text action</title></head>
<body>
<books><book><jsp:text>  
    Bienvenido a Programación JSP
</jsp:text></book></books>
</body>
</html>

Puedes probar la diferencia entre usar <jsp:text> y no usar este elemento de acción.