Escolar Documentos
Profissional Documentos
Cultura Documentos
CLASE 1
Creando un proyecto Web
Para desarrollar un proyecto Web, se debe crear una carpeta con el nombre del
proyecto en este ejercicio crearemos una carpeta con nuestro apellido (durand)
dentro de la carpeta webapps del Jakarta.
En la carpeta WEB-INF\classes irán los archivos .class También puede crear carpetas
internas dentro WEB-INF\classes y poner allí los .class, pero tendrá que utilizar la
instrucción package para especificar el nombre de la carpeta interna.
Archivo: web.xml
<web-app>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Los JSPs nos permiten separar la parte dinámica de nuestras páginas web del HTML
estático. Simplemente escribimos el HTML regular de la forma como lo hacemos
regularmente, pero en cuando necesitemos ejecutar código Java entonces encerramos
el código en unas etiquetas especiales, la mayoría de las cuales empiezan con "<%" y
terminan con "%>" este tipo de programación es parecida a la del PHP en tipo script.
A continuación se muestra los tags usados por los JSPs en la programación de páginas:
Sin embargo, también podemos combinar múltiples selecciones de atributos para una
sola directiva, de esta forma:
page, que nos permite hacer cosas como importar clases, personalizar la superclase
del servlet, etc.
include, que nos permite insertar un fichero dentro de la clase servlet en el momento
que el fichero JSP es traducido a un servlet.
La directiva taglib, que no era soportada en JSP 1.0, pero se pretende que permita que
los autores de JSP definan sus propias etiquetas. (Versión Actual de JSP 2.1)
La directiva page
La directiva page nos permite definir uno o más de los siguientes atributos sensibles a
las mayúsculas:
• import="package.class" o import="package.class1,...,package.classN".
Esto nos permite especificar los paquetes que deberían ser importados. Por ejemplo:
• contentType="MIME-Type" o contentType="MIME-Type;
charset=Character-Set"
Esto especifica el tipo MIME de la salida. El valor por defecto es text/html. Por
ejemplo, la directiva:
• isThreadSafe="true|false".
Un valor de true (por defecto) indica un procesamiento del servlet normal, donde
múltiples peticiones pueden procesarse simultáneamente con un sólo ejemplar del
servlet, bajo la suposición que del autor sincroniza las variables de ejemplar. Un valor
de false indica que el servlet debería implementar SingleThreadModel, con
peticiones enviadas serialmente o con peticiones simultáneas siendo entregadas por
ejemplares separados del servelt.
• session="true|false".
Un valor de true (por defecto) indica que la variable predefinida session (del tipo
HttpSession) debería unirse a la sesión existente si existe una, si no existe se debería
crear una nueva sesión para unirla. Un valor de false indica que no se usarán sesiones,
y los intentos de acceder a la variable session resultarán en errores en el momento en
que la página JSP sea traducida a un servlet.
• buffer="sizekb|none".
Esto especifica el tamaño del buffer para el JspWriter out. El valor por defecto es
específico del servidor, debería ser de al menos 8kb.
• autoflush="true|false".
Un valor de true (por defecto) indica que el buffer debería desacargase cuando esté
lleno. Un valor de false, raramente utilizado, indica que se debe lanzar una excepción
• extends="package.class".
Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema
precaución, ya que el servidor podría utilizar una superclase personalizada.
• info="message".
Define un string que puede usarse para ser recuperado mediante el método
getServletInfo.
• errorPage="url".
Especifica una página JSP que se debería procesar si se lanzará cualquier Throwable
pero no fuera capturado en la página actual.
• isErrorPage="true|false".
Indica si la página actual actúa o no como página de error de otra página JSP. El valor
por defecto es false.
• language="java".
En algunos momentos, esto está pensado para especificar el lenguaje a utilizar. Por
ahora, no debemos preocuparnos por él ya que java es tanto el valor por defecto como
la única opción legal.
Archivo: index.jsp
<HTML>
<HEAD>
<TITLE>CINFO - Java Developer</TITLE>
</HEAD>
<BODY bgcolor=lightyellow>
<CENTER>
<% for(int i=1; i<=6; ++i)
out.println("<h" + i + ">Java Developer..!</h" + i + ">");
%>
</center>
</BODY>
<HTML>
Invocación al MS Word
Nota: Para ejecutar esta JSP correctamente se debe tener instalado el Microsoft Word.
Archivo: msword.jsp
El siguiente es otro ejemplo que nos permite importar bibliotecas de Java para usar de
ellas métodos en nuestra JSP.
Archivo: librerias.jsp
La directiva include
Esta directiva nos permite incluir ficheros en el momento en que la página JSP es
traducida a un servlet. La directiva se parece a esto:
Prueba de Include
Ambos deben estar en la misma carpeta virtual (jsp) y se debe invocar al archivo
include01.jsp Este insertará al otro dentro de si.
Archivo: include01.jsp
<HTML>
<HEAD>
<TITLE>Prueba de include</TITLE>
</HEAD>
<BODY bgcolor=lightyellow>
Archivo: include01.jsp
<CENTER>
Hora y tiempo actual <br> <%@ include file="include02.jsp" %>
</BODY>
<HTML>
La siguiente figura representa como fluyen los datos entre el cliente y el servidor (al
menos cuando usamos la implementación JSP de Sun Microsystems, otros motores JSP
podrían trabajar de forma diferente).
El motor JSP envía el objeto solicitado a cualquier componente del lado del servidor
(JavaBeansTM , servlet, o bean enterprise) que especifica el JSP. El componente maneja
la solicitud, posiblemente recuperando datos desde una base de datos u otros datos
almacenados, y pasa un objeto respuesta de vuelta al motor JSP, donde los datos se
formatean de acuerdo al diseño de la página HTML. El motor JSP y el servidor Web
entonces envían la página JSP revisada de vuelta al cliente, donde el usuario puede ver
el resultado, en el navegador Web. Los protocolos de comunicación usados entre el
cliente y el servidor pueden ser HTTP, o cualquier otro protocolo.
Método Get
El método Get añade los datos del formulario (llamada una query string (string de
solicitud)) a una URL, en la forma de parejas clave/valor desde el formulario HTML,
por ejemplo, name=john.
En el String de solicitud las parejas de clave/valor se separan por caracteres &, los
espacios se convierten en caracteres +, y los caracteres especiales se convierten a sus
correspondientes hexadecimales. Como el String de solicitud está en la URL, la página
puede ser añadida a los bookmarks o enviada por e-mail con el string de solicitud.
Tener en cuenta que este string normalmente está limitado a un número relativamente
pequeño de caracteres.
El siguiente ejemplo envía 2 valores al Servidor los cuales son sumados por él.
Archivo: metodoget01.jsp
<HTML>
<HEAD><TITLE>Metodo Get</TITLE>
</HEAD>
<BODY bgcolor=lightyellow>
<CENTER>
<%
if(request.getQueryString() == null) {
%>
<form method=Get action=metodoget01.jsp>
Valor 1 <input name=v1><br>
Valor 2 <input name=v2><br><br>
<input type=submit value='¿Cuánto suman?'>
</form>
<%
} else
{ double x=
Double.valueOf(request.getParameter("v1")).doubleValue();
double y=
Double.valueOf(request.getParameter("v2")).doubleValue();
out.println("<h2>Suman: " + (x + y) + "</h2>");
out.println("<br><br>");
out.println("<a
href='javascript:window.history.back()'>Retornar</a>");
}
%>
</BODY>
</HTML>
Nota:
Resultado en el browser:
• Cuando se ejecuta el if porque el JSP lleva null la primera vez las cajas de
texto están en blanco ponga valores en ellas:
La aplicación anterior puede también ser escrita sin el botón submit y manipular
posibles errores de ingreso. Ver el siguiente código:
Archivo: metodoget02.jsp
<HTML>
<HEAD><TITLE>Get</TITLE>
</HEAD>
<BODY bgcolor=lightyellow>
<CENTER>
<% if(request.getQueryString() == null) {
%> <form action= metodoget02.jsp>
Valor 1 <input name=v1><br>
Valor 2 <input name=v2><br><br>
<a href="javascript:document.forms[0].submit()">¿Cuánto
suman?
</a>
</form>
<%
} else {
try{
double x=
Double.valueOf(request.getParameter("v1")).doubleValue();
double y=
Double.valueOf(request.getParameter("v2")).doubleValue();
out.println("<h2>Suman: " + (x + y) + "</h2><br>");
}catch(NumberFormatException ex)
{ out.println("Error en ingreso de valores<br><br>");
}
out.println("<a
href='javascript:window.history.back()'>Retornar</a>");
}
%>
</BODY>
</HTML>
Método Post
El método Post, pasa los datos de una longitud ilimitada como un cuerpo de solicitud
de cabecera HTTP hacia el servidor. El usuario que trabaja en el navegador cliente no
puede ver los datos que están siendo enviados, por eso la solicitud POST es ideal para
enviar datos confidenciales (como el número de una tarjeta de crédito) o grandes
cantidades de datos al servidor.
Archivo: metodopost01.html
<html>
<head>
<title>HTML que envia datos a JSP</title>
</head>
<body bgcolor=lightyellow>
<form method=post action="metodopost01.jsp">
<table border=0>
<tr>
<td>Nombre </td>
<td><input type=text name="nombre"><td>
</tr>
<tr>
<td>Email </td>
<td><input type=text name="email" value="@"><td>
</tr>
<tr>
<td>Color favorito </td>
<td>
<Select name="fgColor">
<Option VALUE="red">red
<Option VALUE="green">green
<Option VALUE="blue">blue
<Option VALUE="magenta">magenta
<Option VALUE="orange">orange
<Option VALUE="blak">blak
<Option VALUE="cyan">cyan
</Select>
</td>
</tr>
</table>
<br>
<input type=submit value="Enviar datos!">
</form>
</body>
</html>
Archivo: metodopost01.jsp
<HTML>
<HEAD>
<TITLE>Recibe Datos de HTML</TITLE>
</HEAD>
<BODY bgcolor=lightyellow
TEXT="<%= request.getParameter("fgColor") %>">
<H2 ALIGN="CENTER">Prueba de datos</H2>
<%
out.println("<p>Hola " + request.getParameter("nombre") + "
bienvenido a está página");
out.println("<p>Su email es " + request.getParameter("email"));
%>
</BODY>
</HTML>