13 Ejemplo de cliente en Java (III) El codigo que sigue lee desde el stream de entrada estandar de EchoTest(donde el usuario teclea). Escribe inmediatamente la entada seguida por un carácter de nueva línea en el stream de salida conectado al socket. String userInput; while ((userInput = stdIn.readLine()) != null) { os.writeBytes(userInput); os.writeByte('n'); System.out.println("echo: " + is.readLine());} La última línea del bucle while lee una línea de información desde el stream de entrada conectado al socket. El método readLine() se bloquea hasta que el servidor haya devuelto la información a EchoTest. Cuando readline() retorna, EchoTest imprime la información en la salida estandard.
14 Ejemplo de cliente en Java (IV) Cuando el usuario teclea un carácter de fin de entrada, el bucle while termina y el programa continúa ejecutando las siguientes líneas de código: os.close(); is.close(); echoSocket.close(); Estas tres líneas de código cierran las streams de entrada y salida conectados al socket, y cierra la conexión del socket con el servidor. El orden es importante — debe cerrar los streams conectados a un socket antes de cerrar éste.
15 Ejemplo de cliente en Java (V) Cuando los clientes hablen con servidores más complicados como un servidor http, el cliente también será más complicado. Si embargo, las cosas básicas son las que has visto en este programa: 1. Abrir un socket. 2. Abrir un stream de entrada y otro de salida hacia el socket. 3. Leer y escribir a través del socket de acuerdo al protocolo del servidor. 4. Cerrar los Streams. 5. Cerrar el socket. Sólo el paso 3 será diferente de un cliente a otro, dependiendo del servidor.Los otros pasos permanecen inalterables.
16 Servlets Programa en JAVA que se ejecuta en el marco de un servicio de red, como por ejemplo un servidor web, y que recibe y responde a las peticiones de un cliente. Los clientes pueden invocarlo utilizando el protocolo HTTP Equipo cliente Servidor Web Explorador Servlet Peticion HTTP Respuesta HTTP
17 Servlets (II) Caracteristicas Puede comunicarse con otro sevlet para ayudarle en su trabajo, o bien facilitar el acceso a bases de datos Son seguros y portables debido a que se ejecutan bajo la máquina virtual de Java, al mecanismo de excepciones y al uso del administrador de seguridad de java. Java proporciona el soporte necesario para escribir servlets a través del paquete javax.servlet Son independientes de la plataforma Son más rápidos que los programas CGI y que los scrips
18 Servlets. Ejemplo Un ejemplo sencillo consisté en una página HTML que contiene un campo de entrada con los correspondientes botones de Submit y Reset A pulsar sobre el botón Submit se producirá la ejecución del Servlet en el servidor, procesará la información recibida, y mostrará como resultado una página HTML con el texto introducido con anterioridad
19 Servlets. Ejemplo (II) El codigo html sería muy sencillo sólo destacar que en el action del form, indica la acción a desencadenar en el servidor al pulsar el botón Submit
< html> < head> < title>Ejemplo "Mi Primer Servlet"< /title> < /head> < body> < form action=http://servidor:8080/servlet/MiPrimerServlet method=POST> < BR> < BR>Introduzca un texto en el cuadro y pulse "Submit"< BR> < BR> < input type=text name=TEXTO> < BR> < BR>< input type=submit>< input type=reset>< /form> < /body> < /html>
20 Servlets. Ejemplo (III) Código Servlet. Destacar principalmente la utilización de los paquetes javax.servlet.* y javax.servlet.http.*, y la cláusula extends que define el programa como una extension de HttpServlet. El fichero que contiene el Servlet lo llamaremos MiPrimerServlet.java. // MiPrimerServlet.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*;
public class MiPrimerServlet extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintStream out = new PrintStream(res.getOutputStream()); res.setContentType("text/html"); String TEXTO = req.getParameter("TEXTO"); out.println("< p>Usted ha escrito : "+TEXTO+"< /p>"); } }
21 El ciclo de vida 1) Cuando el servidor carga el Servlet (solo lo carga ante la primera petición, después ya no hace falta), invoca el método init. Todas las peticiones que lleguen antes de que este método finalice su ejecución, habrán de esperar para ser atendidas. 2) Una vez finalizada la ejecución del método init, todas las peticiones son atendidas por el método service. Normalmente el servidor puede manejar varias peticiones simultáneamente y asigna un hilo propio a cada petición. 3) Cuando el servidor quiere descargar el Servlet invoca el método destroy.
22 El API de los Servlets El API utilizado para la programación de Servlets incluye dos paquetes El paquete javax.servlet, define la interfaz Servlet y su implementación GenericServlet. Es esta la interfaz que define los métodos del Ciclo de Vida. También destacan las interfaces ServletRequest y ServletResponse, que definen la mecánica de las peticiones y las respuestas. El paquete javax.servlet.http, que es una especialización del paquete anterior para su utilización con el protocolo http. Este paquete define la clase HttpServlet que es una extensión de GenericServlet. Asimismo incluye las interfaces HttpServletRequest y HttpServletResponse, que son extensiones de ServletRequest y ServletResponse respectivamente.
23 Servlets & JDBC La clave del éxito de las mejores páginas Web, reside en la presentación de la información, de forma interactiva, práctica y atractiva. La interactividad en la presentación de la información, se basa en la consulta de bases de datos por parte de un software, que hace de intermediario entre el cliente y el sistema que almacena la información. A las aplicaciones cliente-servidor que utilizan este tipo de arquitectura, se las denomina aplicaciones de tres capas.
24 Arquitectura Cliente-Servidorde tres capas En una aplicación cliente-servidor de tres capas, el software intermediario hace de puente entre la parte cliente y el servidor de base de datos que posee la información
Por un lado tendríamos una maquina en la que un browser ejecuta un Applet ó muestra un formulario HTML. Por el otro tendríamos una máquina servidora, en la que un software servidor de Web, recibe las peticiones de los clientes, y desencadena la ejecución del Servlet. Este Servlet trabajaría con una base de datos alojada en otro servidor dedicado en exclusiva a esta función.
25 JDBC JDBC son las siglas de Java Database Connection, y se trata de una API JAVA que proporciona una interfaz similar a ODBC para trabajar con bases de datos SQL. JDBC se basa en el X/Open SQL CLI, al igual que el ODBC de Microsoft JDBC no es un lenguaje de interrogación, sino que simplemente es una interfaz basada en JAVA para trabajar con SQL. Las aplicaciones pueden utilizar JDBC, por ejemplo, para someter sentencias SQL a un sistema gestor de bases de datos. JDBC se encarga de gestionar aspectos tales como conexiones a bases de datos, recuperación de resultados de las interrogaciones, transacciones, conversiones de tipos SQL a tipos JAVA y viceversa
Página anterior | Volver al principio del trabajo | Página siguiente |