JSP - Acciones
En este capítulo, discutiremos las acciones en JSP. Estas acciones utilizan construcciones en sintaxis XML para controlar el comportamiento del motor de servlets. Puede insertar dinámicamente un archivo, reutilizar componentes JavaBeans, reenviar al usuario a otra página o generar HTML para el complemento Java.
Solo hay una sintaxis para el elemento Action, ya que cumple con el estándar XML:
<jsp:action_name attribute = "value" />
Los elementos de acción son básicamente funciones predefinidas. La siguiente tabla enumera las acciones JSP disponibles:
S.No. | Sintaxis y propósito |
---|---|
1 | jsp:include Incluye un archivo en el momento en que se solicita la página. |
2 | jsp:useBean Busca o crea una instancia de un JavaBean. |
3 | jsp:setProperty Establece la propiedad de un JavaBean. |
4 | jsp:getProperty Inserta la propiedad de un JavaBean en la salida. |
5 | jsp:forward Reenvía al solicitante a una nueva página. |
6 | jsp:plugin Genera código específico del navegador que crea una etiqueta OBJECT o EMBED para el complemento de Java. |
7 | jsp:element Define elementos XML de forma dinámica. |
8 | jsp:attribute Define el atributo del elemento XML definido dinámicamente. |
9 | jsp:body Define el cuerpo del elemento XML definido dinámicamente. |
10 | jsp:text Se utiliza para escribir texto de plantilla en páginas y documentos JSP. |
Atributos comunes
Hay dos atributos que son comunes a todos los elementos de Acción: el id atributo y el scope atributo.
Atributo de identificación
El atributo id identifica de forma única el elemento Action y permite que se haga referencia a la acción dentro de la página JSP. Si la acción crea una instancia de un objeto, el valor de id se puede usar para hacer referencia a él a través del objeto implícito PageContext.
Atributo de alcance
Este atributo identifica el ciclo de vida del elemento Action. El atributo id y el atributo scope están directamente relacionados, ya que el atributo scope determina la vida útil del objeto asociado con el id. El atributo de alcance tiene cuatro valores posibles:(a) page, (b)request, (c)sessiony (d) application.
La acción <jsp: include>
Esta acción le permite insertar archivos en la página que se está generando. La sintaxis se ve así:
<jsp:include page = "relative URL" flush = "true" />
A diferencia del include directiva, que inserta el archivo en el momento en que la página JSP se traduce en un servlet, esta acción inserta el archivo en el momento en que se solicita la página.
La siguiente tabla enumera los atributos asociados con la acción de inclusión:
S.No. | Atributo y descripción |
---|---|
1 | page La URL relativa de la página que se incluirá. |
2 | flush El atributo booleano determina si el recurso incluido tiene su búfer vaciado antes de que se incluya. |
Ejemplo
Definamos los siguientes dos archivos (a)date.jsp y (b) main.jsp como sigue -
A continuación se muestra el contenido de la date.jsp archivo -
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
A continuación se muestra el contenido de la main.jsp archivo -
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:include page = "date.jsp" flush = "true" />
</center>
</body>
</html>
Ahora mantengamos todos estos archivos en el directorio raíz e intentemos acceder main.jsp. Recibirá el siguiente resultado:
The include action Example
Today's date: 12-Sep-2010 14:54:22
La acción <jsp: useBean>
los useBeanla acción es bastante versátil. Primero busca un objeto existente utilizando las variables id y scope. Si no se encuentra un objeto, intenta crear el objeto especificado.
La forma más sencilla de cargar un bean es la siguiente:
<jsp:useBean id = "name" class = "package.class" />
Una vez que se carga una clase de frijol, puede usar jsp:setProperty y jsp:getProperty acciones para modificar y recuperar las propiedades del bean.
La siguiente tabla enumera los atributos asociados con la acción useBean:
S.No. | Atributo y descripción |
---|---|
1 | class Designa el nombre completo del paquete del bean. |
2 | type Especifica el tipo de variable que hará referencia al objeto. |
3 | beanName Da el nombre del bean como lo especifica el método instantiate () de la clase java.beans.Beans. |
Analicemos ahora el jsp:setProperty y el jsp:getProperty acciones antes de dar un ejemplo válido relacionado con estas acciones.
La acción <jsp: setProperty>
los setPropertyaction establece las propiedades de un Bean. El Bean debe haber sido definido previamente antes de esta acción. Hay dos formas básicas de utilizar la acción setProperty:
Puedes usar jsp:setProperty después, pero fuera de un jsp:useBean elemento, como se indica a continuación -
<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
En este caso, el jsp:setProperty se ejecuta independientemente de si se creó una instancia de un nuevo bean o se encontró un bean existente.
Un segundo contexto en el que puede aparecer jsp: setProperty es dentro del cuerpo de un jsp:useBean elemento, como se indica a continuación -
<jsp:useBean id = "myName" ... >
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>
Aquí, jsp: setProperty se ejecuta solo si se creó una instancia de un nuevo objeto, no si se encontró uno existente.
La siguiente tabla enumera los atributos asociados con el setProperty acción -
S.No. | Atributo y descripción |
---|---|
1 | name Designa el bean cuya propiedad se establecerá. El Bean debe haber sido definido previamente. |
2 | property Indica la propiedad que desea establecer. Un valor de "*" significa que todos los parámetros de solicitud cuyos nombres coincidan con los nombres de las propiedades del bean se pasarán a los métodos de establecimiento apropiados. |
3 | value El valor que se asignará a la propiedad dada. Si el valor del parámetro es nulo o el parámetro no existe, la acción setProperty se ignora. |
4 | param El atributo param es el nombre del parámetro de solicitud cuyo valor va a recibir la propiedad. No puede usar tanto value como param, pero está permitido no usar ninguno. |
La acción <jsp: getProperty>
los getProperty La acción se usa para recuperar el valor de una propiedad dada, lo convierte en una cadena y finalmente lo inserta en la salida.
La acción getProperty tiene solo dos atributos, ambos obligatorios. La sintaxis de la acción getProperty es la siguiente:
<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>
La siguiente tabla enumera los atributos requeridos asociados con el getProperty acción -
S.No. | Atributo y descripción |
---|---|
1 | name El nombre del Bean que tiene una propiedad para recuperar. El Bean debe haber sido definido previamente. |
2 | property El atributo de propiedad es el nombre de la propiedad Bean que se va a recuperar. |
Ejemplo
Definamos un bean de prueba que se utilizará más adelante en nuestro ejemplo:
/* File: TestBean.java */
package action;
public class TestBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
Compile el código anterior en el generado TestBean.class archivo y asegúrese de haber copiado el TestBean.class en C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action carpeta y el CLASSPATH La variable también debe establecerse en esta carpeta:
Ahora use el siguiente código en main.jsparchivo. Esto carga el bean y establece / obtiene un parámetro de cadena simple:
<html>
<head>
<title>Using JavaBeans in JSP</title>
</head>
<body>
<center>
<h2>Using JavaBeans in JSP</h2>
<jsp:useBean id = "test" class = "action.TestBean" />
<jsp:setProperty name = "test" property = "message"
value = "Hello JSP..." />
<p>Got message....</p>
<jsp:getProperty name = "test" property = "message" />
</center>
</body>
</html>
Intentemos ahora acceder main.jsp, mostraría el siguiente resultado:
Using JavaBeans in JSP
Got message.... Hello JSP...
La acción <jsp: forward>
los forward action finaliza la acción de la página actual y reenvía la solicitud a otro recurso, como una página estática, otra página JSP o un servlet Java.
A continuación se muestra la sintaxis del forward acción -
<jsp:forward page = "Relative URL" />
La siguiente tabla enumera los atributos requeridos asociados con la acción de reenvío:
S.No. | Atributo y descripción |
---|---|
1 | page Debe constar de una URL relativa de otro recurso, como una página estática, otra página JSP o un servlet Java. |
Ejemplo
Reutilicemos los siguientes dos archivos (a) date.jsp y (b) main.jsp como sigue -
A continuación se muestra el contenido de la date.jsp archivo -
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
A continuación se muestra el contenido de la main.jsp archivo -
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:forward page = "date.jsp" />
</center>
</body>
</html>
Ahora mantengamos todos estos archivos en el directorio raíz e intentemos acceder main.jsp. Esto mostraría un resultado similar al siguiente.
Aquí descartó el contenido de la página principal y mostró el contenido de la página reenviada solamente.
Today's date: 12-Sep-2010 14:54:22
La acción <jsp: plugin>
los pluginLa acción se utiliza para insertar componentes Java en una página JSP. Determina el tipo de navegador e inserta el<object> o <embed> etiquetas según sea necesario.
Si el complemento necesario no está presente, descarga el complemento y luego ejecuta el componente Java. El componente Java puede ser un Applet o un JavaBean.
La acción del complemento tiene varios atributos que corresponden a las etiquetas HTML comunes que se utilizan para formatear los componentes de Java. los<param> El elemento también se puede utilizar para enviar parámetros al Applet o Bean.
A continuación se muestra la sintaxis típica del uso de la acción del complemento:
<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>
Unable to initialize Java Plugin
</jsp:fallback>
</jsp:plugin>
Puede probar esta acción usando algún subprograma si está interesado. Un nuevo elemento, el<fallback> , se puede utilizar para especificar una cadena de error que se enviará al usuario en caso de que falle el componente.
The <jsp:element> Action
The <jsp:attribute> Action
The <jsp:body> Action
los <jsp:element>, <jsp:attribute> y <jsp:body>las acciones se utilizan para definir elementos XML de forma dinámica. La palabra dinámicamente es importante, porque significa que los elementos XML se pueden generar en el momento de la solicitud en lugar de de forma estática en el momento de la compilación.
A continuación se muestra un ejemplo simple para definir elementos XML de forma dinámica:
<%@page language = "java" contentType = "text/html"%>
<html xmlns = "http://www.w3c.org/1999/xhtml"
xmlns:jsp = "http://java.sun.com/JSP/Page">
<head><title>Generate XML Element</title></head>
<body>
<jsp:element name = "xmlElement">
<jsp:attribute name = "xmlElementAttr">
Value for the attribute
</jsp:attribute>
<jsp:body>
Body for XML element
</jsp:body>
</jsp:element>
</body>
</html>
Esto produciría el siguiente código HTML en tiempo de ejecución:
<html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page">
<head><title>Generate XML Element</title></head>
<body>
<xmlElement xmlElementAttr = "Value for the attribute">
Body for XML element
</xmlElement>
</body>
</html>
La acción <jsp: text>
los <jsp:text>La acción se puede utilizar para escribir el texto de la plantilla en páginas y documentos JSP. A continuación se muestra la sintaxis simple para esta acción:
<jsp:text>Template data</jsp:text>
El cuerpo de la plantilla no puede contener otros elementos; solo puede contener texto y expresiones EL (Nota: las expresiones EL se explican en un capítulo posterior). Tenga en cuenta que en los archivos XML, no puede utilizar expresiones como${whatever > 0}, porque los signos mayores que son ilegales. En su lugar, use elgt forma, como ${whatever gt 0} o una alternativa es incrustar el valor en un CDATA sección.
<jsp:text><![CDATA[<br>]]></jsp:text>
Si necesita incluir un DOCTYPE declaración, por ejemplo para XHTML, también debe utilizar el <jsp:text> elemento de la siguiente manera -
<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>
Welcome to JSP Programming
</jsp:text></book></books>
</body>
</html>
Pruebe el ejemplo anterior con y sin <jsp:text> acción.