English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
Sintaxis | Descripción |
---|---|
jsp:include | Introduce un archivo en el momento en que se solicita la página. |
jsp:useBean | Busca o ejemplifica un JavaBean. |
jsp:setProperty | Establece una propiedad de un JavaBean. |
jsp:getProperty | Salida de una propiedad de un JavaBean. |
jsp:forward | Redirige la solicitud a una nueva página. |
jsp:plugin | Genera las etiquetas OBJECT o EMBED para el Java Plugin según el tipo de navegador. |
jsp:element | Define los elementos XML dinámicos. |
jsp:attribute | Establece las propiedades de los elementos XML definidos dinámicamente. |
jsp:body | Establece el contenido de los elementos XML definidos dinámicamente. |
jsp:text | Plantilla de escritura de texto utilizada en la página JSP y el documento. |
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.
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.
Atributo | Descripción |
---|---|
page | Dirección URL relativa incluida en la página. |
flush | Atributo booleano, define si se actualiza el área de caché antes de incluir los recursos. |
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
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.
Atributo | Descripción |
---|---|
class | Se especifica el nombre completo del paquete del Bean. |
type | Se especifica el tipo de variable de objeto que se referirá. |
beanName | Se 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:
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:
Atributo | Descripción |
---|---|
name | El atributo name es obligatorio. Representa qué Bean se debe configurar. |
property | La 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. |
value | La 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. |
param | param 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. |
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:
Atributo | Descripción |
---|---|
name | El nombre de la propiedad del Bean que se va a buscar. El Bean debe estar definido. |
property | Representa el valor de la propiedad del Bean que se va a extraer |
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:
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':
Atributo | Descripción |
---|---|
page | La 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. |
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
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>、 <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:
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.