Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bueno Guia JSP JDBC
Bueno Guia JSP JDBC
SEMESTRE : 2009 - 1
TEMA:
OBJETIVOS:
Poder desarrollar aplicaciones web usando JSPs. Conocer algunas caractersticas bsicas de JSPs Crear y Utilizar de forma bsica los JDBC. ACTIVIDADES A REALIZAR
No. DESCRIPCIN 0 Prueba de Entrada 1 Introduccin Aplicaciones Web , Servlets, JSP y JDBC 2 Desarrollo de los ejercicios propuestos en la evaluacin del laboratorio. DURACIN PUNTAJE -
Advertencia
El desarrollo de las actividades contenidas en esta gua es de carcter estrictamente personal. Cualquier falta de probidad (plagio) que a criterio del Jefe de Prctica sea cometida, ser sancionada con la nota CERO no anulable para todos los involucrados, los cuales sern adems sancionados de acuerdo con el Reglamento Disciplinario de la PUCP.
Importante
Todos los programas que figuran en la presente gua (y los archivos ledos y/o generados por stos) debern ser grabados en una carpeta especialmente creada para tales efectos, la cual ser referida a lo largo de la gua como su carpeta de trabajo.
1. Introduccin En nuestra experiencia de navegar en Internet nos hemos encontrado con las pginas Web el cual es un documento de la World Wide Web, normalmente en formato HTML que proviene del estndar SGML o XHTML que proviene del estndar XML. Algunas de estas pginas web son dinmicas ya que dependen de una aplicacin que vara su contenido por ejemplo las que uno observa al entrar a un webmail ya que su contenido vara automticamente dependiendo del usuario que se logue, etc; tambin tenemos las pginas web estticas aquellas cuyo contenido vara pero de forma manual. Toda pgina Web es distribuida por medio de un Servidor Web el cual podra ser Apache, el IIS (Internet Information Service), Tomcat, JBOSS, etc. El servidor Tomcat es un Servidor de Aplicaciones que cumple las especificaciones de servlets y jsp.
Pg. 2
2. Servlets
Un Servlet es una clase Java usada para extender la capacidad de las aplicaciones basadas en el modelo cliente servidor y ejecucin peticin respuesta. Los Servlets son una potente herramienta para la generacin de contenido dinmico en la Web. El Servlet Container es el componente encargado de la creacin, acceso y destruccin de los Servlets, controla su ciclo de vida.
2.1 Arquitectura de los Servlets El principal componente de la Servlet API es la interfaz Servlet. Todos los servlets implementan esta interfaz directamente, por medio de la extensin de la clase que la implementa, HttpServlet. Esta interfaz est provista de mtodos que manipulan a los servlets y la comunicacin con sus clientes. Cuando un servlet es llamado desde un cliente, este recibe dos objetos: ServletRequest y ServletResponse. La interfaz ServletRequest se encarga de la comunicacin desde el cliente al servidor, mientras que la interfaz ServletResponse atiende la comunicacin desde el servlet al cliente.
Las clases e interfaces descritas conforman a un servlet bsico. Pero existen mtodos adicionales que provee la API con la capacidad para controlar sesiones o mltiples conexiones, entre muchas ms aplicaciones.
Pg. 3
3. JSP Un JSP, es una pgina dinmica de servidor Java. Este tipo de archivo de texto esta compuesto de: 1. Cabecera con importaciones y parmetros. 2. Cdigo cliente, normalmente HTML, XML y Javascript. 3. Cdigo servidor Java, denominado Scriptlet y escrito entre los caracteres <% y %>. 4. Tags: instrucciones en formato XML, asociadas a clases Java. Un dato muy importante es que un JSP se transforma en un Servlet en tiempo de ejecucin esto se observa claramente en la siguiente grfica:
La primera vez que se realiza una peticin sobre un JSP el JSP Engine lo traduce en un Servlet, lo compila y lo procesa. En sucesivas peticiones simplemente se procesa a travs del Servlet Container. Esta puede estar conformada de las siguientes partes:
Cdigo esttico HTML Directivas JSP Scripts de elementos y variables JSP Actions JSP Tags Customizables
Pg. 4
3.1.1 Directiva page La directiva page nos permite definir uno o ms de los siguientes atributos sensibles a las maysculas:
import="package.class" import="package.class1,...,package.classN". Esto nos permite especificar los paquetes que deberan ser importados. Por ejemplo:
<%@ page import="java.util.*" %> El atributo import es el nico que puede aparecer mltiples veces.
contentType="MIME-Type" 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: <%@ page contentType="text/plain" %> tiene el mismo valor que el scriptlet <% response.setContentType("text/plain"); %> isThreadSafe="true|false". Un valor de true (por defecto) indica un procesamiento del servlet normal, donde mltiples peticiones pueden procesarse simultneamente con un slo ejemplar del servlet, bajo la suposicin que del autor sincroniza las variables de ejemplar. Un valor de false indica que el servlet debera implementar SingleThreadModel, con peticiones enviadas serialmente o con peticiones simultneas siendo entregadas por ejemplares separados del servlet. session="true|false". Un valor de true (por defecto) indica que la variable predefinida session (del tipo HttpSession) debera unirse a la sesin existente si existe una, si no existe se debera crear una nueva sesin para unirla. Un valor de false indica que no se usarn sesiones, y los intentos de acceder a la variable session resultarn en errores en el momento en que la pgina JSP sea traducida a un servlet. buffer="sizekb|none". Esto especifica el tamao del buffer para el JspWriter out. El valor por defecto es especfico del servidor, debera ser de al menos 8kb. autoflush="true|false". Un valor de true (por defecto) indica que el buffer debera descargase cuando est lleno. Un valor de false, raramente utilizado, indica que se debe lanzar una excepcin cuando el buffer se sobrecargue. Un valor de false es ilegal cuando usamos buffer="none". extends="package.class". Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaucin, ya que el servidor podra utilizar una superclase personalizada. info="message". Define un string que puede usarse para ser recuperado mediante el mtodo getServletInfo. errorPage="url". Especifica una pgina JSP que se debera procesar si se lanzar cualquier Throwable pero no fuera capturado en la pgina actual.
Pg. 5
isErrorPage="true|false". Indica si la pgina actual acta o no como pgina de error de otra pgina 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 opcin legal Ejemplo:
3.1.2 Directiva include JSP Esta directiva nos permite incluir ficheros en el momento en que la pgina JSP es traducida a un servlet. La directiva se parece a esto:
3.2 Scriptlets JSP Si queremos hacer algo ms complejo que insertar una simple expresin, los scriptlets JSP nos permiten insertar cdigo arbitrario dentro del mtodo servlet que ser construido al generar la pgina. Los Scriptlets tienen la siguiente forma: <% Cdigo Java %> Ejemplo:
Pg. 6
3.3 Variables Predefinidas Para simplificar el cdigo en expresiones y scriplets JSP, tenemos ocho variables definidas automticamente, algunas veces llamadas objetos implcitos. Las variables disponibles son: request, response, out, session, application, config, pageContext y page. 3.3.1 request Este es el HttpServletRequest asociado con la peticin, y nos permite mirar los parmetros de la peticin (mediante getParameter), el tipo de peticin (GET, POST, HEAD, etc.), y las cabeceras HTTP entrantes (cookies, Referer, etc.). Estrictamente hablando, se permite que la peticin sea una subclase de ServletRequest distinta de HttpServletRequest, si el protocolo de la peticin es distinto del HTTP. Esto casi nunca se lleva a la prctica.
T
3.3.2 response Este es el HttpServletResponse asociado con la respuesta al cliente. Observa que, como el stream de salida (ver out ms abajo) tiene un buffer, es legal seleccionar los cdigos de estado y cabeceras de respuesta, aunque no est permitido en los servlets normales una vez que la salida ha sido enviada al cliente. 3.3.3 out Este es el PrintWriter usado para enviar la salida al cliente. Sin embargo, para poder hacer til el objeto response (ver la seccin anterior), esta es una versin con buffer de PrintWriter llamada JspWriter. Observa que podemos ajustar el tamao del buffer, o incluso desactivar el buffer, usando el atributo buffer de la directiva page. Tambin observa que out se usa casi exclusivamente en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de salida, y por eso raramente se refieren explcitamente a out. 3.3.4 session Este es el objeto HttpSession asociado con la peticin. Recuerda que las sesiones se crean automticamente, por ello esta variable se une incluso si no hubiera una sesin de referencia entrante. La nica excepcin es usar el atributo session de la directiva page para desactivar las sesiones, en cuyo caso los intentos de referenciar la variable session causarn un error en el momento de traducir la pgina JSP a un servlet.
Pg. 7
3.4 Accin 3.4.1 Accin jsp:useBean Esta accin nos permite cargar y utilizar un JavaBean en la pgina JSP. Esta es una capacidad muy til porque nos permite utilizar la reusabilidad de las clases Java sin sacrificar la conveniencia de aadir JSP sobre servlets solitarios. La sintaxis ms simple para especificar que se debe usar un Bean es:
Esto normalmente significa "ejemplariza un objeto de la clase especificada por class, y unido a una variable con el nombre especificado por id". Sin embargo, tambin podemos especificar un atributo scope que hace que ese Bean se asocie con ms de una sola pgina. Ahora, una vez que tenemos un bean, podemos modificar sus propiedades mediante jsp:setProperty, o usando un scriptlet y llamando a un mtodo explcitamente sobre el objeto con el nombre de la variable especificada anteriormente mediante el atributo id. Recuerda que con los beans, cuando decimos "este bean tiene una propiedad del tipo X llamada foo", realmente queremos decir "Esta clase tiene un mtodo getFoo que devuelve algo del tipo X, y otro mtodo llamado setFoo que toma un X como un argumento". La accin jsp:setProperty se describe con ms detalle en la siguiente seccin, pero ahora observemos que podemos suministrar un valor explcito, dando un atributo param para decir que el valor est derivado del parmetro de la peticin nombrado, o slo lista las propiedades para indicar que el valor debera derivarse de los parmetros de la peticin con el mismo nombre que la propiedad. Leemos las propiedades existentes en una expresin o scriptlet JSP llamando al mtodo getXxx, o ms comnmente, usando la accin jsp:getProperty. No olvidar que todas las clases que se usan deben ir en el directorio classes o si es un fichero JAR en el directorio lib, no en el directorio servlets. 3.4.2 Accin jsp:getProperty Este elemento recupera el valor de una propiedad del bean, lo convierte a un string, e inserta el valor en la salida. Los dos atributos requeridos son name, el nombre de un bean referenciado anteriormente mediante jsp:useBean, y property, la propiedad cuyo valor debera ser insertado. Aqu tenemos un ejemplo:
Pg. 8
3.4.3 Accin jsp:forward Esta accin nos permite reenviar la peticin a otra pgina. Tiene un slo atributo, page, que debera consistir en una URL relativa. Este podra ser un valor esttico, o podra ser calculado en el momento de la peticin, como en estos dos ejemplos:
Ejercicios prcticos