INTRODUCCIÓN A LAS APLICACIONES WEB Y TECNOLOGÍA JAVA Jaime Fernández Mayo 2006 Índice ¾ Java ¾ Aplicaciones web ¾ Servlets – JSP ¾ Servidores de aplicaciones – IDE`s ¾ Ejemplo Java ¾ Historia z Lenguaje orientado a objetos creado por Sun Microsystems • • • z Encapsulación – ocultacion de datos y metodos Herencia Polimorfismo – circulo.area() , cuadrado.area() Éxito alcanzado gracias a: • Internet: aplicaciones web • “Independencia” del S.O. y plataforma • Marketing Plataforma Java Características ¾ El código Java se estructura en clases z ¾ ¾ Clase Object de la que derivan las demás Los tipos básicos no son clases z ¾ void, char, boolean, byte, int, array Herencia simple: z ¾ Las clases se estructuran a su vez en paquetes las clases derivadas pueden añadir variables y (re)definir métodos Herencia múltiple: interfaces z no definen ninguno de sus métodos y únicamente declaran constantes class Circulo extends Figura implements Superficie CONTROL DE ACCESO En variables y métodos miembro - Tres tipos: - - public protected private Modificador acceso Misma clase Subclase Clase externa en el mismo paquete Clase externa en otro paquete Public 9 9 9 9 Protected 9 9[*] 9 8 Private 9 8 8 8 Concepto de static Afecta a variables y métodos - Hacen referencia a la clase (no al objeto) - Se inicializan justo antes de utilizar por primera vez la clase - Llamada: - - - Clase.variable (objeto.variable -> no aconsejado). Clase.metodo() Ej: Math.cos() Aplicaciones Web Pila de protocolos HTML HTTP TCP IP MAC - LLC FÍSICO Modelo Cliente Servidor ¾ Cuando un usuario desea acceder a una determinada página web, utiliza un navegador ¾ Similarmente en el otro extremo se precisa un servidor HTTP Evolución ¾ Inicialmente, únicamente información estática. z z HTML estático Aplicaciones “pobres” ¾ Posteriormente, ejecución de código en el lado del cliente: z z HTML dinámico: JavaScript Principalmente mejoras de interfaz Evolución (II) ¾ Programación en el lado del servidor: z z z z z z z CGIs Páginas ASP Páginas JSP, servlets PHP J2EE, .NET Zope, Ruby on Rails … Evolución (III) ¾ Web Services z z z z z Interoperabilidad entre servidores y clientes Programación de procedimientos remotos WSDL SOAP, XML-RPC WS-Security SERVLET – JSP TECNOLOGÍA SERVLET INTRODUCCION ¾ Son la respuesta de la tecnología Java a la programación CGI. ¾ Programas Java que se ejecutan en el SERVIDOR y construyen dinámicamente una página HTML Servlets – Caracteristicas ¾ ¾ ¾ ¾ Tienen acceso a todas las Apis de Java: JDBC, JavaMail, etc.. Permiten utilizar cookies y seguimiento de sesiones (HttpSession), muy útiles para el desarrollo de aplicaciones Web. Define métodos para atender a cada una de las peticiones de HTTP que se puedan dar: doGet, doPost, doPut... Dos Parámetros importantes: • HttpServletRequest: modeliza la petición del usuario y contiene información de la petición HTTP realizada • HttpServletResponse: objeto que implementa la conexión de salida con el usuario Servlets – Comparativa con CGI ¾ ¾ ¾ ¾ ¾ Eficiencia: CGI arranca un proceso por cada llamada. En Servlets, por cada llamada se controla por un thread de Java Potencia: Permite hacer fácilmente cosas que son complicadas de hacer con CGI normal Portabilidad: Escrito en Java Funcionalidad: acceso a la Api de Java Barato: añadir soporte para servlets en un servidor web es gratuito o muy barato Servlets - Funcionamiento servlet cliente servidor pagina.html Servlets - Ejemplo ¾ http://miservidor:8080/HelloWorld?nombre=Iñaki ¾ Servlet que escribe código HTML public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); String nom = request.getParameter(“nombre”); PrintWriter out = response.getWriter(); out.println( "<HTML>\n" + "<HEAD><TITLE>Hello World</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello World, + nom + </H1>\n" + "</BODY>+ </HTML>" ); } } Tecnología JSP – Introduccion ¾ Es un fichero de texto con etiquetas HTML y código java embebido ¾ Se compilan automáticamente según se necesitan: se convierte en un servlet ¾ Desde un JSP: uso de JavaBeans, uso de JDBC. Cualquier clase de Java JSP - Ejemplo servlet <%@ page import=“ java.util.*” %> <html> <head> <title>Ejemplo de JSP</title> </head> <body> compilación <% Date date = new Date(); String hoy = DateFormat.getDateInstance().format(d);%> <h1> Hola, <%request.getParameter(“nombre”)%></h2> <br> <h2>Hoy es : <%= hoy %> </h2> </body> </html> fichero jsp JSP vs Servlet • Servlets: Java con HTML embebido • JSPs: HTML con Java embebido ¾ Semejanzas: z z z ¾ JSP son una extensión de Servlets. No aporta funcionalidades nuevas Un JSP compilado es un Servlet Misma función: construir contenido dinámico Diferencias: z z JSP separa más claramente el diseño de la lógica Más sencillo modificar código HTML que miles de sentencias println JSP – SERVLET: FUNCIONAMIENTO GENERAL CONTROL CONTROL servlet MODELO VISTA cliente servidor jsp IDE´S - SERVIDORES IDE´s ¾ Alternativa a la línea de comandos ¾ Integración de herramientas: z z z ¾ Compilación Depuración (necesitan el SDK) Ant, CVS… Modulares: ampliables mediante plugins ¾ Ayuda a la programación IDE´s ¾ Eclipse: z z z ¾ Open Source, impulsado por IBM meta-IDE: sirve para muchas cosas SWT: sustituye a AWT y Swing NetBeans: z z z Open Source, desarrollado por Sun Generación automática de plantillas Java 100% estándar Otros IDE ¾ ¾ ¾ ¾ ¾ BlueJ (http://www.bluej.org/) - Software libre jCreator (http://www.jcreator.com/) - Software propietario, versión gratuita disponible. Sun Java Studio (http://wwws.sun.com/software/sundev/jde/) Software propietario, extensión de netBeans. JBuilder (http://www.borland.com/jbuilder/) Software propietario IntelliJ IDEA (http://www.jetbrains.com/idea/) Software propietario Motor de Servlet ¾ Aplicación que contiene la aplicación java ¾ Necesario para ejecutar los servlet y jsp ¾ Productos z z z z z z Apache Tomcat BEA WebLogic IBM WebSphere Sun/Netscape IPlanet Macromedia JRun … EJEMPLO PRÁCTICO