Aplicacions web bàsiques Introducció a servlets i JSP

Slides:



Advertisements
Presentaciones similares
Java Enterprise Edition (Java EE)
Advertisements

Modelo HTTP Request/Response
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
Servlets 22 de Abril de 2004 Fernando Alonso Blázquez.
Introducción a la arquitectura Web
Servlets.
Servlets Servlets.
Sesión en Servlets 31 de Marzo de Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura.
M.I. María Luisa González Ramírez Servlets y JSP.
Borland User Group - Guatemala Desarrollo de Servlets con Borland JBuilder 2006 Mario Enríquez Open Consult Diciembre 2006.
JAVA. Introducción Que es java?  Código reusable  Multiplataforma.
Servlets Roberto Moriyón. Servlets, I Objetos java, componentes web contenidas en un servidor (contenedor de servlets) que los reutiliza, que reciben.
Servlets, JSP, JavaBEANS,JDBC
Servlets 18 de Marzo de Índice ¿Qué es un Servlet? ¿Cuándo y por qué usar Servlets? Estructura básica de un HttpServlet Servlet simple que genera.
JAVA: Servlets Diseño de aplicaciones web
TEMA 6. Applets y servlets
Fernando Alonso Blázquez Nicolás Serrano Bárcena Servlets 8 de Abril de 2008.
Fernando Alonso Nicolás Serrano Servlets con acceso a Bases de Datos 21 de Abril de 2008.
Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
Desarrollo con Servlets. Servlets: Introducción  Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java.
Mario Osvaldo Bressano Servlets. Mario Osvaldo Bressano Arquitectura de 2 Capas.
JAVA: Servlets Diseño de servicios web © María de los Santos Pérez Hernández
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Servlets 10 de Mayo de 2006.
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris Servlets.
 Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java a los CGIs (Common Gateway Interface) para construir.
Autentificación y Seguridad en Aplicaciones Web.  Delegadas en el cliente y el servidor ◦ Basados en estándares de Internet  Autentificación Básica.
Temario Java 2 Enterprise Edition Arquitectura Especificación Servlets Contenedores Cookies Sesiones.
Trabajar con SERVLETS. Índice Qué son los Servlets Para qué sirven Cómo se utilizan Ejemplo Cómo probar un Servlet.
Aplicacions web bàsiques Introducció a servlets i JSP
Treball Fi de Carrera – J2EE
MÚLTIPLES I DIVISORS.
Google Scholar citations
PREZI Primers passos Davinia Alfonsin 4rt C Info. Tecnològica
Tema 2. DIVISIBILITAT.
MÚLTIPLES I DIVISORS ESCOLA EL Cim- 6è de primària.
Aplicacions web bàsiques Introducció a servlets i JSP
Presentació de la base de dades
L’ÚS DE LES LLIBRETES A LES SESSIONS DE FILOSOFIA 3/18
Un exemple de Màquina Virtual: el programa VMware
El mercat ELS NENS I NENES DE P-4.
Creació d’un mapa personalitzat
SISTEMA GESTOR D’EMPRESA D’EXCAVACIONS
Les Restriccions d’accés
Tutorials Campus Virtual Càrrega automàtica d’alumnes
Disseny de la persistència JDBC
Distribució d’aplicacions mitjançant web
DISC DUR Dispositiu encarregat d’emmagatzemar informació de forma permanent al nostre ordinador.
Disseny de la persistència Serialització
Servlets Servlets Son modulos que extienden las funcionalidades de un servidor “java-enabled” Normalmente generan código HTML dinámicamente, el cual se.
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
Disseny de la persistència JDBC
Tema 5: Nombres naturals i enters
Optimització de consultes en MySQL (unes notes)
Explicació de l’enunciat
SCIENCE OF SYNTHESIS.
Disseny de la persistència Serialització
Estructurant les aplicacions MVC JSTL Struts
Parametros enviados por el cliente
HyperText Markup Language
ERIC Manual d’ús.
ESCOLA ANTONI TÀPIES- 5èB
INTRODUCCIÓN A LAS APLICACIONES WEB Y TECNOLOGÍA JAVA Jaime Fernández Mayo 2006.
JDBC: comunicación Java-Base de Datos
Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema
Threads en Java David Gañán Jiménez.
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
(Fes clic per entrar en el quadre i poder escriure) NOM DELS PERSONATGE (Per canviar la lletra i la mida ho pots fer des de FORMATO-FUENTE) Escriviu els.
LES MÀQUINES.
Estils i Plantilles Ms Word.
Transcripción de la presentación:

Aplicacions web bàsiques Introducció a servlets i JSP Fabien Girardin Enginyeria del Software II – UPF 2007

Permeten escriure pàgines web dinàmiques amb Java Què són servlets i JSP? Permeten escriure pàgines web dinàmiques amb Java Servlets: des d’una classe que extén HttpServlet JSP: directament insertant codi java en una pàgina HTML S’executen en un motor de servlets (servlet-engine), també anomenat contenidor web (web-container)

Arquitectura d’un servidor web Exemple: Apache web server amb CGI --- ----- ---- 1) Petició HTTP Sistema de fitxers Apache Web Server --- ----- ---- --- ----- ---- 5) Resposta 2) Crea un nou procés 4) Retorna un string (HTML) amb la resposta CGI 3) Accedeix a la BD BD

Servlets Un servlet és una classe Java que implementa la interface Servlet, o bé extén les classes abstractes GenericServlet o HttpServlet (el més habitual) que ja implementen aquesta interface GenericServlet i HttpServlet: Tenen un mètode service per a manegar peticions HTTP HttpServlet permet distingir si les peticions són de tipus Get (mètode doGet) o Post (mètode doPost) Els paràmentres d’aquests mètodes (en el cas de HttpServlet) són: HttpServletRequest (ServletRequest per GenericServlet): conté els arguments que es passen mitjançant formularis. També, si n’hi ha, paràmetres de sessió HttpServletResponse (ServletResponse per GenericServlet): l’utilitzarem per escriure la resposta que el servlet retorna (li hem de dir el content-type) Tenen mètodes per manegar el cicle de de vida del servlet: init i destroy

Exemple de servlet simple public class HolaServlet extends HttpServlet { /** * gestiona les peticions GET */ public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException // cal posar el content type abans d’escriure la pàgina response.setContentType("text/html"); // i ara ja podem escriure al PrintWriter PrintWriter out = response.getWriter(); out.println("<HTML><HEAD><TITLE>"); out.println(“Exemple de servlet simple”); out.println("</TITLE></HEAD><BODY>"); out.println(“<H1>Hola, soc un servlet</H1>"); out.println("</BODY></HTML>"); out.close(); }

Un exemple de JSP Tot el que hi hagi entre <% i %> és codi <HTML> <BODY> <H1> <% out.println(“Hola, sóc un JSP"); %> </H1> </BODY> </HTML> Tot el que hi hagi entre <% i %> és codi Hi ha objectes built-in (ja existents sense haver de declarar-los). Entre d’altres: out request response Compilació de JSPs: es fa la primera vegada que s’executa (per evitar haver d’interpretar-ho cada execució)

Un exemple de JSP amb declaració de mètodes Amb <%! ... %> també podem declarar mètodes i variables “de classe” que podran ser accedides des de qualsevol punt del JSP <HTML> <BODY> <%! public String diguesHola() { return “Hola, soc un JSP"; } %> <B><% =diguesHola() %></B> </BODY> </HTML>

Un exemple de JSP amb variables “de classe” Les variables declarades amb <%! ... %> poden accedir als mètodes declarats Són compartides per totes les execucions del JSP: <html> <body bgcolor="#ffffff"> Valor: <% valor = valor+1; out.println(valor); %> </body> </html> <%! int valor; public void jspInit() { valor = 0; } El mètode jspInit es crida només la primera vegada que s’executa el JSP

Passant dades entre peticions HTTP no treballa amb connexions permanents (no orientat a sessió) Com passem dades d’un servlet (o JSP) a un altre? Un servlet pot manegar paràmetres de formulari o URL amb un objecte HttpServletRequest (objecte built-in request en els JSP), que té el mètode: getParameter(“nom_parametre") Exemple: HttpServletRequest request; String nom = (String)request.getParameter(“nomUsuari”); Camps ocults: problemes de seguretat

Passant dades entre peticions: sessions Es pot crear un objecte de sessió Funciona com a una cookie (que normalment no es guarda en disc) que conté un identificador de la sessió L’objecte de sessió es crea amb HttpSession session = request.getSession(); El motor de servlets és qui guarda els paràmetres que cal mantenir al llarg de la sessió, per exemple el “login”. Utilitza els mètodes de HttpSession: void setAttribute(String name, Object value); Exemple: session.setAttribute(“login”,”toni”); Object getAttribute(String name); Exemple: String s = (String)session.getAttribute(“login”); void removeAttribute(String name, Object value); El motor de servlets inspecciona els seus objectes de sessió i esborra els que no s’han usat des d’un cert temps (configurable)

Accedint als objectes de sessió Els JSPs tenen l’objecte built-in session Els servlets el poden obtenir des del request: HttpSession session = request.getSession();

Quan els atributs són objectes class Usuari implements Serializable { String login; String nom; public String getLogin() { return this.login; } public void setLogin(String login) this.login = login; public String getNom() return this.nom; public void setNom(String nom) this. nom = nom; S’utilitzen JavaBeans per definir les classes: La classe és serialitzable Declara (com a public) tots els get i set dels attributs

Quan els atributs són objectes S’utilitzen els objectes de sessió de la mateixa forma. Per exemple: Usuari usuari = (Usuari)session.getAttribute(“user”); <%= usuari.getLogin() %> <%= usuari.getNom() %> En JSP es poden utilitzar les etiquetes <jsp:useBean>, <jsp:getProperty> i <jsp:setProperty>. L’exemple anterior també es pot escriure així: <jsp:useBean id=“user” class=“Usuari” scope=“session” /> <jsp:getProperty name=“usuari” property=“login” /> <jsp:getProperty name=“usuari” property=“nom” />

Forçar crear una sessió nova Si no es diu el contrari, s’utilitza la sessió ja creada Per fer-ne una de nova: HttpSession antigaSessio = request.getSession(false); // false indica que recuperi la sessió si n’hi havia // però que no en crei una nova sessió si no n’existia cap if (antigaSessio != null) antigaSessio.invalidate(); HttpSession session = request.getSession(true);

Guardant dades a nivell d’aplicació A vegades volem mantenir dades/objectes que siguin compartits per totes les classes, servlets o JSP d’una aplicació web (per exemple: l’adreça de la base de dades) Es pot utilitzar un objecte d’aplicació Mentre que l’objecte de sessió és diferent per a cada execució (cada usuari), el d’aplicació és comú a totes

Amb JSP, objecte built-in application Objectes d’aplicació Amb JSP, objecte built-in application Els mateixos mètodes que session: setAttribute, getAttribute, removeAttribute Amb servlets, és en realitat un objecte que implemente la interfície ServletContext i s’obté: ServletContext context = getServletContext(); context.setAttribute(“bd_url”,”http://....”);

Integrant JDBC i JSP/Servlets Dins del servlet (doGet o doPost) o del JSP (entre <% i %>) es poden incloure crides JDBC per recuperar dades de la BD i a partir dels resultats generar la pàgina de resultats En un JSP s’utilitza la directiva page (que hem vist abans per declarar el content-type) també per importar llibreries. Exemple: <%@ page import=“java.sql.*”> <%@ page import=“java.util.*”> O <%@ page import=“java.sql.*, java.util.*”> Les classes del driver JDBC han d’estar en el classpath del motor de servlets (no en el client)

Integrant JDBC i JSP/Servlet. Exemple <%@ page import="java.sql.*" %> <html> <body> <h1>Llista d'alumnes</h1> <% Class.forName("com.mysql.jdbc.Driver").newInstance(); String url = "jdbc:mysql://localhost/test"; Connection con = DriverManager.getConnection(url, "", ""); //definim la connexió Statement stmt = con.createStatement(); // creem un statement sobre la connxió String mysql = "SELECT codi,nom from alumnes"; ResultSet rs = stmt.executeQuery(mysql); //executem la consulta while (rs.next()) // recorrem el recordset, fila a fila i anem afegint les "persones" al vector { int codi = rs.getInt("codi"); String nom = rs.getString("nom"); %> Codi: <B><% out.print(codi); %></B>; Nom: <B><% out.print(nom);%></B><BR> } rs.close(); // tanquem el recordset stmt.close(); // tanquem el statement con.close(); // tanquem el recordset </body> </html>

Més… Servlets http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html JSP http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro.html Jo! Desp 371, Fabien.Girardin@upf.edu