32
M.I. María Luisa González Ramírez Servlets y JSP

M.I. María Luisa González Ramírez Servlets y JSP

Embed Size (px)

Citation preview

Page 1: M.I. María Luisa González Ramírez Servlets y JSP

M.I. María Luisa González Ramírez

Servlets y JSP

Page 2: M.I. María Luisa González Ramírez Servlets y JSP

¿Qué son CGI?

• Common Gateway Interface. Tecnología de la WWW que permite a un cliente (navegador web) solicitar datos de un programa ejecutado en un servidor web.

• CGI especifica un estándar para transferir datos entre el cliente y el programa.

• Un script CGI se trata de una pequeña aplicación que se ejecuta en el servidor y proporciona acceso a una base de datos, intercambio en formularios html, gestión de claves de acceso, utilidades de búsqueda, etc.

• Se suelen desarrollar en lenguajes como PERL y VB.

Page 3: M.I. María Luisa González Ramírez Servlets y JSP

Servlets

• Los Servlets son las respuesta de la tecnología Java a la programación CGI. Son programas que se ejecutan en un servidor Web y construyen páginas Web. Construir páginas Web al vuelo es útil (y comunmente usado) por un número de razones:

• La página Web está basada en datos enviados por el usuario. Por ejemplo, las páginas de resultados de los motores de búsqueda se generan de esta forma, y los programas que procesan pedidos desde sites de comercio electrónico también.

• Los datos cambian frecuentemente. Por ejemplo, un informe sobre el tiempo o páginas de cabeceras de noticias podrían construir la página dinámicamente, quizás devolviendo una página previamente construida y luego actualizándola.

• Las páginas Web que usan información desde bases de datos corporativas u otras fuentes. Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line que liste los precios actuales y el número de artículos en stock

Page 4: M.I. María Luisa González Ramírez Servlets y JSP

Servlets

• Un Servlet es una clase Java usada para extender la capacidad de las aplicaciones basadas en el modelo cliente servidor y ejecución petición respuesta.

• Los Servlets son una potente herramienta para la generación de contenido dinámico en la Web.

• El Servlet Container es el componente encargado de la creación, acceso y• destrucción de los Servlets, controla su ciclo de vida

Page 5: M.I. María Luisa González Ramírez Servlets y JSP

Servlets

• Un Servlet es una clase Java que extiende de javax.servlet.http.HttpServlet y que sobreescribe los métodos doPost o doGet o ambos.

• La petición se representa por la clase HttpServletRequest.

• La respuesta se representa por la clase HttpServletResponse

Page 6: M.I. María Luisa González Ramírez Servlets y JSP

JSP

• Java Server Pages (JSP) es una tecnología que nos permite mezclar HTML estático con HTML generado dinámicamente.

• Las páginas Web que están construidas con programas CGI son casi estáticas, con la parte dinámica limitada a muy pocas localizaciones.

Page 7: M.I. María Luisa González Ramírez Servlets y JSP

JSP

• Un JSP, es una página dinámica de servidor Java.Es un archivo de texto compuesto de :1. Cabecera con importaciones y parámetros.2. Código cliente, normalmente HTML, XML y Javascript.3. Código servidor Java, denominado Scriptlet y escrito entre

los caracteres<% y %>.4. Tags: instrucciones en formato XML, asociadas a clases Java.• Un JSP se transforma en un Servlet en tiempo de ejecución.

Page 8: M.I. María Luisa González Ramírez Servlets y JSP

JSP

• La primera vez que se realiza una petición sobre un JSP el JSP Engine lo traduce en un Servlet, lo compila y lo procesa. En sucesivas peticiones simplemente se procesa a través del Servlet Container.

Page 9: M.I. María Luisa González Ramírez Servlets y JSP

Servlet container: Tomcat

• Tomcat es la implementación de referencia de la especificación de Servlet y de JSP.

• Es totalmente gratuito y se puede descargar de http://jakarta.apache.org/tomcat/ con licencia Apache Software License.

• Existen distribuciones para todas las plataformas existentes.

• Cada versión de Tomcat lleva asociada una compatibilidad de las especificaciónes de Servlet y JSP

Page 10: M.I. María Luisa González Ramírez Servlets y JSP

GlassFish

• GlassFish es un servidor de aplicaciones de software libre desarrollado por Sun Microsystems, compañía adquirida por Oracle Corporation, que implementa las tecnologías definidas en la plataforma Java EE y permite ejecutar aplicaciones que siguen esta especificación.

• Es gratuito y de código libre, se distribuye bajo un licenciamiento dual a través de la licencia CDDL y la GNU GPL.

• GlassFish tiene como base al servidor Sun Java System Application Server de Oracle Corporation, un derivado de Apache Tomcat

Page 11: M.I. María Luisa González Ramírez Servlets y JSP

Estructura de la aplicación

1

2

3

1. Es la raíz de la aplicación , es donde se sitúan los archivos accesibles a través de la petición HTTP GET

2. Web.xml: es el archivo de configuración de aplicaciones Web. En este archivo debemos registrar los servlets

3. Los subdirectorios dentro de src son los paquetes de aplicación. En este caso solo esta el paquete misServlets con una clase ServletBienvenida

Page 12: M.I. María Luisa González Ramírez Servlets y JSP

Servlet especificación

• El API que proporciona Sun para la especificación de Servlets se encuentra publicada en http://java.sun.com/products/servlet/2.X/javadoc/

• La especificación se divide en dos paquetes:– javax.servlet– javax.servlet.http

• Clases más importantes, para el protocolo HTTP.

Page 13: M.I. María Luisa González Ramírez Servlets y JSP

Implementación de un servlet

• Pasos para la implementación de un Servlet (Ejemplo):

1. Crear una clase Java que extienda de HttpServlet2. Sobreescribir el método doPost o doGet o ambos.3. Obtener la salida4. Enviar el contenido dinámico5. Compilar el Servlet6. Mapear la clase a una URL en el archivoweb.xml7. Ejecutarlo / Probarlo

Page 14: M.I. María Luisa González Ramírez Servlets y JSP

Servlet HolaMundo

Page 15: M.I. María Luisa González Ramírez Servlets y JSP

Servlet. Web.xml

• Es el archivo de configuración de aplicaciones Web.• Registra los Servlets mediante el Tag XML <servlet>.• Asocia URL’s con los Servlets.

<servlet-mapping>• Configura parámetros de seguridad.• Debe estar siempre situado en el directorio WEB-INF

de cada aplicación contenida en el Servlet Container

Page 16: M.I. María Luisa González Ramírez Servlets y JSP

Web.xml

Page 17: M.I. María Luisa González Ramírez Servlets y JSP

Ejemplo Servlet

Page 18: M.I. María Luisa González Ramírez Servlets y JSP

Implementación JSP

• Pasos para la implementación de un JSP (Ejemplo):1. Escribir el JSP2. Ejecutarlo / Probarlo.

JSP vs Servlet• Generalmente el desarrollo de un JSP es mucho

más rapido y cómodo que el de un Servlet.• Pero hay casos en los cuales se deben implementar

Servlets.

Page 19: M.I. María Luisa González Ramírez Servlets y JSP

Probar el jsp

• Con situar el archivo JSP, en el directorio de la aplicación ya estará accesible a través del servidor.

• Desarrollando JSP no es necesario recargar las aplicaciones ni reiniciar el servidor para comprobar los cambios.

Page 20: M.I. María Luisa González Ramírez Servlets y JSP

Resultado de la prueba con JSP

Page 21: M.I. María Luisa González Ramírez Servlets y JSP

Ejemplo JSP

Page 22: M.I. María Luisa González Ramírez Servlets y JSP

Manejo de Bases de datos JDBC

• Con servlets y jsp• JDBC es un API (incluida tanto en las diferentes

versiones de J2SE y J2EE) que proporciona conectividad con gestores de bases de datos.

• Es una “interfaz” de acceso a bases de datos, es decir SUN no proporciona una implementación, sino que son los fabricantes los que proporcionan drivers JDBC para que los programas Java tengan conectividad con sus bases de datos.

Page 23: M.I. María Luisa González Ramírez Servlets y JSP

JDBC

• JCP java community process

Page 24: M.I. María Luisa González Ramírez Servlets y JSP

API JDBC

• El api JDBC lo podemos encontrar en los paquetes :

• java.sql• javax.sql

Page 25: M.I. María Luisa González Ramírez Servlets y JSP

JDBC las clases más usadas

• Java.sql.Connection– Interfaz del paquete java.sql que representa la conexión con la base de

datos• Pasos para la conexión

– Indicamos el driver de la base de datos que vamos a utilizar• Class.forName(“driver”);

– Mediante la clase DriverManager (Gestor de drivers para acceso a bases de datos) obtenemos la conexión pasando como parámetros la cadena de conexión especificada por el proveedor de base de datos, usuario y password. La cadena de conexión suele llevar incluido la maquina (host) y puerto (port) donde se encuentra la instancia de base de datos a la que accedemos• Connection conn = DriverManager.getConnection

("jdbc:oracle:thin:@HOST:PORT:SID",“admin”,”pass”);

Page 26: M.I. María Luisa González Ramírez Servlets y JSP

Ejemplos de conexión a diferentes BD

Page 27: M.I. María Luisa González Ramírez Servlets y JSP

JDBC las clases más usadas

• Java.sql.Statement– El objeto utilizado para ejecutar las sentencias SQL. Debemos pedírselo

al objeto Connection• Pasos para ejecutar una sentencia SQL

– Obtenemos el objeto Statement a través de la conexión• Stament stmt = conn.createStatement();

– A través del objeto Statement podemos lanzar las sentencias SQL. Los métodos más utilizados para ejecutar SQL son : “executeUpdate”, “executeQuerie” o “execute”.• int updates = stmt.executeUpdate(“update USUARIOS set TLF = ‘917658991’

where COD = ‘1’ ”);

– Cierre los objetos al finalizar su uso, es IMPORTANTE.• stmt.close();• conn.close();

Page 28: M.I. María Luisa González Ramírez Servlets y JSP

JDBC las clases más usadas

• Java.sql.Resultset– Es el objeto en el cual se almacena el resultado de las

consultas, se obtiene a través del Statement

• Pasos para obtener los datos de una consulta– A través del Statement obtenido lanzamos consultas con el

método executeQuery, este método nos devuelve un objeto Resultset con el resultado de la consulta.

Resultset rs = stmt.executeQuery(“SELECT * FROM USUARIOS”);

Page 29: M.I. María Luisa González Ramírez Servlets y JSP

JDBC las clases más usadas

– Para obtener los datos debemos ejecutar siempre el metodo “next” del Resultset,

– Este método devuelve true/false en función de la disponibilidad de datos.

while(rs.next()) {System.out.println(rs.getString(“NOMBRE”));System.out.println(rs.getString(“APELLIDO1”));}rs.close(); //una vez procesada la información debemos // cerrar el resultset

Page 30: M.I. María Luisa González Ramírez Servlets y JSP

JDBC Buenas prácticas de uso

• Centralizar el acceso a Bases de Datos en algún paquete de nuestra aplicación.

• Cerrar los objetos JDBC dentro de bloques “finally”• Usar PreparedStatement en vez de Statement• Especificar la lista de campos en las sentencias “SELECT” e

“INSERT”• Intentar utilizar SQL estándar siempre.• Externalizar las sentencias SQL en archivos, no incrustarlas

en el código fuente.• Intentar no utilizar objetos propietarios (Ejemplo:

OracleStatement …)

Page 31: M.I. María Luisa González Ramírez Servlets y JSP

PreparedStatement prest; String sql = "SELECT * FROM movies WHERE year_made 

= ?";  prest = con.prepareStatement(sql);  prest.setInt(1,2002);  ResultSet rs1 = prest.executeQuery();

Page 32: M.I. María Luisa González Ramírez Servlets y JSP

PreparedStatement psInsertar = null;  psInsertar = conexion.prepareStatement(

            "insert into person values (null,?,?,?)");

psInsertar.setInt(1, 23); // La edad, el primer interrogante, es un entero. psInsertar.setString(2, "Pedro"); // El String nombre es el segundo interrogantepsInsertar.setString(3, "Perez"); // Y el tercer interrogante, un String apellido.psInsertar.executeUpdate(); // Se ejecuta la inserción.