Para invocar un servlet desde dentro de una p�gina HTML se utiliza la URL del servlet en la etiqueta HTML apropiada.
Esta p�gina utiliza los servles ShowCart, Cashier, y Receipt de Duke's Bookstore. Afortunadamente este es el orden en que se ver�n los servlets cuando miremos nuestra hoja y compremos nuestros libros.
Para un acceso m�s directo al servlet ShowCart servlet, pulsa el enlace Show�Cart que hay en la p�gina principal del Duke's Bookstore. Si tenemos servletrunner o un servidor web configurados para ejecutar el ejemplo, vayamos a la p�gina principal de la librer�a mostrada en la p�gina anterior. S�lo por diversi�n, podr�amos a�adir un libro a nuestra hoja de pedido antes de acceder al servlet ShowCart.
�Ejemplos de URLs de Servlets en etiquetas HTML
La p�gina devuelta por ShowCartServlet tiene varios enlaces, cada uno de los cuales tiene un servlet como destino. Aqu� podemos ver el c�digo de esos enlaces.
public class ShowCartServlet extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
...
out.println(... +
"<a href=\"" +
response.encodeUrl("/servlet/cashier") +
"\">Check Out</a> � � �" +
...);
...
}
...
}
Este c�digo resulta en una p�gina HTML que tiene el siguiente enlace.
<a href="http://localhost:8080/servlet/cashier>Check Out</a">
Si llamamos a la p�gina del showcart, podremos ver el enlace como si vieramos el fuente de la p�gina. Luego pulsamos sobre el enlace. El servlet cashier devolver� la p�gina que contiene el siguiente ejemplo.
La p�gina mostrada por el server cashier presenta un formulario que pide el nombre del usuario y el n�mero de la tarjeta de cr�dito. El c�digo que imprime el formulario se parece a esto.
public class CashierServlet extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
...
out.println(... +
"<form action=\"" +
response.encodeUrl("/servlet/receipt") +
"\" method=\"post\">" +
...
"<td><input type=\"text\" name=\"cardname\"" +
"value=\"Gwen Canigetit\" size=\"19\"></td>" +
...
"<td><input type=\"submit\"" +
"value=\"Submit Information\"></td>" +
...
"</form>" +
...);
out.close();
}
...
}
Este c�digo resulta en una p�gina HTML que tiene la siguiente etiqueta para iniciar el formulario.
<form action="http://localhost:8080/servlet/receipt" method="post">
Si cargamos la p�gina del servlet cashier en nuestro navegador podremos ver la etiqueta que inicia el formulario como si vieramos el fuente de la p�gina. Luego enviamos el formulario. El servlet receipt devolver� una p�gina que contiene el siguiente ejemplo. La p�gina del servlet receipt se resetea a s� misma, por eso si queremos verla, tenemos que hacerlo r�pido!.
La p�gina devuelta por el servlet receipt tiene una "meta tag" que utiliza una URL de servlet como parte del valor del atributo http-equiv. Espec�ficamente, la etiqueta redirecciona la p�gina hacia a la p�gina principal del Duke's Bookstore despues de dar las gracias al usuario por su pedido. Aqu� podemos ver el c�digo de esta etiqueta.
public class ReceiptServlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
...
out.println("<html>" +
"<head><title> Receipt </title>" +
"<meta http-equiv=\"refresh\" content=\"4; url=" +
"http://" + request.getHeader("Host") +
"/servlet/bookstore;\">" +
"</head>" +
...
}
...
}
Este c�digo resulta en una p�gina HTML que tiene la siguiente etiqueta.
<meta http-equiv="refresh"
content="4; url=http://localhost:8080/servlet/bookstore;">