Los servlets Java son programas que se ejecutan en un servidor web o de aplicaciones y actúan como una capa intermedia entre una solicitud procedente de un navegador web u otro cliente HTTP y las bases de datos o aplicaciones en el servidor HTTP.

Los servlets ofrecen varias ventajas en comparación con CGI.

  • El rendimiento es significativamente mejor.

  • Los servlets se ejecutan dentro del espacio de direcciones de un servidor web. No es necesario crear un proceso separado para manejar cada solicitud de cliente.

  • Los servlets son independientes de la plataforma porque están escritos en Java.

  • El administrador de seguridad de Java en el servidor impone un conjunto de restricciones para proteger los recursos en una máquina servidor. Entonces los servlets son confiables.

  • La funcionalidad completa de las bibliotecas de clases de Java está disponible para un servlet. Puede comunicarse con applets, bases de datos u otro software a través de los mecanismos de conexión y RMI que ya ha visto.

Los servlets realizan las siguientes tareas principales:

  • Leer los datos explícitos enviados por los clientes (navegadores). Esto incluye un formulario HTML en una página web o también podría provenir de un subprograma o un programa cliente HTTP personalizado.

  • Lea los datos de solicitud HTTP implícitos enviados por los clientes (navegadores). Esto incluye cookies, tipos de medios y esquemas de compresión que el navegador comprende, etc.

  • Procese los datos y genere los resultados. Este proceso puede requerir hablar con una base de datos, ejecutar una llamada RMI o CORBA, invocar un servicio web o calcular la respuesta directamente.

  • Envíe los datos explícitos (es decir, el documento) a los clientes (navegadores). Este documento se puede enviar en una variedad de formatos, incluidos texto (HTML o XML), binarios (imágenes GIF), Excel, etc.

  • Envíe la respuesta HTTP implícita a los clientes (navegadores). Esto incluye decirle a los navegadores u otros clientes qué tipo de documento se está devolviendo (por ejemplo, HTML), configurar cookies y parámetros de almacenamiento en caché y otras tareas similares.

El ciclo de vida de un servlet se puede definir como el proceso completo desde su creación hasta su destrucción. Las siguientes son las rutas seguidas por un servlet.

  • El servlet se inicializa llamando al método init ().

  • El servlet llama al método service () para procesar la solicitud de un cliente.

  • El servlet se termina llamando al método destroy ().

  • Finalmente, el servlet es basura recolectada por el recolector de basura de la JVM.

El método init está diseñado para ser llamado solo una vez. Se llama cuando se crea el servlet por primera vez y no se vuelve a llamar para cada solicitud de usuario. Por lo tanto, se usa para inicializaciones únicas, al igual que con el método init de los applets.

Cada vez que el servidor recibe una solicitud de un servlet, el servidor genera un nuevo hilo y llama al servicio. El método service () verifica el tipo de solicitud HTTP (GET, POST, PUT, DELETE, etc.) y llama a los métodos doGet, doPost, doPut, doDelete, etc., según corresponda.

Una solicitud GET es el resultado de una solicitud normal de una URL o de un formulario HTML que no tiene METHOD especificado y debe ser manejado por el método doGet ().

Una solicitud POST resulta de un formulario HTML que enumera específicamente POST como METHOD y debe ser manejado por el método doPost ().

El método destroy () se llama solo una vez al final del ciclo de vida de un servlet.

El método init () simplemente crea o carga algunos datos que se utilizarán durante la vida útil del servlet.

Este método le da a su servlet la oportunidad de cerrar conexiones de base de datos, detener subprocesos en segundo plano, escribir listas de cookies o conteos de visitas al disco y realizar otras actividades de limpieza.

Este método debe usarse para obtener datos del servidor.

Este método debe usarse para procesar datos en el servidor.

El método service () es el método principal para realizar la tarea real. El contenedor de servlets (es decir, el servidor web) llama al método service () para manejar las solicitudes provenientes del cliente (navegadores) y para escribir la respuesta formateada al cliente.

Cada vez que el servidor recibe una solicitud de un servlet, el servidor genera un nuevo hilo y llama al servicio. El método service () verifica el tipo de solicitud HTTP (GET, POST, PUT, DELETE, etc.) y llama a los métodos doGet, doPost, doPut, doDelete, etc., según corresponda.

Aquí está la firma de este método:

public void service(ServletRequest request, 
                    ServletResponse response) 
   throws ServletException, IOException{
}

El método service () es llamado por el contenedor y el método service invoca los métodos doGe, doPost, doPut, doDelete, etc., según corresponda. Por lo tanto, no tiene nada que ver con el método service (), pero anula doGet () o doPost () según el tipo de solicitud que reciba del cliente.

Los servlets manejan el análisis de datos de formularios automáticamente utilizando los siguientes métodos según la situación:

  • getParameter(): Llamas al método request.getParameter () para obtener el valor de un parámetro de formulario.

  • getParameterValues(): Llame a este método si el parámetro aparece más de una vez y devuelve varios valores, por ejemplo, checkbox.

  • getParameterNames(): Llame a este método si desea una lista completa de todos los parámetros en la solicitud actual.

El método getParameterNames () de HttpServletRequest devuelve una lista completa de todos los parámetros en la solicitud actual. Este método devuelve una enumeración que contiene los nombres de los parámetros en un orden no especificado.

Una vez que tenemos una Enumeración, podemos recorrer la Enumeración de la manera estándar, usando el método hasMoreElements () para determinar cuándo parar y usando el método nextElement () para obtener el nombre de cada parámetro.

Podemos usar el método getHeaderNames () de HttpServletRequest para leer la información del encabezado HTTP. Este método devuelve una enumeración que contiene la información del encabezado asociada con la solicitud HTTP actual.

Una vez que tenemos una Enumeración, podemos recorrer la Enumeración de la manera estándar, usando el método hasMoreElements () para determinar cuándo parar y usando el método nextElement () para obtener el nombre de cada parámetro.

Cuando un navegador solicita una página web, envía mucha información al servidor web que no se puede leer directamente porque esta información viaja como parte del encabezado de la solicitud HTTP. HTTPServletRequest representa esta solicitud HTTP.

cuando un servidor web responde a una solicitud HTTP al navegador, la respuesta generalmente consiste en una línea de estado, algunos encabezados de respuesta, una línea en blanco y el documento. HTTPServletResponse representa esta respuesta HTTP.

Obtenga el objeto de PrintWriter usando request.

PrintWriter out = response.getWriter();

Ahora imprima html.

out.println("Hello World");

Podemos usar el método setStatus (código de estado) de HttpServletResponse para enviar un error de autenticación.

// Set error code and reason.
response.sendError(407, "Need authentication!!!" );

La redirección de página se usa generalmente cuando un documento se mueve a una nueva ubicación y necesitamos enviar al cliente a esta nueva ubicación o puede ser debido al equilibrio de carga o por simple aleatorización. La forma más sencilla de redirigir una solicitud a otra página es utilizar el método sendRedirect () del objeto de respuesta.

Este método genera una respuesta 302 junto con un encabezado de ubicación que proporciona la URL del nuevo documento.

Este método envía un código de estado (generalmente 404) junto con un mensaje corto que se formatea automáticamente dentro de un documento HTML y se envía al cliente.

Los filtros de servlet son clases de Java que se pueden utilizar en la programación de servlets para los siguientes propósitos:

  • Para interceptar solicitudes de un cliente antes de que accedan a un recurso en el back-end.

  • Para manipular las respuestas del servidor antes de que se envíen de vuelta al cliente.

Hay varios tipos de filtros sugeridos por las especificaciones:

  • Filtros de autenticación.

  • Filtros de compresión de datos.

  • Filtros de cifrado.

  • Filtros que desencadenan eventos de acceso a recursos.

  • Filtros de conversión de imágenes.

  • Filtros de registro y auditoría.

  • Filtros de cadena TIPO MIME.

  • Filtros de tokenización.

  • Filtros XSL / T que transforman el contenido XML.

Los filtros se implementan en el archivo descriptor de implementación web.xml y luego se asignan a nombres de servlet o patrones de URL en el descriptor de implementación de su aplicación.

El contenedor web llama a este método para indicar a un filtro que se está poniendo en servicio.

El contenedor llama a este método cada vez que se pasa un par de solicitud / respuesta a través de la cadena debido a una solicitud del cliente de un recurso al final de la cadena.

El contenedor web llama a este método para indicar a un filtro que se está poniendo fuera de servicio.

Si.

Si. El orden de los elementos de mapeo de filtros en web.xml determina el orden en el que el contenedor web aplica el filtro al servlet. Para invertir el orden del filtro, solo necesita invertir los elementos de mapeo de filtro en el archivo web.xml.

Utilice el elemento de página de error en web.xml para especificar la invocación de servlets en respuesta a determinadas excepciones o códigos de estado HTTP.

Si desea tener un controlador de errores genérico para todas las excepciones, debe definir la siguiente página de error en lugar de definir elementos de página de error separados para cada excepción:

<error-page>
   <exception-type>java.lang.Throwable</exception-type >
   <location>/ErrorHandler</location>
</error-page>

Las cookies son archivos de texto almacenados en la computadora del cliente y se guardan para varios propósitos de rastreo de información. Java Servlets admite de forma transparente las cookies HTTP.

La configuración de cookies con servlet implica tres pasos:

(1) Creación de un objeto Cookie: usted llama al constructor Cookie con un nombre de cookie y un valor de cookie, los cuales son cadenas.

Cookie cookie = new Cookie("key","value");

Tenga en cuenta que ni el nombre ni el valor deben contener espacios en blanco ni ninguno de los siguientes caracteres: [] () =, "/? @:;

(2) Establecer la edad máxima: utilice setMaxAge para especificar cuánto tiempo (en segundos) debe ser válida la cookie. Lo siguiente configuraría una cookie durante 24 horas.

cookie.setMaxAge(60*60*24);

(3) Envío de la cookie a los encabezados de respuesta HTTP: utilice response.addCookie para agregar cookies en el encabezado de respuesta HTTP de la siguiente manera:

response.addCookie(cookie);

Para leer las cookies, debe crear una matriz de objetos javax.servlet.http.Cookie llamando al método getCookies () de HttpServletRequest. Luego, recorra la matriz y use los métodos getName () y getValue () para acceder a cada cookie y valor asociado.

Eliminar las cookies es muy sencillo. Si desea eliminar una cookie, simplemente debe seguir estos tres pasos:

  • Leer una cookie que ya existe y almacenarla en el objeto Cookie.

  • Establezca la edad de la cookie como cero usando el método setMaxAge () para eliminar una cookie existente.

  • Vuelva a agregar esta cookie al encabezado de respuesta.

La sesión proporciona una forma de identificar a un usuario en más de una solicitud de página o visita a un sitio web y de almacenar información sobre ese usuario. La sesión persiste durante un período de tiempo específico, en más de una conexión o solicitud de página del usuario.

Puede agregar algunos datos adicionales al final de cada URL que identifica la sesión, y el servidor puede asociar ese identificador de sesión con los datos que ha almacenado sobre esa sesión. Por ejemplo, con http://tutorialspoint.com/file.htm;sessionid=12345, el identificador de sesión se adjunta como sessionid = 12345 al que se puede acceder en el servidor web para identificar al cliente.

Obtendría el objeto HttpSession llamando al método público getSession () de HttpServletRequest, como se muestra a continuación:

// Create a session object if it is already not  created.
HttpSession session = request.getSession();

Cuando haya terminado con los datos de sesión de un usuario, tiene varias opciones:

  • Remove a particular attribute: Puede llamar al método public void removeAttribute (String name) para eliminar el valor asociado con una clave en particular.

  • Delete the whole session:Puede llamar al método public void invalidate () para descartar una sesión completa. Configuración del tiempo de espera de la sesión: puede llamar al método public void setMaxInactiveInterval (int interval) para configurar el tiempo de espera de una sesión individualmente.

  • Log the user out: Los servidores que soportan servlets 2.4, puede llamar al cierre de sesión para cerrar la sesión del cliente en el servidor web e invalidar todas las sesiones que pertenecen a todos los usuarios.

setAttribute (nombre de cadena, valor de objeto) del objeto HTTPSession vincula un objeto a esta sesión, utilizando el nombre especificado y se puede utilizar para actualizar un atributo en la sesión.

setMaxInactiveInterval (int interval) del objeto HTTPSession especifica el tiempo, en segundos, entre las solicitudes del cliente antes de que el contenedor de servlets invalide esta sesión.

La forma más sencilla de actualizar una página web es utilizando el método setIntHeader () del objeto de respuesta.

Esto significa permitir que un sitio web proporcione diferentes versiones de contenido traducidas al idioma o nacionalidad del visitante.

Esto significa agregar recursos a un sitio web para adaptarlo a una región geográfica o cultural en particular, por ejemplo, la traducción al hindi a un sitio web.

Ésta es una región geográfica o cultural particular. Por lo general, se denomina símbolo de idioma seguido de un símbolo de país separado por un guión bajo. Por ejemplo, "en_US" representa la configuración regional en inglés de EE. UU.

A continuación se muestra el método del objeto de solicitud que devuelve el objeto Locale.

java.util.Locale request.getLocale()

El siguiente método devuelve un nombre para el país de la configuración regional que es apropiado para mostrar al usuario.

String getDisplayCountry()

¿Lo que sigue?

Además, puede repasar las asignaciones anteriores que haya realizado con el tema y asegurarse de poder hablar con confianza sobre ellas. Si está más fresco, el entrevistador no espera que responda preguntas muy complejas, sino que debe hacer que sus conceptos básicos sean muy sólidos.

En segundo lugar, realmente no importa mucho si no pudo responder algunas preguntas, pero es importante que lo que sea que haya respondido, debe haberlo respondido con confianza. Así que siéntete seguro durante tu entrevista. En tutorialspoint le deseamos la mejor suerte para tener un buen entrevistador y todo lo mejor para su futuro. Salud :-)