|
|
(52 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
− | ===Aplicaciones Web ===
| + | {{:Usuario:ManuelRomero/micursos/Tomcat/nav}} |
− | ;Definición de aplicación web
| + | <br> |
− | :Aplicación informática que se ejecuta en un entorno web | + | |
− | :Modelo de ejecución Cliente /Servidor | + | |
− | :Necesario un protocolo de comunicación .
| + | |
− | ;Elementos
| + | |
− | :'''''Cliente''''': navegador.
| + | |
− | :'''''Servidor''''': servidor web
| + | |
− | :'''''Comunicación''''': protocolo HTTP
| + | |
− | ===Servidor de aplicaciones===
| + | |
− | ;Definición de servidor de aplicaciones
| + | |
− | :Es un software que proporciona aplicaciones a los equipos o dispositivos cliente,
| + | |
− | :Es muy frecuente el uso de la red de Internet para realizarlo
| + | |
− | :Utiliza el protocolo '''''http'''''
| + | |
− | :Presenta dos diferencias con los servidores web (p.e. '''apache''') ç
| + | |
− | #Hace un extensivo del contenido dinámico
| + | |
− | #De manera muy frecuente realiza integración con bases de datos.
| + | |
− | ===Ventajas de servidor de aplicaciones===
| + | |
− | ;centralización y simplicidad en desarrollo de aplicaciones
| + | |
− | :Las aplicaciones se ensamblan desde bloques que el servidor provee
| + | |
− | ;Integridad de datos y de código
| + | |
− | :Al actulizar los datos que estás centralizados todos los clientes serán conscientes de ello
| + | |
− | ===Tomcat ===
| + | |
− | ;Definición
| + | |
− | :Tomcat es el servidor web (incluye el servidor Apache) que puede gestionar las solicitudes y respuestas http
| + | |
− | :También es servidor de aplicaciones del proyecto Yakarta contenedor de '''''Servlets y JSP'''''
| + | |
− | :Especialmente útil para porgramar aplicaciones web usando '''''java'''''
| + | |
− | :Incluye el compilador Jasper, que compila JSP covirtiéndolas en servlets.
| + | |
− | ===Servlet===
| + | |
− | ;Definición
| + | |
− | :Un servlet es un programa escrito en java
| + | |
− | :se ejecuta en un servidor
| + | |
− | :normalmente se utiliza para generar contenido html dinámico.
| + | |
− | *Ejemplo de servlet en java
| + | |
− | <source lang=java>
| + | |
− | Código de ejemplo de un Servlet que procesa una petición GET y devuelve una página web HTML sencilla:
| + | |
− | package org.pruebas;
| + | |
− |
| + | |
− | import java.io.IOException;
| + | |
− | import java.io.PrintWriter;
| + | |
− | import javax.servlet.ServletException;
| + | |
− | import javax.servlet.http.HttpServlet;
| + | |
− | import javax.servlet.http.HttpServletRequest;
| + | |
− | import javax.servlet.http.HttpServletResponse;
| + | |
− |
| + | |
− | public class HolaMundoServlet extends HttpServlet {
| + | |
− |
| + | |
− | /**
| + | |
− | * Servlet de ejemplo que procesa una petición GET
| + | |
− | * @param request
| + | |
− | * @param response
| + | |
− | * @throws ServletException
| + | |
− | * @throws IOException
| + | |
− | */
| + | |
− | @Override
| + | |
− | public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
| + | |
− | PrintWriter out = response.getWriter();
| + | |
− | out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
| + | |
− | out.println("<html>");
| + | |
− | out.println("<head><title>Ejemplo Hola Mundo</title></head>");
| + | |
− | out.println("<body>");
| + | |
− | out.println("<h1>¡Hola Mundo!</h1>");
| + | |
− | out.println("</body></html>");
| + | |
− | }
| + | |
− | } | + | |
− | </source> | + | |
− | *Al final del tema al estudiar el despliegue web y analizar el fichero web.xml del servidor de aplicaciones web o contendedor de servlet tomcat probaremos este fichero.
| + | |
− | ===JSP===
| + | |
− | ;Definición
| + | |
− | :JSP es un lenguaje de programación parece php al lado del cliente
| + | |
− | :Se puede embeber junto con códgio html
| + | |
− | :El servidor interpretar JSP de la misma manera en la que interpreta PHP.
| + | |
− | *Ejemplo sencillo de un jsp
| + | |
− | <source lang=HTML>
| + | |
− | <html>
| + | |
− | <body>
| + | |
− | <% out.println("Hola mundo"); %>
| + | |
− | </body>
| + | |
− | </html>
| + | |
− | </source>
| + | |
− | ===Tomcat contenedor de servlets===
| + | |
− | *Tomcat es un contenedor de servlets con un entorno JSP.
| + | |
− | ;Contenedor de servlets
| + | |
− | :es un shell de ejecución que maneja e invoca servlets por cuenta del usuario.
| + | |
− | ===Clasificación de contenedores de servlets===
| + | |
− | Contenedores de servlets standalone
| + | |
− | (independientes): Estos son una parte integral del servidor
| + | |
− | web. Este es el caso en el que se usa un servidor web basado en Java, por ejemplo, el contenedor
| + | |
− | de servlets es parte de JavaWebServer (actualmente sustituido por iPlanet). Por defecto Tomcat
| + | |
− | trabaja en este modo, sin embargo, la mayoría de los servidores no están basados en Java.
| + | |
− | 2. Contenedores de servlets dentrodeproceso:
| + | |
− | El contenedor servlets es una combinación de un
| + | |
− | plugin para el servidor web y una implementación de contenedor Java. El plugin del servidor web
| + | |
− | abre una JVM (Máquina Virtual Java) dentro del espacio de direcciones del servidor web y permite
| + | |
− | que el contenedor Java se ejecute en él. En el caso de que una petición debiera ejecutar un servlet,
| + | |
− | el plugin toma el control sobre la petición y lo pasa al contenedor Java (usando JNI). Un
| + | |
− | contenedor de este tipo es adecuado para servidores multithread
| + | |
− | de un sólo proceso y proporciona
| + | |
− | un buen rendimiento pero está limitado en escalabilidad.
| + | |
− | 3. Contenedores de servlets fueradeproceso:
| + | |
− | El contenedor servlets es una combinación de un
| + | |
− | plugin para el servidor web y una implementación de contenedor Java que se ejecuta en una JVM
| + | |
− | fuera del servidor web. El plugin del servidor web y el JVM del contenedor Java se comunican
| + | |
− | usando algún mecanismo IPC (normalmente sockets TCP/IP). Si una cierta petición tuviese que
| + | |
− | ejecutar un servlets, el plugin toma el control sobre la petición y lo pasa al contenedor Java
| + | |
− | (usando IPCs). El tiempo de respuesta en este tipo de contenedores no es tan bueno como el
| + | |
− | anterior, pero obtiene mejores rendimientos en otras cosas (escalabilidad, estabilidad, etc.)
| + | |