![](../images/javaservlet.png)
¿Qué es un Servlet?
Existen muchas definiciones posibles para el concepto de Servlet, a continuación expondremos algunas de las muchas que hay:
- Según la tecnologia: "Un Servlet es una clase en lenguaje Java usada para ampliar la funcionalidad de los servidores web a los que se accede via modelo de programación request-response."
- Según la arquitectura: un Servlet es un componente Web que se ejecuta dentro de un contenedor web y genera contenido dinámico.
- Según la programación: Los Servlets son pequeñas clases Java independientes de la plataforma compiladas en bytecode que pueden ser cargadas dinámicamente y ejecutadas dentro de un servidor web.
- Etc.
¿Como funcionan los servlets?
La funcionalidad de los Servlets se resume en lo siguiente:
- Leer los datos enviados por el cliente.
- Extraer cualquier información útil incluida en la cabecera HTTP o en el cuerpo del mensaje de petición enviado por el cliente.
- Generar dinámicamente resultados.
- Formatear los resultados en un documento HTML.
- Establecer los parámetros HTTP adecuados incluidos en la cabecera de la respuesta (por ejemplo: el tipo de documento, cookies, etc.)
- Enviar el documento final al cliente.
![](../images/servletexplicacion.jpg)
Ventajas de los Servlets
Las ventajas más destacables del uso de Servlets son las siguientes:
- Es integrable con páginas JSP y se pueden usar filtros.
- Instancia permanentemente cargada en memoria por cada Servlet. Cada petición se ejecuta en un hilo, no en un proceso.
- Con los Servlets, hay n threads pero sólo una copia de la clase Servlet. Los Servlet también tienen más alternativas que los programas CGI para optimizaciones como mantener abiertas las conexiones de las bases de datos.
- Los Servlets están escritos en Java y siguen un API bien estandarizado.
- Puede ser utilizados sobre cualquier SO. y en la mayoría de servidores Web.
- Por ser Java ofrece: máquina virtual, chequeo de tipos, gestión de memoria, excepciones, seguridad, etc.
- Actúan como capa intermedia entre l apetición que proviene del navegador Web u otro cliente HTTP y Bases de Datos o Aplicaciones en el servidor HTTP.
Código básico de Servlet
El código básico de un Servlet podria ser asi:
import java.io.*; import javax.Servlet.*; import javax.Servlet.http.*; public class Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
Diferencias entre jsp y servlets
La diferencia entre Servlets y JSP es que los Servlets son clases que deben implementar la clase abstracta HttpServlet, en especial el método doGet() o doPost() y deben ser previamente compilados, mientras que los archivos JSP contienen código Java entre código HTML utilizando los símbolos <% y %>. Por esto un archivo JSP debe ser interpretado por el servidor al momento de la petición por parte del usuario