Sie sind auf Seite 1von 13

11.

4 JSP
Una de las limitaciones de los servlets radica en que la generacion de pantallas HTML se hace en su interior. Aunque el documento base en HTML sea generado externamente y guardado como archive para posteriormente ser leido por el servlet, en algun momento el disenador de pantallas debera interactuar con el servlet y la programacion en Java. En general, la tarea de diseno de pantallas en HTML recae en el disenador grafico mas que en el desarrollador de software; por lo tanto, es una desventaja para el disenador grafico, tener que programar en un lenguaje como Java. Por otro lado, el desarrollador de software es normalmente el responsable de la programacion. Para simplificar la tarea del diseno de pantallas en el cliente, bajo la tecnologia de Java, se creo la tecnologia de Java Server Pages 0SP), la cual agrega un nivel adicional de procesamiento sobre los servlets y simplifica su programacion. En la figura 11.12 se muestra un esquema del funcionamiento de los archives JSP. El navegador solicita un archivo JSP (en lugar de un documento HTML o servlet, como se hacia anteriormente). El archivo JSP, con terminacion ".jsp" (servlet-jspjsp), debe pro-

Figura 11.12 Esquema de una arquitectura cliente-servidor para Internet con solicitudes de servlets y envio de documentos en HTML generados dinamicamente por el servlet.

cesarse para generar un servlet (servlet-jsp]avz). El servlet generado es nuevamente un programa en Java (servlet-jsp.fova), el cual debe compilarse. Una vez compilado, el programa (servlet.class) se ejecuta para obtener como resultado un documento HTML generado dinamicamente y enviado al navegador. Notese que en el momento de generar el servlet, se genera un segundo archivo de tipo HTML, el cual es posteriormente leido para generar el archivo HTML resultante. De tal manera se cumple el objetivo anterior, y el disenador grafico hace su diseno mediante un lenguaje de alto nivel que no involucra la programacion en Java.

614

CAP. 11 PROGRAMAClCN CON HTML, SERVLETS Y JSP

El lenguaje de JSP se basa en XML13 (extensible Markup Language), al cual se le agregan etiquetas especificas para JSP, ademas de reconocer las etiquetas ya definidas en HTML. Existen dos niveles de programacion. El primero de ellos, de mas alto nivel dirigido a los disenadores graficos, se orienta hacia el estilo de XML, mientras que el segundo nivel esta dirigido mas hacia los desarrolladores de software utilizando programacion mas cercana a Java. El segundo nivel contiene programacion equivalente a las llamadas de alto nivel. Comenzamos con el nivel mas bajo para introducir la programacion en JSP.

11.4.1 Scripts
JSP permite insertar scripts o codigo en Java mediante etiquetas que comienzan y terminan con "%". Dado que el codigo en Java debe ser insertado de manera apropiada dentro de un servlet en el momento de procesar el archive, es necesario seguir ciertas guias. Declaraciones. Es importante distinguir entre expresiones y declaraciones, ya que las declaraciones se traducen en atributos de la clase, mientras que las expresiones se insertan dentro de metodos. Las declaraciones tienen la forma <%! declaracion %>, donde declaration se inserta en la seccion de atributos de un servlet, de manera externa a los metodos. Por ejemplo, para declarar dos variables de tipo String correspondientes a un login y un password, y con un valor inicial, se haria lo siguiente: <HTML> <HEAD> <TITLE> Si sterna de </TITLE> </HEAD> <BODY> <H1>SISTEMA <%! String <%! String </BODY> </HTML>

Reservaciones de Vuelo

DE RESERVACIONES DE VUELO</H1> login = "alfredo"; %> password = "weitzenfeld"; %>

Expresiones. Las expresiones son el corazon de JSP; ya que permiten de manera muy sencilla insertar el resultado de expresiones en Java dentro de un documento en HTML. Las expresiones tienen la forma <%= expression %>, donde la expresion que se evalua y el resultado se insertan en el archivo HTML generado. Este forma to, que es equivalente al formato de tipo XML, tiene como inicio la etiqueta <jsp:expression> seguido por la expresion y finalizado por la etiqueta </jsp:expressions Por ejemplo, consideremos la siguiente extension al ejemplo 11.6 correspondiente a la forma de entrada: Ejemplo 11.7 Ejemplo de la forma de entrada en servlet.
<HTML> <HEAD> <TITLE>

Si sterna de Reservaciones de Vuelo

JSP

615

<%! String login = "alfredo"; %> <%! String password = "weitzenfeld"; %> Forma de Entrada <FORMx/P>

</TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1>

<PxINPUT TYPE="SUBMIT" VALUE="Registrarse por Primera Vez" NAME=IIbotonl"x/P> <P>Login: <INPUT TYPE=IITEXT" NAME="login11 SIZE="20" VALUE="<%=login%>"x/P> <P>Password: <INPUT TYPE="PASSWORD" NAME="password11 SIZE="20" VALUE="<%=password%>"x/P> <PxINPUT type=MSUBMITM VALUE="OKM NAME=Mboton2"> <INPUT TYPE="SUBMIT11 VALUE="Sali r" NAME="boton31Ix/P>

</FORM> </BODY> </HTML>

Notese los siguientes aspectos: Se agregaron dos declaraciones de cadenas cuyos valores son insertados en los campos de texto correspondientes. Los valores insertados son el resultado de la expresion de asignacion. En la figura 11.13 se muestra el resultado del ejemplo 11.7, el cual consiste en llenar los campos de texto con los valores insertados dentro del documento JSP.

Figura 11.13 Despliegue en el navegador del ejemplo 11.7 de documento JSP con valores insertados dentro del archive.

Scriptlets. Las expresiones vistas hasta el momento son suficientes para insertar valores en el documento HTML resultante. Sin embargo, tienen un alcance limitado. Por tal motivo, JSP define scriptlets con formato <% codigo %>, el cual permite insertar codigo general de Java. En el ejemplo 11.8 se muestra el uso de los scriptlets, donde se despliega una tabla de tamano variable dependien-

616

CAP. 11 PROGRAMACION CON HTML, SERVLETS Y JSP

te de los valores asignados por el programador durante las declaraciones de las variables, como se muestra a continuacion: Ejemplo 11.8 Ejemplo de una tabla de tamano variable con datos de salida.
<HTML> <HEAD> <TITLE> Si sterna de Reservaciones de Vuelo

</TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <%! int filas = 5; %>

<%! int columnas = 3; %> <P>Tabla de Salida (Filas: <%=filas%>, Columnas: <%=columnas%>)</P> <TABLE BORDER=10>

<% for (int i=0; i<filas; i++) { %> <TR> <% for (int j=0; j<columnas; j++) { %>
<TD>Reserva <%=i+l%>.<%=j+l%x/TD> <% } %>

</TR> <% } %> </TABLE> <FORM> <PxINPUT type="SUBMIT" VALUE=lfOK" NAME="boton2"> <INPUT TYPE=nSUBMIT" VALUE="Salir" NAME="boton3"x/P> </FORM> </BODY> </HTML>

Notense los siguientes aspectos: Se agregaron dos declaraciones de enteros correspondientes a los valores de las filas y columnas de las tablas que seran generadas en el despliegue. Se imprime el valor de estas dos variables mediante expresiones de asignacion. Se insertan dos scriptlets correspondientes a las instrucciones "for", las cuales controlan el numero de veces que se van a desplegar los elementos de la tabla. Notese que se debe agregar un scriptlet "}" al final de la impresion de la tabla para finalizar la instruccion del "for". Dentro de la tabla se asigna de manera dinamica la numeracion de la fila y columna correspondientes. En la figura 11.14 se muestra el resultado del ejemplo 11.8, el cual consiste en llenar los campos de texto con los valores insertados dentro del documento JSR Importer. Para facilitar el uso de clases ya definidas, es posible importarlas al archivo de manera analoga a la importacion de clases realizada durante la definicion de nuevas clases en Java. Las importaciones tienen la forma <%@ page import importacion %>, donde importacion sigue el formato tradicional de Java, aunque definido entre comillas, como se muestra a-continuacion:
<HTML> <HEAD>

JSP

617

Figura 11.14

Despliegue en el navegador del ejemplo 11.8 de documento JSP con la tabla generada de tamaho variable.

<TITLE>

Si sterna de Reservaciones de Vuelo </TITLE> </HEAD>


<BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1>

<%@ page import="java.util.*" %> </BODY> </HTML>

Incluir. En un archive de JSP es posible incluir otros archives. El formato para llevar a cabo esta tarea es <%@ include file=arc/?7vo %> o < j s p : i n c l u d e page= archive />, donde archivo puede estar en cualquier formato y terminacion, incluyendo HTML y JSP, como se muestra a continuacion: <HTML>
<HEAD> <TITLE>

Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <%@ include file="archivol.html" %> <jsp:include page="archivo2.html" /> </BODY> </HTML> Vale la pena observar que la diferencia entre los dos formatos es que el primero se hace durante la solicitud, mientras que el segundo se hace durante la traduccion del archivo. Continuar. En un archivo de JSP es posible especificar el siguiente archivo que se desea desplegar. El formato para continuar es <jsp:forward page=arc/77'vo

618

CAP. 11 PROGRAMACION CON HTML, SERVLETS Y JSP

/>, donde archive puede estar en cualquier formato y terminacion, incluyendo HTML y JSP. Consideremos el ejemplo 11.9 que toma la forma de entrada del ejemplo 11.7 y le agrega un manejo de accion en la pantalla /ejemplo/ UsuarioJSP. jsp, como se muestra a continuacion: Ejemplo 11.9 Ejemplo de continuacion de un documento JSP a otro. <HTML> <HEAD> <TITLE> Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1>

<FORM ACTION= II /ejemplo/Usuario:SP.jsp 11 METHOD="POSTII></P> <PxINPUT TYPE="SUBMIT11 VALUE="Registrarse por Primera Vez" NAME="botonll></P> <P>Login: <INPUT TYPE="TEXT" NAME="login" SIZE="20llx/P> <P> <INPUT type="SUBMITM VALUE="OKn NAME="botonII> <INPUT TYPE="SUBMIT" VALUE="Sali r" NAME="boton"x/P> </FORM> </BODY> </HTML>

<P>Password: <INPUT TYPE="PASSWORD" NAME="password" SIZE="20"x/P>

Notese el siguiente aspecto: Se utiliza el metodo "POST" en la forma para evitar el despliegue de los parametros cuando se llama el siguiente archivo /ejemplo/UsuarioJSP. jsp, correspondiente a la accion. El archivo /ejemplo/UsuarioJSP. jsp es el encargado de leer los parametros insertados por el usuario y decidir cual es el siguiente archivo de continuacion como se muestra en seguida: Ejemplo 11.9 (continuaci6n) Validacion del login y password y presentacion del resultado (archivo UsuarioJSP.jsp). <HTML> <HEAD> <TITLE> Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <%! String loginBD = "alfredo"; %> <%! String passwordBD = "weitzenfeld"; %> <%! String login = ""; %> <%! String password = ""; %> <%! String showPage = ""; %> <%! String action = ""; %> <%! String mensaje = ""; %> <% action = request.getParameter("boton"); if (action.equals("Salir") == true) mensaje=nSalida del si sterna";

JSP

619

%> <jsp:forward page="<%= showPage %>" /> </BODY> </HTML>

else if (action.equalsC'OK") == true) { login = request.getParameterC'login") ; password = request.getParameterC'password"); if (login.equals(loginBD) == true && password.equals(passwordBD) == true) mensaje= II Bienvenido," + login; else mensaje="Usuario desconocido"; } else mensaje=action; showPage = "/ejemplo/mensajePage.jsp?mensaje=" + mensaje;

Notense los siguientes aspectos: Se declaran ciertas variables en el archive, entre ellas loginBD y passwordBD, que simulan los valores de una base de datos con los cuales se validan los datos insertados por el usuario. El resto de las variables, login, password, showPage, action y mensaje son todas temporales que seran utilizadas mas adelante en el archivo. Se obtiene el nombre del boton presionado mediante request.getParameter("boton") y se guarda en la variable action, del valor obtenido en action y de la validacion del login y password se guardara en mensaje el mensaje que se enviara como parametro al archivo /ejemplo/mensajePage.jsp que se desplegara a continuacion. La ultima accion es el forward que solicita el despliegue de la siguiente pagina. El archivo /ejemplo/mensajePage. jsp se muestra a continuacion: Ejemplo 11.9 (continuation) Despliegue de pantalla mensaje con resultados (archivo mensajePage.jsp).
<HTML> <HEAD> <TITLE> Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1>

<H2><%= request.getParameter("mensaje") %></H2> </BODY> </HTML> Notese el siguientes aspecto: Se obtiene el mensaje mediante el nombre asignado originalmente al parametro, el cual corresponde a "mensaje".

En la figura 11.15 se muestra el despliegue en caso de que el usuario se haya validado correctamente. Es importante resaltar que el nombre del documento y los parametros asignados en ningun momento son vistos por el usuario.
620 CAP. 11 PROGRAMACION CON HTML, SERVLETS Y JSP

Figura 11.15

Despliegue en el navegador del ejemplo 11.9 de documento JSP con la bienvenida del usuario recien reglstrado.

Comentarios. Aunque se pueden utilizar los comentarios de HTML, JSP incluye una etiqueta de comentario con formato <%-- comentarios -->.

11.4.2 JavaBeans
Una de las limitaciones de HTML y la programacion en Internet es como almacenar parametros insertados por el usuario en el navegador y, en general, como administrar estos parametros. Para ello, JSP define los JavaBeans, los cuales se encargan de almacenar de manera temporal los parametros generados por el usuario o que seran enviados de regreso. Aunque HTML permite enviar parametros entre paginas, estos son enviados como concatenaciones de texto, metodo que ofrece poca flexibilidad. JavaBeans permite instanciar objetos en el servidor donde los parametros seran almacenados. El formato para instanciar un bean es el siguiente:
<jsp:useBean id="nombre" class="c7ase" scope=IIa7cance" />

El nombre corresponde al identificador para referirse al bean instanciado, en otras palabras, el objeto creado. La clase corresponde a la estructura que define al bean y de la cual se instanciara el objeto. El alcance especifica la vida del bean: page, solo en la pagina actual; request, durante el procesamiento de cualquier solicitud que se haga desde la pagina actual; session, durante la sesion de usuario que puede abarcar el despliegue y solicitud de multiples paginas; y application, que permite ser compartido por todos los usuarios. Por ejemJSP

621

plo, en la siguiente linea se instancia un bean llamado ejemploBean de la clase "ejemplos.EjemploBean" con alcance a lo largo de toda la sesion del usuario.
<jsp:useBean id="ejemploBean" class="ejemp~los.EjemploBean 11 scope="session" />

El formato del bean es una clase simple de Java, la cual debe incluir metodos que permitan leer y escribir parametros. For ejemplo, a continuacion se muestra la clase ejemplos.EjemploBean, la que cuenta con metodos para leer y escribir dos valores: filas y columnas, las dos, en este caso, de tipo entero.
package ejemplos; public class EjemploBean { private int filas = 1; private int columnas = 1; public int getFilasQ { return filas; } public int getColumnasQ { return columnas; } public void setFilas(int n) { filas = n; } public void setColumnas(int n) { columnas = n; } }

Para leer los parametros guardados en el bean se utiliza la siguiente llamada: <jsp:getProperty name="no/nbre" property="prop7edacT value= I Va7or" /> El nombre corresponde al identificador para referirse al bean ya instanciado. La propiedad especifica el metodo que sera llamado. Para generar el nombre completo del metodo se debe agregar un get y pasarse a mayuscula la primera letra del nombre de la propiedad. Por ejemplo, en las siguientes lineas se hacen llamadas a los metodos getFilas y getColumnas de la clase ejemplos.EjemploBean, respectivamente.
<jsp:getProperty name="ejemploBean" property="filas" /> <jsp:getProperty name="ejemploBean" property="columnas" />

Estas dos llamadas son equivalentes a las dos expresiones siguientes:


<%=ejemploBean.getFilas(); %> <%=ejemploBean.getColumnas(); %>

Para escribir parametros en el bean se utiliza la siguiente llamada: <jsp:setProperty name="nombre" property="prop?ec/acf" /> El nombre corresponde al identificador para referirse al bean ya instanciado. La propiedad especifica el metodo que sera llamado. Para generar el nombre completo del metodo se debe agregar un set y pasarse a mayuscula la primera letra del nombre de la propiedad. El valor especifica el valor que sera pasado como parametro en la llamada. Por ejemplo, en las siguientes lineas se hacen llamadas a los metodos setFilas y setColumnas, con valores "5" y "3", de la clase ejemplos.EjemploBean.
<jsp:setProperty name="ejemploBean11 property="filas 11 valor= M 5" /> <jsp:setProperty name=IIejemploBean11 property="columnas" valor="3" />
622 CAP. 11 P R O G R A M A C I O N CON HTML, SERVLETS Y JSP

Estas dos llamadas son equivalentes a las siguientes expresiones, respectivamente.


<%= ejemploBean.setFilas(5); %> <%= ejemploBean.setColumnas(3); %>

En el ejemplo 11.12 se muestra el uso de los JavaBeans, donde se utilizara el bean para guardar los valores de las filas y columnas del ejemplo 11.10. Ejemplo 11.10 Ejemplo de una tabla de tamano variable con datos de salida.
<HTML> <HEAD> <TITLE>

Si sterna de Reservaciones de Vuelo


</TITLE> </HEAD> <BOOY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <%! int filas; %>

<%! int columnas; %> <jsp:useBean id=IlejemploBean" class=llejemplos.EjemploBeanIIscope="session" /> <jsp:setProperty name="ejemploBean" property="filas" value="5" /> <jsp:setProperty name=llejemploBean" property="columnas11 value="3" /> <P>Tabla de Salida (Filas: <jsp:getProperty name=llejemploBean" property="filas" /> , Columnas:

<jsp:getProperty name="ejemploBean" property="columnas" /> )</P>


<% filas = ejemploBean.getFilasO; %> <% columnas = ejemploBean.getColumnas(); %>
<TABLE BORDER=10>

<% for (int i=0; i<filas; i++) { %> <TR>

</TR> <% } %> </TABLE> <FORM> <PxINPUT type="SUBMIT11 VALUE=nOKn NAME="boton2"> <INPUT TYPE="SUBMITM VALUE="Sali r" NAME=IIboton3"x/P> </FORM> </BODY> </HTML>

<% for (int j=0; j<columnas; j++) { %> <TD>Reserva <%=i +!%>.<%=j +1%></TD> <% } %>

Notense los siguientes aspectos: Se agregaron dos declaraciones de enteros correspondientes a los valores de las filas y columnas de las tablas, aunque sin valor inicial. Se instancia un bean donde se guardaran los valores de las filas y columnas. Se escriben los valores de las filas y columnas en el bean mediante la llamada setProperty.

JSP

623

Se imprime el valor de estas dos variables mediante llamadas getProperty al bean. Se asignan los valores de estas dos variables en las variables locales filas y columnas a traves de scriptlets. Se insertan los scriptlets correspondientes a las instrucciones "for", las cuales controlan el numero de veces que se van a desplegar los elementos de la tabla. Notese que se debe agregar un scriptlet "}" al final de la impresion de la tabla para finalizar la instruccion del "for". Dentro de la tabla se asigna de manera dinamica la numeracion de la fila y columna correspondiente. El resultado del ejemplo 11.10 es similar al del ejemplo 11.8 que se muestra en la figura 11.14. La gran ventaja de este esquema es que los datos pueden compartirse mas alia de la pagina actual, algo que no era posible con la declaracion de variables locales. A continuacion, en el ejemplo 11.11 se muestra una extension al ejemplo 11.9, pero esta vez se agrega un bean para guardar los datos insertados por el usuario. Ejemplo 11.11 Ejemplo de continuacion de un documento JSP a otro utilizando un bean.
<HTML> <HEAD> <TITLE> Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <jsp:useBean id="usuarioBean" class="ejemplos.Usuar-ioBean" scope="session" />

<FORM ACTION=II/ejemplo/Usuario3SPBean.jsp11 METHOD="POSTIIx/P> <PxINPUT TYPE="SUBMIT11 VALUE="Registrarse por Primera Vez" NAME=11botonIlx/P> <P>Login: <INPUT TYPE="TEXT" NAME="login" SIZE=II20"x/P> <P>Password: <INPUT TYPE="PASSWORD" NAME="password" SIZE="20"x/P> <P> <INPUT type="SUBMIT" VALUE="OK" NAME="boton"> <INPUT TYPE="SUBMIT" VALUE="Salir" NAME="boton"x/P>

</FORM> </BODY> </HTML>

Notense los siguientes aspectos: Se instancia un bean llamado UsuarioBean, el cual se mostrara mas adelante. Se especifica como direccion donde se procesara la accion al archive /ejemplo/UsuarioDSPBean.jsp. El resto de la especificacion es similar a la del ejemplo 11.9. El archivo UsuarioBean. Java se muestra a continuacion:
624 CAP. 11 PROGRAMACION CON HTML, SERVLETS Y JSP

Ejemplo 11.11 (continuation) Validation del login y password (archivo UsuarioBean.jsp).


public class UsuarioBean { private String loginBD = "alfredo"; private String passwordBD = "weitzenfeld"; private String login = ""; private String password = ""; public String getLoginQ { return login; } public String getPasswordQ { return password; } public void setl_ogin(String str) { login = str; } public void setPassword(String str) { password = str; } public boolean validar(String log,String pass) { login = log; password = pass; if (login.equals(loginBD) == true && password.equals(passwordBD) == true) return true; return false; } }

El archivo /ejemplo/UsuarioJSPBean. jsp es el encargado de leer los parametros insertados por el usuario y decidir cual es el siguiente archivo de continuation, como se muestra en seguida: Ejemplo 11.11 {continuation) UsuarioJSPBean.jsp).
<HTML> <HEAD> <TITLE>

Presentation

del

resultado

(archivo

Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY>


<H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <jsp:useBean id="usuarioBean11 class="ejemplos.UsuarioBean" scope="session" /> <%! String login = ""; %> <%! String password = ""; %> <%! String showPage = ""; %> <%! String action = ""; %> <%! String mensaje = " " ; % > <% action = request.getParameter("boton"); if (action.equals("Salir") == true) mensaje="Salida del si sterna"; else if (action.equals("OK") == true) { if (usuarioBean != null){ login = request.getParameter("login"); password = request.getParameter("password"); if (usuarioBean.validar(login,password) == true) mensaje="Bienvenido, " + login; else mensaje="Usuario desconocido"; } else

mensaje="Bean desconocido";

JSP

625

%> <jsp:forward page="<%= showPage %>" /> </BODY> </HTML>

else mensaje=action; showPage = "/ejemplo/mensajePage.jsp?mensaje=" + mensaje;

El resultado del ejemplo es identico al del ejemplo 11.11. Su logica es bastante similar aunque con algunas modificaciones en relacion con el uso del bean, a saber: Se eliminan las variables loginBD y passwordBD, ya que estas se guardan en el bean, o, eventualmente, el bean las lee de una base de datos. Las demas variables se mantienen. En lugar de hacer la validacion del usuario de manera local, dentro del archivo JSP, esta se hace directamente en el bean mediante usuarioBean.
vali dar(1ogi n,password).

Es importante resaltar que una de las grandes ventajas del uso del bean es que se utiliza un componente con todo el poder de la programacion de Java, pero sin la desventaja de tener que incluir programacion en Java dentro del JSP. De tal manera, mantiene la separacion, hasta cierto punto, entre la clase borde (en este caso el archive JSP) y la de control (en este caso el bean, ya que es encargado de validar al usuario). Sin embargo, el JSP aun mantiene parte de la logica de la aplicacion, ya que decide que pantalla se desplegara a continuacion y el parametro que se le envia.

11.5 Integracion servlets y JSP


Tanto los servlets como los JSP tienen ventajas al igual que desventajas. Por tal razon, vale la pena aprovechar lo mejor de cada uno. Para ello, se pueden integrar ambos de manera que se maximice la programacion en Java dentro del servlet y se minimice en los documentos JSP. Este enfoque tambien reduce la complejidad de los JSP, ya que se envia la funcionalidad de la aplicacion al servlet, pero se mantienen primordialmente los aspectos de borde en el JSP. Por ejemplo, consideremos la siguiente extension a los ejemplos 11.9 y 11.11, co menzando con la forma de entrada, como se muestra en el ejemplo 11.12: Ejemplo 11.12 Ejemplo de la forma de entrada en servlet.
<HTML> <HEAD> <TITLE> Si sterna de Reservaciones de Vuelo </TITLE> </HEAD> <BODY> <H1>SISTEMA DE RESERVACIONES DE VUELO</H1> <jsp:useBean id^'usuarioBean" class="ejemplos.UsuarioBean 11 scope="session 11 /> <FORM ACTION= 11 /servlet/ejemplos.EjemploDSPS4rvlet 11 METHOD=IIPOSTIIx/P>

626

CAP. 11 PROGRAMACION CON HTML, SERVLETS Y JSP

Das könnte Ihnen auch gefallen