¿Cuáles son las preguntas JSP y Servlet formuladas en una entrevista?

Preguntas y respuestas de la entrevista del servlet

Diferencia entre la directiva include y la acción include en JSP

La directiva de inclusión es y la acción de inclusión en JSP es

1. El recurso incluido por la directiva include se carga durante el tiempo de traducción jsp mientras que el recurso incluido por la acción include se carga durante el tiempo de solicitud.

2. Cualquier cambio en el recurso incluido no será visible en caso de incluir la directiva hasta que el archivo jsp vuelva a compilarse. Mientras que en caso de incluir nuevamente, cualquier cambio en el recurso incluido será visible en la próxima solicitud.

3. la directiva include es importación estática mientras que la acción include es importación dinámica

4. la directiva include utiliza el atributo de archivo para especificar el recurso que se incluirá mientras que la acción use el atributo de página para el mismo propósito. 5. Otra diferencia sugerida por N. Satish babu en la sección de comentarios es que el valor del atributo para la acción de inclusión JSP puede ser dinámico y solicitar expresión de tiempo y también puede pasar el parámetro al archivo que va a incluir usando la acción de inclusión, por ejemplo, Eso es todo en esta popular entrevista de jsp, la diferencia entre JSP incluye la acción y la directiva de inclusión . Ahora sabemos qué incluye la directiva y cuándo usar incluir acción o incluir directiva. Preguntas: 1 ¿Qué es un servlet? Los servlets son los programas del lado del servidor que se ejecutan en el servidor que permiten al desarrollador agregar contenido dinámico y entregarlo al servidor web y servidor web enviado de vuelta al cliente. Aunque los servlets pueden responder a cualquier tipo de solicitud, se usan comúnmente para extender las aplicaciones alojadas por servidores web. Para tales aplicaciones, la tecnología Java Servlet define clases de servlet específicas de HTTP. Los servlets proporcionan métodos basados ​​en componentes e independientes de la plataforma para crear aplicaciones basadas en la Web, sin las limitaciones de rendimiento de los programas CGI.

Los paquetes javax.servlet y javax.servlet.http proporcionan interfaces y clases para escribir servlets. Todos los servlets deben implementar la interfaz Servlet, que define los métodos del ciclo de vida.

Los usos típicos de los Servlets HTTP incluyen:

* Procesamiento y / o almacenamiento de datos enviados por un formulario HTML.

* Proporcionar contenido dinámico, por ejemplo, devolver los resultados de una consulta de base de datos al cliente.

* Gestión de información de estado sobre el HTTP sin estado, por ejemplo, para un sistema de carrito de compras en línea que gestiona los carritos de compras para muchos clientes concurrentes y asigna cada solicitud al cliente correcto.

Ques: 2 ¿Podemos usar el constructor, en lugar de init (), para inicializar el servlet?

Si. Pero no obtendrá las cosas específicas del servlet del constructor. Por lo tanto, no use constructor en lugar de init (). La razón original de init () era que las versiones antiguas de Java no podían invocar dinámicamente a los constructores con argumentos, por lo que no había forma de darle al Servidor una configuración ServletConfig. Eso ya no se aplica, pero los contenedores de servlets solo llamarán a su constructor sin argumentos para que no tenga acceso a ServletConfig o ServletContext. Además, todos los demás programadores de servlet esperarán que su código de inicio esté en init ().

Ques: 3 ¿Qué es el contexto de servlet?

El contexto de servlet define un conjunto de métodos que un servlet utiliza para comunicarse con su contenedor de servlet, por ejemplo, para obtener el tipo MIME de un archivo, enviar solicitudes o escribir en un archivo de registro. Un objeto de contexto de servlet es uno por aplicación web por JVM y todos los servlet comparten este objeto. Puede obtener y establecer el objeto de contexto Servlet. Puede usar el objeto de contexto servelt en su programa llamando directamente a getServletContext () o getServletConfig (). GetServletContext ().

Ques: 4 ¿Qué es el mapeo de servlet?

Mapeo de servlet:

MyServlet

myservlets.MappingExample

MyServlet

com / *

Un desarrollador puede asignar todos los servicios dentro de su aplicación web.

Ques: 5 ¿Qué es la sesión?

Una sesión se refiere a todas las conexiones que un solo cliente puede hacer a un servidor en el curso de ver las páginas asociadas con una aplicación determinada. Las sesiones son específicas tanto para el usuario individual como para la aplicación. Como resultado, cada usuario de una aplicación tiene una sesión separada y tiene acceso a un conjunto separado de variables de sesión. Una sesión mantiene todo el estado que construyó agrupado para que las acciones que realice dentro de su sesión no afecten a ningún otro usuario conectado a otras sesiones.

Ques: 6 ¿Qué diferencia hay entre GET y POST? Diferencia entre GET y POST:

* El cliente puede enviar información al servidor por dos métodos: GET y POST.

* El método GET agrega pares de parámetros (nombre / valor) a la URL. La longitud de una URL es limitada, hay una restricción de 255 caracteres en la URL. entonces este método solo funciona si solo hay unos pocos parámetros.

* La principal diferencia entre GET y POST es que POST tiene un cuerpo. A diferencia de GET, los parámetros se pasan en el cuerpo de la POST en lugar de agregar a la URL. Podemos enviar gran cantidad de datos con la POST.

* “GET” es básicamente para obtener (recuperar) datos, mientras que “POST” puede involucrar cualquier cosa, como almacenar o actualizar datos, ordenar un producto o enviar un correo electrónico.

* Los datos enviados con el método GET son visibles en la barra de direcciones del navegador. No envíe datos importantes y confidenciales con el método GET, use POST.

* Get es idempotente, significa que no tiene efectos secundarios al volver a solicitar lo mismo en el servidor.

Ques: 7 ¿Qué mecanismos utiliza un Servlet Container para mantener la información de la sesión?

Los mecanismos utilizados por un Servlet Container para mantener la información de la sesión:

a) Cookies

b) reescritura de URL

c) campos de formulario ocultos

d) Sesiones SSL (usando el protocolo HTTPS)

Ques: 8 ¿Cuáles son las diferentes formas de seguimiento de la sesión?

El concepto de seguimiento de sesión le permite mantener la relación entre las dos solicitudes sucesivas del mismo cliente (navegador). El navegador envía la solicitud al servidor y el servidor procesa la solicitud del navegador, genera la respuesta y devuelve la respuesta al navegador. Al servidor no le preocupa en absoluto quién pregunta por las páginas. El servidor (debido al uso de HTTP como protocolo subyacente) no tiene idea de que estas 2 solicitudes sucesivas provienen del mismo usuario. No hay conexión entre 2 solicitudes sucesivas en Internet.

Hay tres formas de rastrear sesiones:

* Uso de cookies.

* Uso de reescritura de URL.

* Uso de campos de formulario ocultos.

Ques: 9 ¿Cuál es la diferencia entre ServletContext y ServletConfig?

ServletContext y ServletConfig se declaran en el descriptor de despliegue. ServletConfig es uno por servlet y solo se puede acceder dentro de ese servlet específico. ServletContext es uno por aplicación web y accesible para todos los servlets en la aplicación web.

Ques: 10 ¿Cómo puede un servlet actualizarse automáticamente?

Podemos actualizar la página del servlet de dos maneras: una a través del lado del cliente y otra a través de Server Push.

Actualización del lado del cliente:

Actualización del lado del servidor:

response.setHeader (“Actualizar”, 5);

Esto actualizará el navegador cada 5 segundos.

Ques: 11 ¿Qué es el empuje del lado del servidor?

El término “inserción del servidor” generalmente significa que un servidor envía contenido al cliente del navegador. Server push es un esquema solo de Netscape para proporcionar contenido web dinámico. El empuje del lado del servidor es un mecanismo que admite la conexión en tiempo real al servidor con la ventaja de las actualizaciones instantáneas.

El empuje del lado del servidor puede emularse de varias maneras.

* El cliente sondea el servidor en un intervalo determinado, digamos cada cinco minutos. Esta técnica se usa generalmente para actualizar la información de noticias. El cliente hace esto volviendo a cargar una página cada cierto tiempo.

* El cliente usa el tipo de contenido ‘multipart / x-mixed-replace’ cuando envía una respuesta. Se espera que el tipo de contenido envíe una serie de documentos uno tras otro, donde cada uno reemplazará al anterior. El servidor puede retrasarse entre cada parte, lo que da la ilusión de que los datos se actualizan después de un intervalo. Esta técnica requiere una conexión para permanecer abierta.

Ques: 12 ¿Cuál es la cantidad máxima de información que se puede guardar en un objeto de sesión?

No hay límite para la cantidad de información que puede dividirse en el objeto de sesión. Depende de la RAM disponible en la máquina del servidor. El único límite es la longitud de la ID de sesión, que no debe exceder más de 4K. Si los datos que se almacenarán son muy grandes, se prefiere guardarlos en un archivo temporal en el disco duro, en lugar de guardarlos en la sesión.

Ques: 13 ¿Por qué deberíamos optar por la comunicación entre servlets?

Respuesta: Debido a la siguiente razón, necesita comunicación entre servlets:

* Dos servlets quieren comunicarse para completar el carrito de compras.

* Un servlet maneja la solicitud del cliente y lo reenvía a otro servlet para hacer un cálculo o agregar información para completar la vista.

* Un servlet quiere reutilizar algunos métodos de otro servlet.

Ques: 14 ¿Qué es un comentario de salida?

Un comentario que se envía al cliente en el origen de la página visible. El motor JSP maneja un comentario de salida como texto HTML no interpretado, devolviendo el comentario en la salida HTML enviada al cliente. Puedes ver el comentario viendo la página

fuente de su navegador web.

Sintaxis JSP

<! – comentario [] ->

Ejemplo 1

<! – Este es un commnet enviado al cliente en

->

Ques: 15 ¿Cuáles son las diferencias entre una sesión y una cookie? Diferencias entre una sesión y una cookie:

* Una cookie es un dato especial con un poco de metadatos asociados que un servidor HTTP incluye en una respuesta HTTP. Una sesión es una serie de solicitudes y respuestas HTTP relacionadas que

juntos constituyen una sola conversación entre un cliente y un servidor.

* Las cookies se almacenan en el lado del cliente, mientras que la sesión existe en el lado del servidor.

* Una cookie puede mantener información en el navegador del usuario hasta que se elimine, mientras que si cierra su navegador también perderá la sesión.

* Las cookies se usan a menudo para almacenar una identificación de sesión, vinculando la sesión al usuario.

* No hay forma de deshabilitar las sesiones desde el navegador del cliente sino las cookies.

Ques: 16 ¿Qué es HttpTunneling?

Encapsulando la información en el encabezado Http y la dirigió a un servidor en el otro extremo del canal de comunicación que toma los paquetes, despoja los encabezados de encapsulación HTTP y redirige el paquete a su destino final.

HTTP-Tunnel actúa como un servidor de calcetines, lo que le permite utilizar sus aplicaciones de Internet de manera segura a pesar de los firewalls restrictivos y / o no ser monitoreado en el trabajo, la escuela, el gobierno y le brinda una capa adicional de protección contra piratas informáticos, spyware, robo de identidad con nuestro cifrado

Motivo del túnel HTTP:

* Necesita evitar cualquier firewall

* Necesita navegación segura por internet

* Necesita usar programas favoritos sin ser monitoreados por el trabajo, la escuela, el ISP o el gobierno.

* Seguridad adicional para transacciones en línea

* Cifre todo su tráfico de Internet.

* Necesita jugar juegos en línea

* Visite los sitios que anteriormente estaba bloqueado

* Evite la supervisión o regulación de terceros de su navegación y descargas de Internet

* Use sus aplicaciones favoritas previamente bloqueadas

* Ocultar su dirección IP

* Haga que sea casi imposible para usted identificarse en línea.

* Transferencia de datos ilimitada y gratuita

* Compatible con la mayoría de las principales aplicaciones de Internet

* Servidores seguros y libres de virus

* 99% de tiempo de actividad

* Sin spam, ventanas emergentes o banners

En muchos casos, no es posible establecer una conexión entre los clientes JMS y un enrutador de mensajes SwiftMQ o entre dos enrutadores de mensajes SwiftMQ si una parte está detrás de un firewall. En general, existe un servidor proxy al que se le permite establecer exclusivamente una conexión a Internet mediante un firewall. Para evitar este hecho, se utiliza una operación llamada túnel HTTP.

Pregunta: 17 ¿Por qué en la especificación Servlet 2.4 SingleThreadModel ha quedado en desuso? No existe una implementación práctica para tener dicho modelo. Ya sea que establezca isThreadSafe en verdadero o falso, debe ocuparse de las solicitudes concurrentes de clientes a la página JSP sincronizando el acceso a cualquier objeto compartido definido en el nivel de página.

Ques: 18 ¿Cómo puedo configurar una cookie? El siguiente programa demuestra cómo configurar la cookie:

import javax.servlet. *;

import javax.servlet.http. *;

MyServlet de clase pública extiende HttpServlet {

public void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse) {

response.addCookie (nueva cookie (“cookie_name”, “cookie_value”));

}

public void doGet (solicitud HttpServletRequest, resolución HttpServletResponse) {

doPost (req, res);

}

}

Ques: 19 ¿Cómo eliminarás una cookie?

Para eliminar la cookie del servlet, obtenga la cookie del objeto de solicitud y use setMaxAge (0) y luego agregue la cookie al objeto de respuesta.

Cookie killMyCookie = nueva Cookie (“mycookie”, nulo);

killMyCookie.setMaxAge (0);

response.addCookie (killMyCookie);

Ques: 20 ¿Cuál es la diferencia entre el parámetro de inicio de contexto y el parámetro de inicio de Servlet?

Respuesta: Se puede acceder al parámetro init de contexto a través de la aplicación web y se declara fuera de la etiqueta del elemento … en el descriptor de implementación (DD). Los parámetros de inicio de servlet se declaran dentro del elemento … y solo son accesibles para ese servlet específico. Puede acceder a los parámetros de inicio de contexto utilizando el método getServletContext () y los parámetros de inicio de Servlet utilizando el método getServletConfig ().

Declarando el parámetro de Servlet init en DD:

Mi página

/ mypage

correo electrónico

[correo electrónico protegido] </ param-value)

Declarando el parámetro init de contexto en DD:

webmaster

[correo electrónico protegido]

Ques: 21 ¿Cuáles son las diferentes formas de obtener un contexto de servlet?
Las diferentes formas de obtener un contexto de servlet:
* ServletConfig.getServletContext ()
* GenericServlet implementa ServletConfig, por lo que HttpServlets tienen un método getServletContext ()
* En un filtro, tiene acceso a FilterConfig, que se establece en la devolución de llamada init (FilterConfig fc). Puede usar FilterConfig.getServletContext ().
* En un ServletContextListener o ServletContextAttributeListener, el evento pasado a los métodos de escucha tiene un método getServletContext ().
Ques: 22 ¿Cuál es la diferencia entre un atributo y un parámetro?
Los parámetros de solicitud son los pares de nombre / valor y el resultado de enviar un formulario HTML. El nombre y los valores son siempre cadenas. Por ejemplo, cuando realiza una publicación desde html, los datos se pueden recuperar automáticamente utilizando request.getParameter () en el lado del servidor. Los parámetros son cadenas y, en general, se pueden recuperar, pero no establecer.
Los atributos son objetos y se pueden colocar en los objetos de solicitud, sesión u contexto. Debido a que pueden ser cualquier objeto, no solo una Cadena, son mucho más flexibles. También puede establecer los atributos mediante programación utilizando el método setAttribute () y recuperarlos más tarde utilizando el método getAttribute ().
Ques: 23 ¿Cómo hacer un hilo de contexto seguro?
Respuesta: Para que el subproceso de ámbito de contexto sea seguro, necesita un bloqueo en el objeto de contexto. Sincronizar el atributo de contexto es sincronizar en el objeto de contexto. Si un hilo obtiene un bloqueo en el objeto de contexto, entonces tiene la garantía de que solo un hilo a la vez puede obtener o establecer el atributo de contexto. Solo funciona si todos los demás códigos que manipulan el atributo de contexto también se sincronizan en el contexto del servlet.
Pregunta: 24 ¿Cuál es la diferencia entre configurar el tiempo de espera de la sesión en el descriptor de implementación y configurar el tiempo de espera mediante programación?
Establecer el tiempo de espera mediante programación significa llamar a setMaxInactiveInterval (int segundos) desde su servlet.
Establecer el tiempo de espera de la sesión en el descriptor de implementación significa establecer declarativamente el tiempo de espera de la sesión. La siguiente configuración en el descriptor de implementación hace que el tiempo de espera de la sesión se establezca en 10 minutos:

10

Establecer el tiempo de espera de la sesión en el descriptor de despliegue le permite modificar el tiempo fácilmente, codificarlo en el programa requiere una sobrecarga de recompilación.
Ques: 25 ¿Cómo puede saber mi aplicación cuando se elimina una HttpSession?
Para recibir una notificación de que se ha eliminado o creado una HttpSession, debe implementar HttpSessionBindingListener en la clase que implementa los dos de su método: sessionCreated () y sessionDestroyed (). Si se crea o destruye una sesión, se llamará automáticamente al método sessionCreated () o sessionDestroyed () respectivamente. Debe registrar esta clase de implementación de escucha dentro del elemento … en el archivo descriptor de implementación (web.xml).
Ques: 26 ¿Cuántas cookies se pueden establecer en el objeto de respuesta del servlet? Además, ¿hay restricciones en el tamaño de las cookies?
Respuesta: Una cookie tiene un tamaño máximo de 4K y ningún dominio puede tener más de 20 cookies.
Ques: 27 Cuando se agrega o elimina un objeto de sesión a la sesión, ¿qué evento será notificado?
Cuando se agrega o elimina un objeto de una sesión, el contenedor verifica las interfaces implementadas por el objeto. Si el objeto implementa HttpSessionBindingListener, el contenedor llama al método de notificación correspondiente.
Si se agrega sesión, el método sessionCreated (), y si la sesión se elimina, el contenedor web llamará automáticamente al método sessionDestroyed ().
Ques: 28 ¿Qué es la codificación de URL y la decodificación de URL?
Algunos caracteres no son válidos en URL como & no se pueden colocar en una cadena de consulta de URL sin cambiar el significado de esa cadena de consulta.
Estos problemas se pueden solucionar ‘escapándolos’. Este proceso implica escanear el texto en busca de esos caracteres y reemplazarlos con un código de caracteres especial que los navegadores puedan interpretar como el símbolo correcto, sin usar ese símbolo en su URL.

Por ejemplo, el código de caracteres escapado para ‘=’ es ‘% 3d’.

Ques: 29 ¿Cuál es la diferencia entre un applet y un servlet? Los applets son programas Java del lado del cliente que se descargan dinámicamente a través de Internet y se ejecutan mediante el navegador. Los servlets son programas del lado del servidor que se ejecutan en el servidor. Cuando una solicitud llega al servidor para el servlet específico, el servlet maneja la solicitud del cliente y envía la respuesta al cliente.
El servlet no tiene GUI, mientras que el applet tiene GUI. El applet es muy pesado de manejar en comparación con el servlet.

Ques: 30 ¿Cuál es el ciclo de vida del servlet?
Un contenedor web gestiona el ciclo de vida del servlet:
* Carga e Inantantiation: el contenedor carga la clase de servlet en la primera solicitud a ese servlet. La carga del servlet depende del atributo del archivo web.xml. La creación de instancias se realiza llamando al constructor predeterminado.
* Inicialización: llamar al método init ().
* Servicio de la solicitud: llamar al método service () y pasar el objeto HttpServletRequest y HttpServletResponse como los parámetros.
* Destruyendo el Servlet: llamando al método destroy ().
Ques: 31 Cuando se llamará a init () y Distroy ().
Respuesta: Tanto el método init () como el método destroy () se llaman solo una vez dentro de su ciclo de vida.
El método init () se llamará después de la instalación del servlet, es decir, después de la llamada del constructor. Se llamará al método destroy () cuando se elimine el servlet del servidor, es decir, cuando el servidor se apague.
32 ¿Cuál es el uso de los métodos setComment y getComment en las cookies?
Una cookie tiene un nombre, un valor único y atributos opcionales, como un comentario, calificadores de ruta y dominio, una edad máxima y un número de versión.
El método setComment (propósito de java.lang.String) especifica un comentario que describe el propósito de una cookie. El método getComment () devuelve el comentario que describe el propósito de la cookie, o nulo si la cookie no tiene ningún comentario.

Ques: 33 ¿Por qué se usan setMaxAge () y getMaxAge () en Cookies? El método “public void setMaxAge (int expiry)” establece la antigüedad máxima de la cookie. Después del tiempo especificado, la cookie se eliminará.
El método “public int getMaxAge ()” devolverá la antigüedad máxima especificada de la cookie.

Ques: 34 ¿Cuál es el uso de setSecure () y getSecure () en Cookies?
Respuesta: El método setSecure (bandera booleana) indica al navegador si la cookie solo debe enviarse utilizando un protocolo seguro, como HTTPS o SSL.
El método getSecure () devuelve verdadero si el navegador envía cookies solo a través de un protocolo seguro, o falso si el navegador puede enviar cookies usando cualquier protocolo.

Ques: 35 ¿Cómo te comunicas entre los servlets?
Respuesta: Los servlets pueden comunicarse utilizando los objetos de solicitud, sesión y alcance del contexto mediante el método setAttribute () y getAttribute (). Un servlet puede colocar la información en uno de los objetos de alcance anteriores y el otro puede encontrarla fácilmente si tiene la referencia a ese objeto.
Ques: 36 ¿Qué es el encadenamiento de Servlet?
El encadenamiento de servlets es un fenómeno en el que el objeto de respuesta (salida) del primer servlet se envía como objeto de solicitud (entrada) al siguiente servlet y así sucesivamente. La respuesta del último Servlet se devuelve al navegador del cliente.
En Servlets, hay dos formas de lograr el encadenamiento de servlets utilizando javax.servlet.RequestDispatcher:

1. Incluye:
RequestDispatcher rd = req.getRequestDispatcher (“Servlet2”);
rd.include (req, resp);

2. Reenviar, donde req es HttpServletRequest y resp es HttpServletResponse:
RequestDispatcher rd = req.getRequestDispatcher (“Servlet3”);
rd.forward (req, resp);

Ques: 37 ¿Cómo se comunicará de un applet a un servlet?
Puede escribir un servlet que debe llamar su applet.
Comunicación Applet-Servlet con HTTP GET y POST:
El applet puede enviar datos al applet enviando un método GET o POST. Si se utiliza un método GET, el applet debe codificar en URL los parámetros del par nombre / valor en la cadena de URL real.
Comunicación con la serialización de objetos:
En lugar de pasar cada parámetro de información del alumno como pares de nombre / valor, nos gustaría enviarlo como un verdadero objeto Java. Al recibir este objeto, el servlet lo agregaría a la base de datos.
Envío de objetos desde un servlet a un applet:
Después de registrar el objeto en la base de datos. Ahora el servlet debe devolver una lista actualizada de estudiantes registrados que luego se devuelve como un vector de objetos.
Ques: 38 ¿Podemos llamar a un servlet con parámetros en la URL?
¡Si! Podemos llamar a un servlet con parámetros en la URL usando el método GET. Los parámetros se agregan a la URL separada con el ‘?’ con la URL y si hay más de un parámetro, estos se separan con el signo ‘&’.
Ques: 39 ¿Cómo manejan los servlets múltiples solicitudes simultáneas? Los servlets están bajo el control del contenedor web. Cuando llega una solicitud para el servlet, el contenedor web descubre el nivel de servicio correcto basado en la URL y crea un hilo separado para cada solicitud. De esta manera, cada solicitud es procesada por el hilo diferente simultáneamente.
Ques: 40 ¿Explicar la estructura de directorios de una aplicación web?
Respuesta: La estructura de directorios de una aplicación web consta de dos partes.
Un directorio privado llamado WEB-INF
Un directorio de recursos públicos que contiene la carpeta de recursos públicos.

La carpeta WEB-INF consta de
1. archivo web.xml que consta de información de implementación.
2. Directorio de clases cosistas de lógica de negocios.
3. El directorio lib consta de archivos jar.
Ques: 41 ¿Qué es la preinicialización de un servlet?
Los servlets se cargan e inicializan en la primera solicitud que llegan al servidor y permanecen cargados hasta que el servidor se apaga. Sin embargo, hay otra forma de inicializar su servlet antes de que llegue cualquier solicitud para ese servlet diciendo 1 en el descriptor de implementación. Puede especificar 1 entre la etiqueta .
Ques: 42 ¿Cuáles son los usos de ServletRequest?
ServletRequest define un objeto para proporcionar información de solicitud del cliente a un servlet. El contenedor de servlet crea un objeto ServletRequest y lo pasa como argumento al método de servicio del servlet.

Un objeto ServletRequest proporciona datos, incluidos el nombre y los valores de los parámetros, los atributos y una secuencia de entrada. Las interfaces que extienden ServletRequest pueden proporcionar datos adicionales específicos del protocolo (por ejemplo, HttpServletRequest proporciona datos HTTP.

Paquetes que usan ServletRequest:
* javax.servlet
* javax.servlet.http
* javax.servlet.jsp
Ques: 43 ¿Cuáles son los usos de la interfaz ServletResponse?
La interfaz ServletResponse define un objeto para ayudar a un servlet a enviar una respuesta al cliente. El contenedor de servlet crea un objeto ServletResponse y lo pasa como argumento al método de servicio del servlet.
Para enviar datos binarios en una respuesta de cuerpo MIME, use ServletOutputStream devuelto por getOutputStream (). Para enviar datos de caracteres, use el objeto PrintWriter devuelto por getWriter (). Para mezclar datos binarios y de texto, por ejemplo, para crear una respuesta multiparte, use ServletOutputStream y administre las secciones de caracteres manualmente.

Paquetes que usan ServletResponse:
* javax.servlet
* javax.servlet.http
* javax.servlet.jsp

Ques: 44 ¿Cómo HTTP Servlet maneja las solicitudes de los clientes?
Respuesta: Servlet HTTP es una clase abstracta que debe subclasificarse para crear un servlet HTTP adecuado para un sitio web. Una subclase de HttpServlet debe anular al menos un método, generalmente uno de estos:
* doDelete (HttpServletRequest req, HttpServletResponse resp): llamado por el servidor (a través del método de servicio) para permitir que un servlet maneje una solicitud DELETE.
* doGet (solicitud de HttpServletRequest, HttpServletResponse resp): llamado por el servidor (a través del método de servicio) para permitir que un servlet maneje una solicitud GET.
* doOptions (HttpServletRequest request req, HttpServletResponse resp): llamado por el servidor (a través del método de servicio) para permitir que un servlet maneje una solicitud de OPCIONES.
* doPost (HttpServletRequest req, HttpServletResponse resp): llamado por el servidor (a través del método de servicio) para permitir que un servlet maneje una solicitud POST.
* doPut (HttpServletRequest req, HttpServletResponse resp): llamado por el servidor (a través del método de servicio) para permitir que un servlet maneje una solicitud PUT.
* doTrace (solicitud HttpServletRequest, HttpServletResponse resp): llamado por el servidor (a través del método de servicio) para permitir que un servlet maneje una solicitud TRACE. etc.

Ques: 45 ¿Es la página HTML un componente web?
¡No! Las páginas HTML no son componentes web, incluso las clases de utilidad del lado del servidor no se consideran componentes web. Las páginas HTML estáticas y los applets se agrupan con componentes web durante el ensamblaje de la aplicación, pero la especificación J2EE no los considera componentes web.

Ques: 46 ¿Qué es el contenedor web?
El contenedor web proporciona el entorno de tiempo de ejecución a través de componentes que proporcionan contexto de nombres y gestión del ciclo de vida, seguridad y control de concurrencia. Un contenedor web proporciona los mismos servicios que un contenedor JSP, así como una vista federada de Java EE. Apache Tomcat es un contenedor web y una implementación de las tecnologías Java Servlet y JavaServer Pages.

Ques: 47 ¿Qué es el descriptor de implementación?
El descriptor de implementación es un archivo de configuración llamado web.xml que especifica todas las piezas de una implementación. Nos permite crear y manipular la estructura de la aplicación web. El descriptor de implementación describe cómo se debe implementar una aplicación web o una aplicación empresarial. Para las aplicaciones web, el descriptor de implementación debe llamarse web.xml y debe residir en un subdirectorio WEB-INF en la raíz de la aplicación web. El descriptor de implementación nos permite modificar la estructura de la aplicación web sin tocar el código fuente.

Pregunta: 48 ¿Los objetos almacenados en una sesión HTTP deben ser serializables? ¿O puede almacenar algún objeto?
Respuesta: Es importante asegurarse de que todos los objetos colocados en la sesión se puedan serializar si está creando una aplicación distribuida. Si implementa Serializable en su código ahora, no tendrá que regresar y hacerlo más tarde.

Ques: 49 ¿Cómo puedes implementar un patrón singleton en servlets?
Respuesta: Singleton es un patrón de diseño útil para permitir solo una instancia de su clase. puede implementar un patrón singleton en servlets utilizando Servlet init () y en el descriptor de despliegue.
Ques: 50 ¿Cuál es la diferencia entre un servidor de aplicaciones y un servidor web?
Respuesta: Un servidor web se ocupa de los protocolos Http y sirve las páginas estáticas, así como puede pedirle a la aplicación auxiliar como el programa CGI que genere contenido dinámico. Un servidor web maneja la solicitud del cliente y devuelve la respuesta al cliente.
Un servidor de aplicaciones expone la lógica empresarial a las aplicaciones del cliente a través de varios protocolos, posiblemente incluyendo HTTP. Un servidor de aplicaciones proporciona acceso a la lógica de negocios para su uso por parte de los programas de aplicaciones del cliente. Además, el servidor de aplicaciones J2EE puede ejecutar EJB, que se utilizan para ejecutar la lógica empresarial. Un servidor de aplicaciones tiene un servidor web ‘incorporado’, además de que admite otros módulos o características como integración de negocios electrónicos, módulo de gestión y seguridad independiente, portlets, etc.

Ques: 51 ¿Qué es la excepción de servlet?
Respuesta: ServletException es una subclase de la excepción. Define una excepción general que un servlet puede lanzar cuando encuentra dificultades. La clase ServletException define solo un método getRootCause () que devuelve la excepción que causó esta excepción de servlet. Hereda los otros métodos como fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString, etc. de la clase Throwable.
Paquetes que usan ServletException:
* javax.servlet
* javax.servlet.http

Ques: 52 ¿Qué es un archivo WAR?
Respuesta: Un archivo de archivo web (WAR) es una aplicación web empaquetada. Los archivos WAR se pueden usar para importar una aplicación web a un servidor web. El archivo WAR también incluye un archivo descriptor de implementación web. Hay archivos y directorios especiales dentro de un archivo WAR. El directorio / WEB-INF en el archivo WAR contiene un archivo llamado web.xml que define la estructura de la aplicación web. Si la aplicación web solo sirve archivos JSP, el archivo web.xml no es estrictamente necesario. Si la aplicación web usa servlets, entonces el contenedor de servlets usa web.xml para determinar a qué servlet se debe enrutar una solicitud de URL. Una desventaja de la implementación web que utiliza archivos WAR en entornos muy dinámicos es que no se pueden realizar cambios menores durante el tiempo de ejecución. El archivo WAR se crea utilizando la herramienta jar Java estándar. Por ejemplo:

cd / inicio / alex / webapps / mywebapp
jar cf ../mywebapp.war *
Ques: 53 ¿Qué es un filtro de servlet?
Respuesta: Un filtro intercepta dinámicamente solicitudes y respuestas para transformar o utilizar la información contenida en las solicitudes o respuestas. Por lo general, los filtros no crean respuestas, sino que proporcionan funciones universales que se pueden “adjuntar” a cualquier tipo de servlet o página JSP. Los filtros proporcionan la capacidad de encapsular tareas recurrentes en unidades reutilizables y se pueden utilizar para transformar la respuesta de un servlet o una página JSP. Los filtros pueden realizar muchos tipos diferentes de funciones:
* Autenticación
* Registro y auditoría
* Compresión de datos
* Localización

La API de filtro está definida por las interfaces Filter, FilterChain y FilterConfig en el paquete javax.servlet. Defina un filtro implementando la interfaz Filtro. Una cadena de filtro, pasada a un filtro por el contenedor, proporciona un mecanismo para invocar una serie de filtros. Los filtros deben configurarse en el descriptor de implementación:

AuthorizationFilter
ejemplos.AuthorizationFilter
Este filtro autoriza el acceso del usuario a los componentes de la aplicación según el URI de solicitud.

error_page
../../error.jsp

AuthorizationFilter
/ restringido / *

Preguntas y respuestas de la entrevista JSP

Qué es un JSP y para qué se utiliza Java Server Pages (JSP) es una tecnología de capa de presentación independiente de la plataforma que viene con la plataforma J2EE de SUN. Los JSP son páginas HTML normales con piezas de código Java incrustadas en ellas. Las páginas JSP se guardan en archivos * .jsp. Un compilador JSP se utiliza en segundo plano para generar un Servlet desde la página JSP.

¿Cuál es la diferencia entre las etiquetas JSP personalizadas y los beans? La etiqueta JSP personalizada es una etiqueta que definió. Usted define cómo se interpreta una etiqueta, sus atributos y su cuerpo, y luego agrupa sus etiquetas en colecciones llamadas bibliotecas de etiquetas que se pueden usar en cualquier número de archivos JSP. Para usar etiquetas JSP personalizadas, debe definir tres componentes separados: 1. la clase de manejador de etiquetas que define el comportamiento de la etiqueta 2. el archivo descriptor de la biblioteca de etiquetas que asigna los nombres de elementos XML a las implementaciones de etiquetas 3. el archivo JSP que usa la biblioteca de etiquetas Cuando los dos primeros componentes están listos, puede usar la etiqueta usando la directiva taglib: Entonces está listo para usar las etiquetas que definido. Digamos que el prefijo de etiqueta es test: MyJSPTag o JavaBeans son clases de utilidad Java que definió. Los frijoles tienen un formato estándar para las clases de Java. Usa etiquetas para declarar un bean y usa para establecer el valor de la clase de bean y usa para obtener el valor de la clase de bean. Las etiquetas y beans personalizados cumplen los mismos objetivos: encapsulan el comportamiento complejo en formas simples y accesibles. Existen varias diferencias: las etiquetas personalizadas pueden manipular el contenido JSP; los frijoles no pueden. Las operaciones complejas se pueden reducir a una forma significativamente más simple con etiquetas personalizadas que con beans. Las etiquetas personalizadas requieren bastante más trabajo de configuración que los beans. Las etiquetas personalizadas generalmente definen un comportamiento relativamente autónomo, mientras que los beans a menudo se definen en un servlet y se usan en un servlet diferente o en una página JSP. Las etiquetas personalizadas solo están disponibles en JSP 1.1 y versiones posteriores, pero los beans se pueden usar en todas las versiones de JSP 1.x.

¿Qué es la tecnología JSP?

Java Server Page es una extensión estándar de Java que se define en la parte superior de las Extensiones de servlet. El objetivo de JSP es la creación y gestión simplificadas de páginas web dinámicas. Los JSP son seguros, independientes de la plataforma y, lo mejor de todo, utilizan Java como un lenguaje de script del lado del servidor.

¿Qué es la página JSP? Una página JSP es un documento basado en texto que contiene dos tipos de texto: datos de plantilla estáticos, que pueden expresarse en cualquier formato basado en texto, como HTML, SVG, WML y XML, y elementos JSP, que construyen contenido dinámico.

¿Qué son los objetos implícitos? Los objetos implícitos son objetos creados por el contenedor web y contienen información relacionada con una solicitud, página o aplicación en particular. Ellos son: –request –response –pageContext –session –application –out –config –page –exception

¿Cuántos elementos de script JSP y cuáles son? Hay tres elementos del lenguaje de scripting: –declaraciones –scriptlets –expresiones

¿Por qué las páginas JSP son la API preferida para crear un programa cliente basado en la web? Porque no se necesitan complementos ni archivos de políticas de seguridad en los sistemas cliente (el applet sí). Además, las páginas JSP permiten un diseño de aplicaciones más limpio y de más módulos porque proporcionan una forma de separar la programación de aplicaciones del diseño de páginas web. Esto significa que el personal involucrado en el diseño de páginas web no necesita comprender la sintaxis del lenguaje de programación Java para hacer su trabajo.

¿La tecnología JSP es extensible? SI. La tecnología JSP es extensible mediante el desarrollo de acciones personalizadas, o etiquetas, que se encapsulan en bibliotecas de etiquetas.

¿Podemos usar el constructor, en lugar de init (), para inicializar el servlet? Sí, por supuesto, puede usar el constructor en lugar de init (). No hay nada que te detenga. Pero no deberías. La razón original de init () era que las versiones antiguas de Java no podían invocar dinámicamente a los constructores con argumentos, por lo que no había forma de darle al Servidor una configuración ServletConfig. Eso ya no se aplica, pero los contenedores de servlets solo llamarán a su constructor sin argumentos. Por lo tanto, no tendrá acceso a ServletConfig o ServletContext.

¿Cómo puede un servlet actualizarse automáticamente si algunos datos nuevos han ingresado a la base de datos? Puede usar una actualización del lado del cliente o una inserción de servidor.

El código en una cláusula finalmente nunca fallará en ejecutarse, ¿verdad? Usando System.exit (1); en el bloque try no permitirá finalmente que se ejecute el código.

¿Cuántos modelos de mensajería proporciona JMS y cuáles son? JMS proporciona dos modelos de mensajería, publicación y suscripción y colas punto a punto.

¿Qué información se necesita para crear un socket TCP? La dirección IP y el número de puerto de los sistemas locales. Y la dirección IP y el número de puerto del sistema remoto.

¿Qué hará Class.forName al cargar los controladores? Se utiliza para crear una instancia de un controlador y registrarlo con el DriverManager. Cuando ha cargado un controlador, está disponible para realizar una conexión con un DBMS.

¿Cómo recuperar advertencias? Los objetos SQLWarning son una subclase de SQLException que se ocupa de las advertencias de acceso a la base de datos. Las advertencias no detienen la ejecución de una aplicación, como lo hacen las excepciones; simplemente alertan al usuario de que algo no sucedió según lo planeado. Se puede informar una advertencia sobre un objeto Connection, un objeto Statement (incluidos los objetos PreparedStatement y CallableStatement) o un objeto ResultSet. Cada una de estas clases tiene un método getWarnings, que debe invocar para ver la primera advertencia informada en el objeto que llama SQLWarning warning = stmt.getWarnings (); if (warning! = null) {while (warning! = null) {System.out.println (\ “Mensaje: \” + warning.getMessage ()); System.out.println (\ “SQLState: \” + warning.getSQLState ()); System.out.print (\ “Código de error del proveedor: \”); System.out.println (warning.getErrorCode ()); warning = warning.getNextWarning (); }}

¿Cuántos elementos de script JSP hay y cuáles son? Hay tres elementos del lenguaje de scripting: declaraciones, scriptlets, expresiones.

En la especificación Servlet 2.4 SingleThreadModel ha quedado en desuso, ¿por qué?

Porque no es práctico tener ese modelo. Ya sea que establezca isThreadSafe en verdadero o falso, debe ocuparse de las solicitudes concurrentes de clientes a la página JSP sincronizando el acceso a cualquier objeto compartido definido en el nivel de página.

¿Qué son los procedimientos almacenados? ¿Cómo es útil? Un procedimiento almacenado es un conjunto de instrucciones / comandos que residen en la base de datos. El procedimiento almacenado se precompila y ahorra a la base de datos el esfuerzo de analizar y compilar sentencias sql cada vez que se ejecuta una consulta. Cada base de datos tiene su propio lenguaje de procedimiento almacenado, generalmente una variante de C con un preprocesador de SQL. Las versiones más recientes de db’s admiten la escritura de procedimientos almacenados en Java y Perl también. Antes del advenimiento de la arquitectura de 3 niveles / n niveles, era bastante común que los procesos almacenados implementaran la lógica empresarial (muchos sistemas aún lo hacen). La mayor ventaja es, por supuesto, la velocidad. Además, cierto tipo de manipulaciones de datos no se logran en SQL. Los procedimientos almacenados proporcionan un mecanismo para hacer estas manipulaciones. Los procesos almacenados también son útiles cuando quieres hacer actualizaciones / exportaciones / houseKeeping de lotes en el db. La sobrecarga de una conexión JDBC puede ser significativa en estos casos.

¿Cómo incluyo archivos estáticos dentro de una página JSP? Los recursos estáticos siempre deben incluirse utilizando la directiva JSP include. De esta manera, la inclusión se realiza solo una vez durante la fase de traducción. Tenga en cuenta que siempre debe proporcionar una URL relativa para el atributo de archivo. Aunque también puede incluir recursos estáticos utilizando la acción, esto no es aconsejable ya que la inclusión se realiza para cada solicitud.

¿Por qué JComponent tiene métodos add () y remove () pero Component no? porque JComponent es una subclase de Container y puede contener otros componentes y jcomponents. ¿Cómo puedo implementar una página JSP segura para subprocesos? – Puede hacer que sus JSP sean seguros para subprocesos haciendo que implementen la interfaz SingleThreadModel. Esto se hace agregando la directiva dentro de su página JSP.

¿Cómo evito que el navegador almacene en caché la salida de mis páginas JSP o Servlet? Deberá establecer los atributos de encabezado HTTP apropiados para evitar que el navegador almacene en caché la salida de contenido dinámico de la página JSP. Simplemente ejecute el siguiente scriptlet al comienzo de sus páginas JSP para evitar que se almacenen en caché en el navegador. Necesita las dos declaraciones para cuidar algunas de las versiones anteriores del navegador.

¿Cómo restringe la visualización de errores de página en la página JSP? Primero configura el atributo “Errorpage” del directorio PAGE con el nombre de la página de error (es decir, Errorpage = “error.jsp”) en su página jsp. Luego, en el conjunto de páginas error jsp “isErrorpage = TRUE”. Cuando ocurre un error en su página jsp, automáticamente llamará a la página de error.

¿Cómo puedo habilitar el seguimiento de sesión para páginas JSP si el navegador ha deshabilitado las cookies? Sabemos que el seguimiento de sesión utiliza cookies de forma predeterminada para asociar un identificador de sesión con un usuario único. Si el navegador no admite cookies, o si las cookies están deshabilitadas, aún puede habilitar el seguimiento de sesión utilizando la reescritura de URL. La reescritura de URL esencialmente incluye la ID de sesión dentro del enlace como un par de nombre / valor. Sin embargo, para que esto sea efectivo, debe agregar la ID de sesión para todos y cada uno de los enlaces que forman parte de su respuesta de servlet. Agregar la ID de sesión a un enlace se simplifica enormemente por medio de un par de métodos: response.encodeURL () asocia una ID de sesión con una URL determinada, y si está usando la redirección, se puede usar response.encodeRedirectURL () dando la URL redirigida como entrada. Tanto encodeURL () como encodeRedirectedURL () primero determinan si el navegador admite las cookies; si es así, la URL de entrada se devuelve sin cambios ya que la ID de la sesión se mantendrá como una cookie. Considere el siguiente ejemplo, en el que dos archivos JSP, digamos hello1.jsp y hello2.jsp, interactúan entre sí. Básicamente, creamos una nueva sesión dentro de hello1.jsp y colocamos un objeto dentro de esta sesión. Luego, el usuario puede desplazarse a hello2.jsp haciendo clic en el enlace presente dentro de la página. Dentro de hello2.jsp, simplemente extraemos el objeto que se colocó anteriormente en la sesión y muestra su contenido. Observe que invocamos encodeURL () dentro de hello1.jsp en el enlace utilizado para invocar hello2.jsp; Si las cookies están deshabilitadas, la ID de sesión se agrega automáticamente a la URL, lo que permite que hello2.jsp aún recupere el objeto de sesión. Pruebe este ejemplo primero con las cookies habilitadas. Luego deshabilite el soporte de cookies, reinicie el navegador e intente nuevamente. Cada vez debe ver el mantenimiento de la sesión en todas las páginas. Tenga en cuenta que para que este ejemplo funcione con las cookies deshabilitadas en el navegador, su motor JSP debe admitir la reescritura de URL. hello1.jsp hello2.jsp hello2.jsp <% Integer i = (Integer) session.getValue ("num"); out.println ("El valor numérico en la sesión es" + i.intValue ());

¿Qué métodos de ciclo de vida JSP puedo anular? No puede anular el método _jspService () dentro de una página JSP. Sin embargo, puede anular los métodos jspInit () y jspDestroy () dentro de una página JSP. jspInit () puede ser útil para asignar recursos como conexiones de bases de datos, conexiones de red, etc. para la página JSP. Es una buena práctica de programación liberar cualquier recurso asignado dentro de jspDestroy (). Los métodos jspInit () y jspDestroy () se ejecutan solo una vez durante el ciclo de vida de una página JSP y generalmente se declaran como declaraciones JSP:

¿Cómo realizo la redirección del navegador desde una página JSP? Puede usar el objeto implícito de respuesta para redirigir el navegador a un recurso diferente, como: response.sendRedirect (“http://www.exforsys.com/path/err…”); También puede alterar físicamente el atributo del encabezado HTTP de ubicación, como se muestra a continuación: También puede usar: Tenga en cuenta que solo puede usar esto antes de que se haya enviado cualquier salida al cliente. Creo que este es el caso con el método response.sendRedirect () también. Si desea pasar algún parámetro, puede pasar usando>

¿Cómo maneja JSP las excepciones de tiempo de ejecución? Puede usar el atributo errorPage de la directiva de página para que las excepciones de tiempo de ejecución no detectadas se envíen automáticamente a una página de procesamiento de errores. Por ejemplo: redirige el navegador a la página JSP error.jsp si se encuentra una excepción no detectada durante el procesamiento de la solicitud. Dentro de error.jsp, si indica que es una página de procesamiento de errores, a través de la directiva: se puede acceder al objeto Throwable que describe la excepción dentro de la página de error mediante el objeto implícito de excepción. Nota: Siempre debe usar una URL relativa como valor para el atributo errorPage.

¿Es posible compartir una HttpSession entre un JSP y EJB? ¿Qué sucede cuando cambio un valor en la HttpSession desde dentro de un EJB? Puede pasar la HttpSession como parámetro a un método EJB, solo si todos los objetos en la sesión son serializables. Esto debe considerarse como “pasado por valor”, lo que significa que es de solo lectura en el EJB. Si algo se modifica desde dentro del EJB, no se reflejará de nuevo en la HttpSession del Servlet Container. La “referencia de paso” se puede usar entre las interfaces remotas de EJB, ya que son referencias remotas. Si bien es posible pasar una HttpSession como parámetro a un objeto EJB, se considera una “mala práctica” en términos de diseño orientado a objetos. Esto se debe a que está creando un acoplamiento innecesario entre los objetos de fondo (ejbs) y los objetos de fondo (HttpSession). Cree un nivel más alto de abstracción para la API de su ejb. En lugar de pasar el HttpSession completo, gordo (que lleva consigo un montón de semántica http), cree una clase que actúe como un objeto de valor (o estructura) que contenga todos los datos que necesita pasar de un lado a otro entre el front-end / back-end. Considere el caso donde su ejb necesita soportar un cliente no basado en http. Este mayor nivel de abstracción será lo suficientemente flexible como para soportarlo.

¿Cómo puedo implementar una página JSP segura para subprocesos? Puede hacer que sus JSP sean seguros para subprocesos haciendo que implementen la interfaz SingleThreadModel. Esto se hace agregando la directiva dentro de su página JSP.

¿Cómo puedo declarar métodos dentro de mi página JSP? Puede declarar métodos para usar dentro de su página JSP como declaraciones. Los métodos se pueden invocar dentro de cualquier otro método que declare, o dentro de scripts y expresiones JSP. Tenga en cuenta que no tiene acceso directo a ninguno de los objetos implícitos de JSP como solicitud, respuesta, sesión, etc. desde los métodos de JSP. Sin embargo, debe poder pasar cualquiera de las variables JSP implícitas como parámetros a los métodos que declare. Por ejemplo: Otro ejemplo: file1.jsp: file2.jsp

¿Puedo detener la ejecución de JSP mientras estoy procesando una solicitud? Si. La terminación anticipada del procesamiento de solicitudes en una condición de error es una buena manera de maximizar el rendimiento de un motor JSP de alto volumen. El truco (suponiendo que Java es su lenguaje de secuencias de comandos) es utilizar la declaración de devolución cuando desee finalizar el procesamiento posterior.

¿Puede una página JSP procesar datos de FORMULARIO HTML? Si. Sin embargo, a diferencia de Servlet, no es necesario que implemente métodos específicos del protocolo HTTP como doGet () o doPost () dentro de su página JSP. Puede obtener los datos para los elementos de entrada FORM a través del objeto implícito de solicitud dentro de un scriptlet o expresión como.

¿Hay alguna manera de hacer referencia a la variable “this” dentro de una página JSP? Sí hay. Bajo JSP 1.0, el objeto implícito de la página es equivalente a “esto” y devuelve una referencia al Servlet generado por la página JSP.

¿Cómo se pasa el control de una página JSP a otra? Utilice las siguientes formas para pasar el control de una solicitud de un servlet a otro o de un jsp a otro. El método de reenvío del objeto RequestDispatcher para pasar el control. El método response.sendRedirect

¿Hay alguna manera de establecer el período de arrendamiento de inactividad por sesión? Por lo general, se establece un período de arrendamiento de inactividad predeterminado para todas las sesiones dentro de la pantalla de administración de JSPengine o el archivo de propiedades asociado. Sin embargo, si su motor JSP admite la API Servlet 2.1, puede administrar el período de arrendamiento de inactividad por sesión. Esto se realiza invocando el método HttpSession.setMaxInactiveInterval (), justo después de que se haya creado la sesión.

¿Cómo se comunica un servlet con una página JSP? El siguiente fragmento de código muestra cómo un servlet crea una instancia de un bean y lo inicializa con los datos FORM publicados por un navegador. El bean se coloca en la solicitud y la llamada se reenvía a la página JSP, Bean1.jsp, mediante un despachador de solicitudes para el procesamiento posterior. public void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse) {try {govi.FormBean f = new govi.FormBean (); Cadena id = request.getParameter (“id”); f.setName (request.getParameter (“nombre”)); f.setAddr (request.getParameter (“addr”)); f.setAge (request.getParameter (“age”)); // use la identificación para calcular // propiedades adicionales del bean como información // tal vez realice una consulta db, etc. //. . . f.setPersonalizationInfo (información); request.setAttribute (“fBean”, f); getServletConfig (). getServletContext (). getRequestDispatcher (“/jsp/Bean1.jsp”).forward(request, response); } catch (Excepción ex) {. . . }} La página JSP Bean1.jsp puede procesar fBean, luego de extraerlo primero del alcance de solicitud predeterminado a través de la acción useBean. jsp: useBean id = “fBean” class = “govi.FormBean” scope = “request” / jsp: getProperty name = “fBean” property = “name” / jsp: getProperty name = “fBean” property = “addr” / jsp : getProperty name = “fBean” property = “age” / jsp: getProperty name = “fBean” property = “personalizationInfo” /

¿Se puede hacer uso de un objeto ServletOutputStream desde una página JSP? No. Se supone que debe utilizar solo un objeto JSPWriter (que se le proporciona en forma de objeto implícito) para responder a los clientes. Un JSPWriter puede verse como una versión almacenada del objeto de flujo devuelto por response.getWriter (), aunque desde una perspectiva de implementación, no lo es. El autor de una página siempre puede deshabilitar el almacenamiento en búfer predeterminado para cualquier página utilizando una directiva de página como:

¿Cómo incluyo archivos estáticos dentro de una página JSP? Los recursos estáticos siempre deben incluirse utilizando la directiva JSP include. De esta manera, la inclusión se realiza solo una vez durante la fase de traducción. El siguiente ejemplo muestra la sintaxis: Tenga en cuenta que siempre debe proporcionar una URL relativa para el atributo de archivo. Aunque también puede incluir recursos estáticos utilizando la acción, esto no es aconsejable ya que la inclusión se realiza para cada solicitud. ¿Cómo hago para que el servlet generado por JSP subclase mi propia clase de servlet personalizada, en lugar de la predeterminada? Se debe tener mucho cuidado al hacer que las páginas JSP amplíen las clases de servlet personalizadas en lugar de la predeterminada que genera el motor JSP. Al hacerlo, puede perder cualquier optimización avanzada que pueda proporcionar JSPengine. En cualquier caso, su nueva superclase debe cumplir el contrato con el motor JSP: Implementando la interfaz HttpJspPage, si el protocolo utilizado es HTTP, o implementando JspPage de lo contrario, asegurándose de que todos los métodos en la interfaz Servlet se declaren definitivos. Además, la superclase de servlet también debe hacer lo siguiente: El método service () debe invocar el método _jspService () El método init () debe invocar el método jspInit () El método destroy () debe invocar jspDestroy () Si alguna de las condiciones anteriores no se cumple, el motor JSP puede arrojar un error de traducción. Una vez que se ha desarrollado la superclase, puede hacer que su JSP la extienda de la siguiente manera:

¿Puede una página JSP instanciar un bean serializado? ¡No hay problema! La acción use Bean especifica el atributo beanName, que puede usarse para indicar un bean serializado. Por ejemplo: un par de puntos importantes a tener en cuenta. Aunque tendría que nombrar su archivo serializado “filename.ser”, solo indica “filename” como el valor del atributo beanName. Además, tendrá que colocar su archivo serializado dentro del directorio WEB-INFjspbeans para que el motor JSP lo ubique.

¿Cómo mezclo JSP y SSI #include? Respuesta 1 Si solo incluye HTML sin formato, use la directiva #include como siempre dentro de su archivo .jsp. Pero es un poco más complicado si desea que el servidor evalúe cualquier código JSP que esté dentro del archivo incluido. Si su archivo data.inc contiene código jsp, tendrá que usar El se usa para incluir archivos que no son JSP. Respuesta 2 Si solo incluye HTML sin formato, use la directiva #include como siempre dentro de su archivo .jsp. Pero es un poco más complicado si desea que el servidor evalúe cualquier código JSP que esté dentro del archivo incluido. Ronel Sumibcay ( [correo electrónico protegido] ) dice: Si su archivo data.inc contiene código jsp, deberá usar El se utiliza para incluir archivos que no son JSP.

¿Cómo mezclo JSP y SSI #include? ¿Cuál es la diferencia entre include directive y jsp: include action? La diferencia entre la directiva include y 1. proporciona los beneficios de la recompilación automática, un tamaño de clase más pequeño, ya que el código correspondiente a la página incluida no está presente en el servlet para cada página jsp incluida y la opción de especificar el parámetro de solicitud adicional. 2.El también admite el uso de valores de atributos de tiempo de solicitud para especificar dinámicamente la página incluida, que directiva no lo hace. 3.la directiva include solo puede incorporar contenidos de un documento estático. 4. se puede utilizar para incluir resultados generados dinámicamente, por ejemplo. de servlets. La directiva 5.include ofrece la opción de compartir variables locales, una mejor eficiencia del tiempo de ejecución. 6. Debido a que la directiva de inclusión se procesa durante la traducción y la compilación, no impone ninguna restricción al almacenamiento en búfer de salida.

¿Cómo evita la creación de una sesión en una página JSP y por qué? ¿Cuál es la diferencia entre include directive y jsp: include action? Por defecto, una página JSP creará automáticamente una sesión para la solicitud si no existe. Sin embargo, las sesiones consumen recursos y, si no es necesario mantener una sesión, no se debe crear una. Por ejemplo, una campaña de marketing puede sugerirle al lector que visite una página web para obtener más información. Si se anticipa que una gran cantidad de tráfico llegará a esa página, es posible que desee optimizar la carga en la máquina al no crear sesiones inútiles.

¿Cómo uso un scriptlet para inicializar un bean recién instanciado? Una acción jsp: useBean puede tener opcionalmente un cuerpo. Si se especifica el cuerpo, su contenido se invocará automáticamente cuando se instancia el bean especificado. Normalmente, el cuerpo contendrá scriptlets o etiquetas jsp: setProperty para inicializar el bean recién instanciado, aunque no está restringido a usarlos solo. El siguiente ejemplo muestra la propiedad “hoy” del bean Foo inicializado a la fecha actual cuando se instancia. Tenga en cuenta que aquí, utilizamos una expresión JSP dentro de la acción jsp: setProperty. valor = “” />

¿Cómo puedo configurar una cookie y eliminar una cookie desde una página JSP? Una cookie, mycookie, se puede eliminar con el siguiente scriptlet:

¿Cómo se conecta a la base de datos desde JSP? Se puede establecer una conexión a una base de datos desde una página jsp escribiendo el código para establecer una conexión utilizando scriptlets jsp. Además, puede usar el objeto de conjunto de resultados “res” para leer datos de la siguiente manera.

¿Cuál es la directiva de página que se usa para evitar que una página JSP cree automáticamente una sesión?

¿Cómo se elimina una cookie dentro de un JSP? Cookie mycook = nueva Cookie (“nombre”, “valor”); response.addCookie (mycook); Cookie killmycook = nueva Cookie (“mycook”, “value”); killmycook.setMaxAge (0); killmycook.setPath (“/”); killmycook.addCookie (killmycook);

¿Podemos implementar una interfaz en un JSP? No

¿Cuál es la diferencia entre ServletContext y PageContext? ServletContext: da la información sobre el contenedor PageContext: da la información sobre la solicitud

¿Cuál es la diferencia en el uso de request.getRequestDispatcher () y context.getRequestDispatcher ()? request.getRequestDispatcher (ruta): para crearlo necesitamos dar la ruta relativa del recurso context.getRequestDispatcher (ruta): para crearlo necesitamos dar la ruta absoluta del recurso.

¿Cómo pasar información de JSP a JSP incluido? Usando la etiqueta .

¿Cómo es la directiva de inclusión JSP diferente de la acción de inclusión JSP? ? Cuando se utiliza una directiva de inclusión JSP, el código del archivo incluido se agrega a la página JSP agregada en el momento de la traducción de la página, esto sucede antes de que la página JSP se traduzca en un servlet. Mientras que si alguna página se incluye utilizando la etiqueta de acción, la salida de la página se devuelve a la página agregada. Esto sucede en tiempo de ejecución.

¿Podemos anular los métodos jspInit (), _jspService () y jspDestroy ()? Podemos anular los métodos jspinit () y jspDestroy () pero no _jspService ().

¿Por qué el método _jspService () comienza con un ‘_’ mientras que otros métodos del ciclo de vida no lo hacen? El método _jspService () será escrito por el contenedor, por lo tanto, cualquier método que no deba ser anulado por el usuario final generalmente se escribe comenzando con un ‘_’. Esta es la razón por la cual no anulamos el método _jspService () en ninguna página JSP.

¿Qué sucede cuando una página se incluye estáticamente en otra página JSP? Una directiva de inclusión le dice al motor JSP que incluya el contenido de otro archivo (HTML, JSP, etc.) en la página actual. Este proceso de incluir un archivo también se denomina inclusión estática.

Una página JSP, include.jsp, tiene una variable de instancia “int a”, ahora esta página está incluida estáticamente en otra página JSP, index.jsp, que tiene una variable de instancia “int a” declarada. ¿Qué sucede cuando el cliente solicita la página index.jsp? Error de compilación, ya que no se pueden declarar dos variables con el mismo nombre. Esto sucede porque, cuando una página se incluye estáticamente, el código completo de la página incluida se convierte en parte de la nueva página. En este momento hay dos declaraciones de la variable ‘a’. De ahí el error de compilación.

¿Se puede anular el método jspInit ()? En caso afirmativo, ¿en qué casos? Lo hacemos generalmente cuando necesitamos inicializar cualquier miembro que esté disponible para un servlet / JSP durante toda su vida útil.

¿Cuál es la diferencia entre directive include y jsp include? : se utiliza para incluir recursos estáticos durante el tiempo de traducción. : Se utiliza para incluir contenido dinámico o contenido estático durante el tiempo de ejecución.

¿Cuál es la diferencia entre RequestDispatcher y sendRedirect? RequestDispatcher: redirección del lado del servidor con objetos de solicitud y respuesta. sendRedirect: redirección del lado del cliente con nuevos objetos de solicitud y respuesta.

¿Cómo maneja JSP las excepciones de tiempo de ejecución? Usando el atributo errorPage de la directiva de página y también debemos especificar isErrorPage = true si la página actual está destinada a la redirección de URL de un JSP.

¿Cómo puede saber mi aplicación cuando se elimina una HttpSession? Defina una clase HttpSessionNotifier que implemente HttpSessionBindingListener e implemente la funcionalidad que necesita en el método valueUnbound (). Cree una instancia de esa clase y colóquela en HttpSession.

¿Qué hará Class.forName al cargar los controladores? Se utiliza para crear una instancia de un controlador y registrarlo con el DriverManager. Cuando ha cargado un controlador, está disponible para realizar una conexión con un DBMS.

¿Cómo recuperar advertencias? Los objetos SQLWarning son una subclase de SQLException que se ocupa de las advertencias de acceso a la base de datos. Las advertencias no detienen la ejecución de una aplicación, como lo hacen las excepciones; simplemente alertan al usuario de que algo no sucedió según lo planeado. Se puede informar una advertencia sobre un objeto Connection, un objeto Statement (incluidos los objetos PreparedStatement y CallableStatement) o un objeto ResultSet. Cada una de estas clases tiene un método getWarnings, que debe invocar para ver la primera advertencia informada en el objeto que llama SQLWarning warning = stmt.getWarnings (); if (warning! = null) {while (warning! = null) {System.out.println (\ “Mensaje: \” + warning.getMessage ()); System.out.println (\ “SQLState: \” + warning.getSQLState ()); System.out.print (\ “Código de error del proveedor: \”); System.out.println (warning.getErrorCode ()); warning = warning.getNextWarning (); }}

En la especificación Servlet 2.4 SingleThreadModel ha quedado en desuso, ¿por qué? Porque no es práctico tener ese modelo. Ya sea que establezca isThreadSafe en verdadero o falso, debe ocuparse de las solicitudes concurrentes de clientes a la página JSP sincronizando el acceso a cualquier objeto compartido definido en el nivel de página.

¿La tecnología JSP es extensible? SI. La tecnología JSP es extensible mediante el desarrollo de acciones personalizadas, o etiquetas, que se encapsulan en bibliotecas de etiquetas.

¿Podemos usar el constructor, en lugar de init (), para inicializar el servlet? Sí, por supuesto, puede usar el constructor en lugar de init (). No hay nada que te detenga. Pero no deberías. La razón original de init () era que las versiones antiguas de Java no podían invocar dinámicamente a los constructores con argumentos, por lo que no había forma de darle al Servidor una configuración ServletConfig. Eso ya no se aplica, pero los contenedores de servlets solo llamarán a su constructor sin argumentos. Por lo tanto, no tendrá acceso a ServletConfig o ServletContext.

¿Cómo puede un servlet actualizarse automáticamente si algunos datos nuevos han ingresado a la base de datos? Puede usar una actualización del lado del cliente o una inserción de servidor.

El código en una cláusula finalmente nunca dejará de ejecutarse, ¿verdad? Usando System.exit (1); en el bloque try no permitirá finalmente que se ejecute el código.

¿Cuántos modelos de mensajería proporciona JMS y cuáles son? JMS proporciona dos modelos de mensajería, publicación y suscripción y colas punto a punto.

1. ¿Qué es el método jspInit ()?

RESPUESTA: El método jspInit () de la interfaz javax.servlet.jsp.JspPage es similar al método init () de los servlets. El contenedor invoca este método solo una vez cuando se inicializa una página JSP. Un autor de la página puede anularlo para inicializar recursos como bases de datos y conexiones de red, y para permitir que una página JSP lea datos de configuración persistentes.

2: ¿Qué es _jspService ()?

RESPUESTA: El método _jspService () de la interfaz javax.servlet.jsp.HttpJspPage se invoca cada vez que llega una nueva solicitud a una página JSP. Este método toma los objetos HttpServletRequest y HttpServletResponse como sus argumentos. El autor de una página no puede anular este método, ya que su implementación la proporciona el contenedor.

3: ¿Qué es jspDestroy ()?

RESPUESTA: El contenedor invoca el método jspDestroy () de la interfaz javax.servlet.jsp.JspPage cuando una página JSP está a punto de ser destruida. Este método es similar al método destroy () de los servlets. Puede ser anulado por un autor de la página para realizar cualquier operación de limpieza, como cerrar una conexión de base de datos.

4: ¿Qué método de ciclo de vida jsp puedo anular?

RESPUESTA: No puede anular el método _jspService () dentro de una página JSP. Sin embargo, puede anular los métodos jspInit () y jspDestroy () dentro de una página JSP. JspInit () puede ser útil para asignar recursos como conexiones de bases de datos, conexiones de red, etc. para la página JSP. Es una buena práctica de programación liberar cualquier recurso asignado dentro de jspDestroy ().

5: ¿Qué son los objetos implícitos en jsp?

RESPUESTA: Los objetos implícitos en JSP son los objetos de Java que JSP Container pone a disposición de los desarrolladores en cada página. Estos objetos no necesitan ser declarados o instanciados por el autor JSP. El contenedor los instancia automáticamente y se accede a ellos mediante variables estándar; por lo tanto, se llaman objetos implícitos.

7: ¿Qué son las directivas jsp?

RESPUESTA: Las directivas JSP son mensajes para el motor JSP. es decir, las directivas JSP sirven como un mensaje desde una página JSP al contenedor JSP y controlan el procesamiento de toda la página. Se usan para establecer valores globales como una declaración de clase, implementación de método, tipo de contenido de salida, etc. No producen ninguna salida para el cliente.

8: ¿Qué es la directiva de página?

RESPUESTA: La directiva de la página es:

Una directiva de página es informar al motor JSP sobre los encabezados o las instalaciones que esa página debe obtener del entorno.

La directiva de la página se encuentra en la parte superior de casi todas nuestras páginas JSP.

Puede haber cualquier número de directivas de página dentro de una página JSP (aunque el par atributo-valor debe ser único).

La sintaxis de la directiva include es:

9: ¿Cuáles son las ventajas de Servlet sobre CGI?

RESPUESTA: Se introdujo la tecnología de servlet para superar las deficiencias de la tecnología CGI.

Los servlets proporcionan un mejor rendimiento que CGI en términos de tiempo de procesamiento, utilización de memoria porque los servlets utilizan los beneficios del subprocesamiento múltiple y para cada solicitud se crea un nuevo subproceso, que es más rápido que la carga creando un nuevo objeto para cada solicitud con CGI. Servlets y plataforma y sistema independientes, la aplicación web desarrollada con Servlet se puede ejecutar en cualquier contenedor web estándar como Tomcat, JBoss, servidores Glassfish y en sistemas operativos como Windows, Linux, Unix, Solaris, Mac, etc. Los servlets son robustos porque El contenedor se encarga del ciclo de vida del servlet y no tenemos que preocuparnos por las pérdidas de memoria, la seguridad, la recolección de basura, etc. Los servlets son mantenibles y la curva de aprendizaje es pequeña porque todo lo que debemos tener en cuenta es la lógica de negocios para nuestra aplicación.

10: ¿Cuáles son las tareas comunes que realiza Servlet Container?

RESPUESTA: Los contenedores de servlets también se conocen como contenedores web, por ejemplo Tomcat. Algunas de las tareas importantes del contenedor de servlets son:

Soporte de comunicación: Servlet Container proporciona una forma fácil de comunicación entre el cliente web (navegadores) y los servlets y JSP. Debido al contenedor, no necesitamos construir un socket de servidor para escuchar cualquier solicitud del cliente web, analizar la solicitud y generar respuesta. Todas estas tareas importantes y complejas se realizan por contenedor y todo lo que necesitamos para centrarnos es en la lógica de negocios para las aplicaciones. Ciclo de vida y gestión de recursos: Servlet Container se encarga de gestionar el ciclo de vida del servlet. Desde la carga de servlets en la memoria, inicializando servlets, invocando métodos de servlet y destruyéndolos. El contenedor también proporciona utilidades como JNDI para la agrupación y gestión de recursos. Soporte de subprocesos múltiples: el contenedor crea un nuevo subproceso para cada solicitud al servlet y les proporciona objetos de solicitud y respuesta para procesar. Por lo tanto, los servlets no se inicializan para cada solicitud y ahorran tiempo y memoria. Soporte de JSP: los JSP no se parecen a las clases normales de Java, pero cada JSP de la aplicación se compila por contenedor y se convierte en Servlet y luego el contenedor los gestiona como otros servlets. Tarea miscelánea: El contenedor de servlet administra el grupo de recursos, realiza optimizaciones de memoria, ejecuta el recolector de basura, proporciona configuraciones de seguridad, soporte para múltiples aplicaciones, implementación en caliente y varias otras tareas detrás de escena que facilitan la vida del desarrollador.

11: ¿Qué es el objeto ServletConfig?

RESPUESTA: javax.servlet.ServletConfig se utiliza para pasar información de configuración a Servlet. Cada servlet tiene su propio objeto ServletConfig y el contenedor de servlet es responsable de instanciar este objeto. Podemos proporcionar parámetros de inicio de servlet en el archivo web.xml o mediante el uso de la anotación WebInitParam. Podemos usar el método getServletConfig () para obtener el objeto ServletConfig del servlet.

12: ¿Qué es el objeto ServletContext?

RESPUESTA: la interfaz javax.servlet.ServletContext proporciona acceso a los parámetros de la aplicación web al servlet. El ServletContext es un objeto único y está disponible para todos los servlets en la aplicación web. Cuando deseamos que algunos parámetros de inicio estén disponibles para múltiples o todos los servlets en la aplicación web, podemos usar el objeto ServletContext y definir parámetros en web.xml usando el elemento . Podemos obtener el objeto ServletContext a través del método getServletContext () de ServletConfig. Los contenedores de servlets también pueden proporcionar objetos de contexto que son únicos para un grupo de servlets y que están vinculados a una parte específica del espacio de nombres de la ruta URL del host.

ServletContext se ha mejorado en Servlet Specs 3 para introducir métodos a través de los cuales podemos agregar de manera programática Listeners and Filters y Servlet a la aplicación. También proporciona algunos métodos de utilidad como getMimeType (), getResourceAsStream () etc.

13: ¿Cuál es la diferencia entre ServletConfig y ServletContext?

RESPUESTA: Algunas de las diferencias entre ServletConfig y ServletContext son:

ServletConfig es un objeto único por servlet, mientras que ServletContext es un objeto único para la aplicación completa. ServletConfig se usa para proporcionar parámetros de inicio al servlet, mientras que ServletContext se usa para proporcionar parámetros de inicio de nivel de aplicación que todos los demás servlets pueden usar. No podemos establecer atributos en el objeto ServletConfig, mientras que podemos establecer atributos en ServletContext que otros servlets pueden usar en su implementación.

14: ¿Qué es el despachador de solicitudes?

RESPUESTA: la interfaz RequestDispatcher se utiliza para reenviar la solicitud a otro recurso que puede ser HTML, JSP u otro servlet en la misma aplicación. También podemos usar esto para incluir el contenido de otro recurso en la respuesta. Esta interfaz se utiliza para la comunicación entre servlets en el mismo contexto.

Hay dos métodos definidos en esta interfaz:

anular reenvío (solicitud de solicitud de servlet, respuesta de respuesta de servlet): reenvía la solicitud de un servlet a otro recurso (servlet, archivo JSP o archivo HTML) en el servidor. void include (solicitud de ServletRequest, respuesta de ServletResponse): incluye el contenido de un recurso (servlet, página JSP, archivo HTML) en la respuesta.

Podemos obtener RequestDispatcher en un servlet utilizando el método ServletContext getRequestDispatcher (String path). La ruta debe comenzar con un / y se interpreta como relativa a la raíz del contexto actual.

15: ¿Cuál es la diferencia entre PrintWriter y ServletOutputStream?

RESPUESTA: PrintWriter es una clase de secuencia de caracteres, mientras que ServletOutputStream es una clase de secuencia de bytes. Podemos usar PrintWriter para escribir información basada en caracteres como la matriz de caracteres y la Cadena en la respuesta, mientras que podemos usar ServletOutputStream para escribir datos de la matriz de bytes en la respuesta.

Podemos usar ServletResponse getWriter () para obtener la instancia PrintWriter, mientras que podemos usar el método ServletResponse getOutputStream () para obtener la referencia de objeto ServletOutputStream.

Puede leer más sobre IO en Java en Java IO Tutorial.

¿Podemos obtener PrintWriter y ServletOutputStream en un servlet?

No podemos obtener instancias de PrintWriter y ServletOutputStream en un solo método de servlet, si invocamos ambos métodos; getWriter () y getOutputStream () en respuesta; obtendremos java.lang.IllegalStateException en tiempo de ejecución con mensaje ya que ya se ha llamado a otro método para esta respuesta.

16: ¿Cómo podemos crear una situación de bloqueo en el servlet?

RESPUESTA: Podemos crear un punto muerto en el servlet haciendo un bucle de invocación del método, simplemente llame al método doPost () desde el método doGet () y al método doGet () para el método doPost () para crear una situación de punto muerto en el servlet.

17: ¿De qué sirven las clases de envoltura de servlet?

RESPUESTA: Servlet HTTP API proporciona dos clases de contenedor: HttpServletRequestWrapper y HttpServletResponseWrapper. Estas clases de contenedor se proporcionan para ayudar a los desarrolladores con la implementación personalizada de los tipos de solicitud y respuesta de servlet. Podemos extender estas clases y anular solo los métodos específicos que necesitamos implementar para los objetos personalizados de solicitud y respuesta. Estas clases no se usan en la programación normal de servlets.

18: ¿Qué es la interfaz SingleThreadModel?

RESPUESTA: la interfaz SingleThreadModel se proporcionó para la seguridad de subprocesos y garantiza que no se ejecutarán dos subprocesos simultáneamente en el método de servicio del servlet. Sin embargo, SingleThreadModel no resuelve todos los problemas de seguridad de subprocesos. Por ejemplo, los atributos de sesión y las variables estáticas aún pueden ser accedidos por múltiples solicitudes en múltiples hilos al mismo tiempo, incluso cuando se usan servlets SingleThreadModel. Además, aprovecha todos los beneficios del soporte multiproceso de servlets, por eso esta interfaz está en desuso en Servlet 2.4.

19: ¿Necesitamos anular el método service ()?

RESPUESTA: Cuando el contenedor de servlet recibe la solicitud del cliente, invoca el método service () que a su vez invoca los métodos doGet (), doPost () basados ​​en el método de solicitud HTTP. No veo ningún caso de uso en el que nos gustaría anular el método service (). El propósito completo del método service () es reenviar la solicitud a las implementaciones de métodos HTTP correspondientes. Si tenemos que hacer un procesamiento previo de la solicitud, siempre podemos usar filtros de servlet y escuchas.

20: ¿Es buena idea crear un constructor de servlets?

RESPUESTA: Podemos definir un constructor para el servlet, pero no creo que sea de ninguna utilidad porque no tendremos acceso al objeto ServletConfig hasta que el contenedor no inicialice el servlet. Idealmente, si tenemos que inicializar cualquier recurso para servlet, deberíamos anular el método init () donde podemos acceder a los parámetros de inicio de servlet utilizando el objeto ServletConfig.

21: ¿Cuál es la diferencia entre GenericServlet y HttpServlet?

RESPUESTA: GenericServlet es una implementación independiente del protocolo de la interfaz Servlet, mientras que HttpServlet es una implementación específica del protocolo HTTP. La mayoría de las veces usamos servlet para crear aplicaciones web y es por eso que ampliamos la clase HttpServlet. La clase HttpServlet extiende GenericServlet y también proporciona algunos otros métodos específicos para el protocolo HTTP.

22: ¿Qué es la comunicación entre servlets?

RESPUESTA: Cuando queremos invocar otro servlet desde un método de servicio de servlet, utilizamos mecanismos de comunicación entre servlets. Podemos invocar otro servlet utilizando RequestDispatcher forward () e incluir () métodos y proporcionar atributos adicionales en la solicitud para otro uso de servlet.

23: ¿Son seguros los hilos de servlets? ¿Cómo lograr la seguridad del hilo en los servlets?

RESPUESTA: El método HttpServlet init () y el método destroy () se llaman solo una vez en el ciclo de vida del servlet, por lo que no debemos preocuparnos por su sincronización. Pero los métodos de servicio como doGet () o doPost () se llaman en cada solicitud del cliente y, dado que el servlet utiliza subprocesos múltiples, debemos proporcionar seguridad de subprocesos en estos métodos.

Si hay alguna variable local en los métodos de servicio, no debemos preocuparnos por la seguridad de su hilo porque son específicos de cada hilo, pero si tenemos un recurso compartido, podemos usar la sincronización para lograr la seguridad del hilo en los servlets cuando trabajamos con recursos

Los mecanismos de seguridad de subprocesos son similares a la seguridad de subprocesos en una aplicación Java independiente. Lea más sobre ellos en Thread Safety en Java

24: ¿Qué son los atributos de servlet y su alcance?

RESPUESTA: Los atributos de servlet se usan para la comunicación entre servlets, podemos establecer, obtener y eliminar atributos en la aplicación web. Existen tres ámbitos para los atributos de servlet: ámbito de solicitud, ámbito de sesión y ámbito de aplicación.

Las interfaces ServletRequest, HttpSession y ServletContext proporcionan métodos para obtener / establecer / eliminar atributos del ámbito de solicitud, sesión y aplicación, respectivamente.

Los atributos del servlet son diferentes de los parámetros de inicio definidos en web.xml para ServletConfig o ServletContext.

25: ¿Cómo llamamos a un servlet de otro servlet?

RESPUESTA: podemos utilizar el método RequestDispatcher forward () para reenviar el procesamiento de una solicitud a otro servlet. Si queremos incluir la salida de otro servlet a la respuesta, podemos usar el método RequestDispatcher include ().

26: ¿Cómo podemos invocar otro servlet en una aplicación diferente?

RESPUESTA: No podemos usar RequestDispatcher para invocar el servlet desde otra aplicación porque es específico para la aplicación. Si tenemos que reenviar la solicitud a un recurso en otra aplicación, podemos usar el método ServletResponse sendRedirect () y proporcionar la URL completa de otro servlet. Esto envía la respuesta al cliente con el código de respuesta como 302 para reenviar la solicitud a otra URL. Si también tenemos que enviar algunos datos, podemos usar cookies que formarán parte de la respuesta del servlet y enviarán la solicitud a otro servlet.

27: ¿Cuál es la diferencia entre ServletResponse sendRedirect () y RequestDispatcher forward () método?

RESPUESTA: RequestDispatcher forward () se usa para reenviar la misma solicitud a otro recurso, mientras que ServletResponse sendRedirect () es un proceso de dos pasos. En sendRedirect (), la aplicación web devuelve la respuesta al cliente con el código de estado 302 (redirigir) con URL para enviar la solicitud. La solicitud enviada es una solicitud completamente nueva. forward () es manejado internamente por el contenedor mientras que sednRedirect () es manejado por el navegador. Deberíamos usar forward () al acceder a los recursos en la misma aplicación porque es más rápido que el método sendRedirect () que requería una llamada de red adicional. el navegador desconoce el recurso de procesamiento real y la URL en la barra de direcciones permanece igual, mientras que en sendRedirect () la URL en la barra de direcciones cambia al recurso reenviado. forward () no se puede usar para invocar un servlet en otro contexto, solo podemos use sendRedirect () en este caso.

28: ¿Por qué la clase HttpServlet se declara abstracta?

RESPUESTA: La clase HttpServlet proporciona la implementación del protocolo HTTP del servlet, pero se deja abstracta porque no hay lógica de implementación en los métodos de servicio como doGet () y doPost () y deberíamos anular al menos uno de los métodos de servicio. Es por eso que no tiene sentido tener una instancia de HttpServlet y se declara clase abstracta.

29: ¿Cuáles son las fases del ciclo de vida del servlet?

RESPUESTA: Sabemos que Servlet Container gestiona el ciclo de vida del Servlet, hay cuatro fases del ciclo de vida del servlet.

Carga de clase de servlet: cuando el contenedor recibe la solicitud de un servlet, primero carga la clase en la memoria y llama a su constructor predeterminado sin argumentos. Inicialización de clase de servlet: una vez que se carga la clase de servlet, el contenedor inicializa el objeto ServletContext para el servlet y luego invoca su método init pasando el objeto de configuración de servlet. Este es el lugar donde una clase de servlet se transforma de clase normal a servlet. Manejo de solicitudes: una vez que se inicializa el servlet, está listo para manejar las solicitudes del cliente. Para cada solicitud de cliente, el contenedor de servlets genera un nuevo subproceso e invoca el método service () pasando la solicitud y la referencia del objeto de respuesta. Eliminación del servicio: cuando el contenedor se detiene o detenemos la aplicación, el contenedor de servlet destruye la clase de servlet invocando su método destroy ().

30: ¿Cuáles son los métodos del ciclo de vida de un servlet?

RESPUESTA: El ciclo de vida del servlet consta de tres métodos:

public void init (ServletConfig config): este método lo utiliza el contenedor para inicializar el servlet, este método se invoca solo una vez en el ciclo de vida del servlet. servicio público vacío (solicitud ServletRequest, respuesta ServletResponse): este método se llama una vez por cada solicitud, el contenedor no puede invocar el método service () hasta que se ejecute el método init (). public void destroy (): este método se invoca una vez cuando el servlet se descarga de la memoria.

31: por qué deberíamos anular solo el método init () no-agrs.

RESPUESTA: Si tenemos que inicializar algún recurso antes de que queramos que nuestro servlet procese las solicitudes de los clientes, deberíamos anular el método init (). Si anulamos el método init (ServletConfig config), entonces la primera instrucción debe ser super (config) para asegurarse de que primero se invoque el método superclass init (ServletConfig config). Es por eso que GenericServlet proporciona otro método helper init () sin argumento que se llama al final del método init (ServletConfig config). Siempre debemos utilizar este método para anular el método init () para evitar cualquier problema, ya que podemos olvidar agregar la llamada super () al anular el método init con el argumento ServletConfig.

P: ¿Qué es una directiva de página?

R: La directiva de página se usa para proporcionar instrucciones al contenedor que pertenecen a la página JSP actual. Puede codificar directivas de página en cualquier lugar de su página JSP.

P: ¿Cuáles son los diversos atributos de la directiva de página?

R: La directiva de página contiene los siguientes 13 atributos.

1)

Idioma

2)

Se extiende

3)

Importar

4)

Sesión

5)

isThreadSafe

6)

informacion

7)

errorPage

8)

isErrorpage

9)

tipo de contenido

10)

isELIgnored

11)

buffer

12)

autoFlush

13)

isScriptingEnabled

P: ¿Qué es el atributo errorPage?

R: El atributo errorPage le dice al motor JSP qué página mostrar si hay un error mientras se ejecuta la página actual. El valor del atributo errorPage es una URL relativa.

P: ¿Qué es el atributo isErrorPage ?

R: El atributo isErrorPage indica que el JSP actual se puede usar como página de error para otro JSP.

El valor de isErrorPage es verdadero o falso. El valor predeterminado del atributo isErrorPage es falso.

P: ¿Qué es el atributo isThreadSafe?

R: La opción isThreadSafe marca una página como segura para subprocesos. Por defecto, todos los JSP se consideran seguros para subprocesos. Si establece la opción isThreadSafe en false, el motor JSP se asegura de que solo un hilo a la vez ejecute su JSP.

P: ¿Qué es el atributo del lenguaje?

R: El atributo de lenguaje indica el lenguaje de programación utilizado en la secuencia de comandos de la página JSP.

P: ¿Qué es el atributo de sesión?

R: El atributo de sesión indica si la página JSP usa o no sesiones HTTP. Un valor verdadero significa que la página JSP tiene acceso a un objeto de sesión incorporado y un valor falso significa que la página JSP no puede acceder al objeto de sesión incorporado.

P: ¿Qué es el atributo isELIgnored?

R: La opción isELIgnored le brinda la posibilidad de deshabilitar la evaluación de las expresiones del lenguaje de expresión (EL). El valor predeterminado del atributo es verdadero, lo que significa que las expresiones, $ {…}, se evalúan según lo dictado por la especificación JSP. Si el atributo se establece en falso, las expresiones no se evalúan sino que se tratan como texto estático.

P: ¿Qué es el atributo isScriptingEnabled?

R: El atributo isScriptingEnabled determina si se permite el uso de elementos de secuencias de comandos.

El valor predeterminado (verdadero) habilita scriptlets, expresiones y declaraciones. Si el valor del atributo se establece en falso, se generará un error en el tiempo de traducción si el JSP utiliza scriptlets, expresiones (no EL) o declaraciones.

P: ¿Qué es una directiva de inclusión?

R: La directiva include se usa para incluir un archivo durante la fase de traducción. Esta directiva le dice al contenedor que combine el contenido de otros archivos externos con el JSP actual durante la fase de traducción. Puede codificar las directivas de inclusión en cualquier lugar de su página JSP.

La forma de uso general de esta directiva es la siguiente:

P: ¿Qué es una directiva taglib?

A: La directiva taglib sigue la siguiente sintaxis:

el valor del atributo uri se resuelve en una ubicación que el contenedor comprende

El atributo prefijo informa a un contenedor qué bits de marcado son acciones personalizadas.

La directiva taglib sigue la siguiente sintaxis:

P: ¿Qué significan los atributos id y scope en los elementos de acción?

A: atributo de identificación: el atributo de identificación identifica de forma exclusiva el elemento Acción y permite hacer referencia a la acción dentro de la página JSP. Si la acción crea una instancia de un objeto, el valor de id se puede usar para hacer referencia a él a través del objeto implícito PageContext

Atributo de alcance: este atributo identifica el ciclo de vida del elemento Acción. El atributo de identificación y el atributo de alcance están directamente relacionados, ya que el atributo de alcance determina la vida útil del objeto asociado con la identificación. El atributo de alcance tiene cuatro valores posibles: (a) página, (b) solicitud, (c) sesión y (d) aplicación.

P: ¿cuál es la función de action?

R: Esta acción le permite insertar archivos en la página que se está generando. La sintaxis se ve así:

Donde página es la URL relativa de la página que se incluirá.

Flush es el atributo booleano que determina si el recurso incluido tiene su búfer vaciado antes de ser incluido.

P: ¿Cuál es la diferencia entre incluir acción e incluir directiva?

R: A diferencia de la directiva include, que inserta el archivo en el momento en que la página JSP se traduce en un servlet, la acción include inserta el archivo en el momento en que se solicita la página.

P: ¿Qué es la acción ?

R: La acción useBean es bastante versátil. Primero busca un objeto existente utilizando las variables id y scope. Si no se encuentra un objeto, intenta crear el objeto especificado.

La forma más sencilla de cargar un bean es la siguiente:

P: ¿Qué es la acción ?

R: La acción setProperty establece las propiedades de un Bean. El Bean debe haberse definido previamente antes de esta acción.

P: ¿Qué es la acción ?

R: La acción getProperty se usa para recuperar el valor de una propiedad dada y convertirlo en una cadena, y finalmente lo inserta en la salida.

P: ¿Qué es la acción ?

R: La acción de reenvío finaliza la acción de la página actual y reenvía la solicitud a otro recurso, como una página estática, otra página JSP o un Servlet Java.

La sintaxis simple de esta acción es la siguiente:

P: ¿Qué es la acción ?

R: La acción del complemento se usa para insertar componentes Java en una página JSP. Determina el tipo de navegador e inserta las etiquetas o según sea necesario.

Si el complemento necesario no está presente, descarga el complemento y luego ejecuta el componente Java. El componente Java puede ser un Applet o un JavaBean.

P: ¿Cuáles son los diferentes valores de alcance para la acción JSP?

R: El atributo de alcance identifica el ciclo de vida del elemento Acción. Tiene cuatro valores posibles: (a) página, (b) solicitud, (c) sesión y (d) aplicación.

P: ¿Qué son los objetos implícitos JSP?

R: Los objetos implícitos JSP son los objetos Java que JSP Container pone a disposición de los desarrolladores en cada página y el desarrollador puede llamarlos directamente sin ser declarado explícitamente. Los objetos implícitos JSP también se denominan variables predefinidas.

P: ¿Qué objetos implícitos son compatibles con JSP?

A: solicitud, respuesta, salida, sesión, aplicación, configuración, contexto de página, página, excepción

P: ¿Qué es un objeto de solicitud?

R: El objeto de solicitud es una instancia de un objeto javax.servlet.http.HttpServletRequest. Cada vez que un cliente solicita una página, el motor JSP crea un nuevo objeto para representar esa solicitud.

El objeto de solicitud proporciona métodos para obtener información de encabezado HTTP, incluidos datos de formulario, cookies, métodos HTTP, etc.

P: ¿Cómo puede leer la información del encabezado de una solicitud?

R: Usando 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.

P: ¿Qué es un objeto de respuesta?

R: El objeto de respuesta es una instancia de un objeto javax.servlet.http.HttpServletRequest. Así como el servidor crea el objeto de solicitud, también crea un objeto para representar la respuesta al cliente.

El objeto de respuesta también define las interfaces que se ocupan de crear nuevos encabezados HTTP. A través de este objeto, el programador JSP puede agregar nuevas cookies o sellos de fecha, códigos de estado HTTP, etc.

P: ¿Cuál es el objeto implícito?

R: El objeto implícito de salida es una instancia de un objeto javax.servlet.jsp.JspWriter y se utiliza para enviar contenido en una respuesta.

P: ¿Cuál es la diferencia entre JspWriter y PrintWriter?

R: El objeto JspWriter contiene la mayoría de los mismos métodos que la clase java.io.PrintWriter. Sin embargo, JspWriter tiene algunos métodos adicionales diseñados para lidiar con el almacenamiento en búfer. A diferencia del objeto PrintWriter, JspWriter arroja IOExceptions.

P: ¿Cuál es el objeto de sesión?

R: El objeto de sesión es una instancia de javax.servlet.http.HttpSession y se usa para rastrear la sesión del cliente entre las solicitudes del cliente.

P: ¿Qué es un objeto de aplicación?

R: El objeto de la aplicación es un envoltorio directo alrededor del objeto ServletContext para el Servlet generado y, en realidad, una instancia de un objeto javax.servlet.ServletContext.

Este objeto es una representación de la página JSP a lo largo de todo su ciclo de vida. Este objeto se crea cuando se inicializa la página JSP y se eliminará cuando el método jspDestroy () elimine la página JSP.

P: ¿Qué es un objeto de configuración?

R: El objeto de configuración es una instancia de javax.servlet.ServletConfig y es un envoltorio directo alrededor del objeto ServletConfig para el servlet generado.

Este objeto permite al programador JSP acceder a los parámetros de inicialización del motor Servlet o JSP, como las rutas o ubicaciones de archivos, etc.

P: ¿Qué es un objeto pageContext?

R: El objeto pageContext es una instancia de un objeto javax.servlet.jsp.PageContext. El objeto pageContext se usa para representar la página JSP completa.

Este objeto almacena referencias a los objetos de solicitud y respuesta para cada solicitud. Los objetos de aplicación, configuración, sesión y salida se obtienen accediendo a los atributos de este objeto.

El objeto pageContext también contiene información sobre las directivas emitidas para la página JSP, incluida la información de almacenamiento en búfer, el errorPageURL y el alcance de la página.

P: ¿Qué es un objeto de página?

R: Este objeto es una referencia real a la instancia de la página. Se puede considerar como un objeto que representa toda la página JSP.

El objeto de página es realmente un sinónimo directo para este objeto.

P: ¿Qué es un objeto de excepción?

R: El objeto de excepción es un contenedor que contiene la excepción lanzada desde la página anterior. Normalmente se usa para generar una respuesta adecuada a la condición de error.

P: ¿Cuál es la diferencia entre el método GET y POST en el protocolo HTTP?

R: El método GET envía la información codificada del usuario adjunta a la solicitud de página. La página y la información codificada están separadas por el? Personaje.

El método POST empaqueta la información exactamente de la misma manera que los métodos GET, pero en lugar de enviarla como una cadena de texto después de un? en la URL lo envía como un mensaje separado. Este mensaje llega al programa de fondo en forma de entrada estándar que puede analizar y usar para su procesamiento.

P: ¿Cómo leer datos de formulario con JSP?

R: JSP maneja el análisis de datos de formulario automáticamente usando los siguientes métodos dependiendo de la situación:

  • getParameter (): llama 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, la casilla de verificación.
  • getParameterNames (): llame a este método si desea una lista completa de todos los parámetros en la solicitud actual.
  • getInputStream (): llame a este método para leer la secuencia de datos binarios que proviene del cliente.

P: ¿Qué son los filtros?

R: Los filtros JSP son clases de Java que se pueden usar en la programación JSP 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 enviarlas de vuelta al cliente.

P: ¿Cómo define los filtros?

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

Cuando el contenedor JSP inicia su aplicación web, crea una instancia de cada filtro que ha declarado en el descriptor de implementación. Los filtros se ejecutan en el orden en que se declaran en el descriptor de implementación.

P: ¿Qué son las cookies?

R: Las cookies son archivos de texto almacenados en la computadora del cliente y se guardan para diversos fines de seguimiento de información.

P: ¿Cómo funcionan las cookies?

R: Las cookies generalmente se configuran en un encabezado HTTP (aunque JavaScript también puede configurar una cookie directamente en un navegador). Si el navegador está configurado para almacenar cookies, mantendrá esta información hasta la fecha de caducidad. Si el usuario apunta el navegador a cualquier página que coincida con la ruta y el dominio de la cookie, reenviará la cookie al servidor.

P: ¿Cómo se configuran las cookies en el JSP?

R: Configurar cookies con JSP implica tres pasos:

  • Creación de un objeto Cookie: llama al constructor Cookie con un nombre de cookie y un valor de cookie, los cuales son cadenas.
  • Configuración de la edad máxima: utiliza setMaxAge para especificar cuánto tiempo (en segundos) debe ser válida la cookie.
  • Envío de la cookie a los encabezados de respuesta HTTP: utiliza response.addCookie para agregar cookies en el encabezado de respuesta HTTP

P: ¿Cómo leer las cookies con JSP?

R: 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.

P: ¿Cómo eliminar las cookies con JSP?

R: Eliminar cookies es muy simple. Si desea eliminar una cookie, simplemente necesita seguir los siguientes tres pasos:

  • Lea una cookie ya existente y guárdela en el objeto Cookie.
  • Establezca la edad de la cookie en cero utilizando el método setMaxAge () para eliminar una cookie existente.
  • Agregue esta cookie nuevamente al encabezado de respuesta.

P: ¿Cómo se realiza la gestión de sesiones en JSP?

R: La gestión de la sesión se puede lograr mediante el uso de:

  • Cookies: un servidor web puede asignar una ID de sesión única como cookie a cada cliente web y para solicitudes posteriores del cliente, se pueden reconocer utilizando la cookie recibida.
  • Campos de formulario ocultos: un servidor web puede enviar un campo de formulario HTML oculto junto con un ID de sesión único de la siguiente manera:

Esto implica que cuando se envíe el formulario, el nombre y el valor especificado se incluirán en el método GET o POST.

  • Reescritura de URL: en la reescritura de URL, se agrega información adicional al final de cada URL que identifica la sesión. Esta reescritura de URL puede ser útil cuando una cookie está deshabilitada.
  • El objeto de sesión: JSP utiliza la interfaz HttpSession proporcionada por el servlet que proporciona una manera de identificar a un usuario en más de una solicitud de página o visita a un sitio web y almacenar información sobre ese usuario.

P: ¿Cómo puede eliminar los datos de una sesión?

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

  • Eliminar un atributo particular: puede llamar al método public void removeAttribute (String name) para eliminar el valor asociado con una clave en particular.
  • Eliminar toda la sesión: 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 Intervalo) para establecer el tiempo de espera de una sesión individualmente.
  • Cerrar sesión del usuario: los servidores que admiten los servlets 2.4, puede llamar al cierre de sesión para cerrar la sesión del cliente del servidor web e invalidar todas las sesiones que pertenecen a todos los usuarios.
  • Configuración de web.xml: si está utilizando Tomcat, además de los métodos mencionados anteriormente, puede configurar el tiempo de espera de la sesión en el archivo web.xml de la siguiente manera.

P: ¿Cómo puede cargar un archivo usando JSP?

R: Para cargar un solo archivo, debe usar una sola etiqueta con el atributo type = “file”. Para permitir la carga de múltiples archivos, incluya más de una etiqueta de entrada con diferentes valores para el atributo de nombre.

P: ¿Dónde se almacenarán los archivos cargados?

R: Puede codificar esto en su programa o este nombre de directorio también podría agregarse utilizando una configuración externa, como un elemento de parámetro de contexto en web.xml.

P: ¿Qué es la redirección de página JSP?

R: La redirección de página generalmente se usa 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 una aleatorización simple.

P: ¿Cuál es la diferencia entre y response.sendRedirect (url)?

R: El elemento reenvía el objeto de solicitud que contiene la información de solicitud del cliente de un archivo JSP a otro archivo. El archivo de destino puede ser un archivo HTML, otro archivo JSP o un servlet, siempre que esté en el mismo contexto de aplicación que el archivo JSP de reenvío.

sendRedirect envía una respuesta de redireccionamiento temporal HTTP al navegador, y el navegador crea una nueva solicitud para ir a la página redirigida.

P: ¿Qué es un recuento de visitas para una página web?

R: Un contador de visitas le informa sobre el número de visitas en una página particular de su sitio web.

P: ¿Cómo impones el contador de visitas en JSP?

R: Para implementar un contador de visitas, puede utilizar el objeto Aplicación implícita y los métodos asociados getAttribute () y setAttribute ().

Este objeto es una representación de la página JSP a lo largo de todo su ciclo de vida. Este objeto se crea cuando se inicializa la página JSP y se eliminará cuando el método jspDestroy () elimine la página JSP.

P: ¿Cómo puede implementar el contador de visitas para evitar la pérdida de datos de conteo con cada reinicio de la aplicación?

A: puede seguir los siguientes pasos:

  • Defina una tabla de base de datos con un solo recuento, digamos hitcount. Asignarle un valor cero.
  • Con cada golpe, lea la tabla para obtener el valor de hitcount.
  • Aumente el valor de hitcount en uno y actualice la tabla con un nuevo valor.
  • Muestra el nuevo valor de hitcount como recuentos totales de visitas a la página.
  • Si desea contar los hits para todas las páginas, implemente la lógica anterior para todas las páginas.

P: ¿Qué es la función de actualización automática?

R: Considere una página web que muestra el puntaje del juego en vivo o el estado del mercado de valores o la tasa de cambio de divisas. Para todo tipo de páginas, necesitaría actualizar su página web regularmente utilizando el botón Actualizar o volver a cargar con su navegador.

JSP facilita este trabajo al proporcionarle un mecanismo donde puede hacer una página web de tal manera que se actualice automáticamente después de un intervalo determinado.

P: ¿Cómo implementa la actualización automática en JSP?

R: La forma más sencilla de actualizar una página web es usar el método setIntHeader () del objeto de respuesta. La siguiente es la firma de este método:

public void setIntHeader (encabezado de cadena, int headerValue)

Este método devuelve el encabezado “Actualizar” al navegador junto con un valor entero que indica el intervalo de tiempo en segundos.

P: ¿Qué es JSTL?

R: La biblioteca de etiquetas estándar de JavaServer Pages (JSTL) es una colección de etiquetas JSP útiles que encapsula la funcionalidad principal común a muchas aplicaciones JSP.

JSTL tiene soporte para tareas comunes y estructurales como iteración y condicionales, etiquetas para manipular documentos XML, etiquetas de internacionalización y etiquetas SQL. También proporciona un marco para integrar etiquetas personalizadas existentes con etiquetas JSTL.

P: ¿Cuáles son los diferentes tipos de etiquetas JSTL?

A: Los tipos de etiquetas JSTL son:

  • Etiquetas centrales
  • Etiquetas de formato
  • Etiquetas SQL
  • Etiquetas XML
  • Funciones JSTL

P: ¿Cuál es el uso de la etiqueta ?

R: La etiqueta es una versión compatible con JSTL de la acción setProperty. La etiqueta es útil porque evalúa una expresión y usa los resultados para establecer un valor de un objeto JavaBean o java.util.Map.

P: ¿Cuál es el uso de la etiqueta ?

R: La etiqueta elimina una variable de un ámbito específico o del primer ámbito donde se encuentra la variable (si no se especifica ningún ámbito).

P: ¿Cuál es el uso de la etiqueta ?

R: La etiqueta atrapa cualquier Throwable que ocurra en su cuerpo y, opcionalmente, lo expone. Simplemente se usa para el manejo de errores y para tratar el problema con más gracia.

P: ¿Cuál es el uso de la etiqueta ?

A: La etiqueta evalúa una expresión y muestra su contenido corporal solo si la expresión se evalúa como verdadera.

P: ¿Cuál es el uso de la etiqueta ?

R: funciona como una declaración de cambio de Java, ya que le permite elegir entre varias alternativas. Cuando la declaración de cambio tiene declaraciones de caso, la etiqueta tiene etiquetas . Una instrucción switch tiene una cláusula predeterminada para especificar una acción predeterminada y de manera similar tiene como cláusula predeterminada.

P: ¿Cuál es el uso de la etiqueta , ?

R: Las etiquetas , existen como una buena alternativa para incrustar un bucle Java for, while o do-while a través de un scriptlet.

P: ¿Cuál es el uso de la etiqueta ?

R: La etiqueta permite que se especifique el parámetro de solicitud de URL adecuado con la URL y realiza cualquier codificación de URL necesaria.

P: ¿Cuál es el uso de la etiqueta ?

R: La etiqueta redirige el navegador a una URL alternativa al proporcionar una reescritura automática de URL, admite URL relativas al contexto y admite la etiqueta .

P: ¿Cuál es el uso de la etiqueta ?

R: La etiqueta formatea una URL en una cadena y la almacena en una variable. Esta etiqueta realiza automáticamente la reescritura de URL cuando es necesario.

P: ¿Qué son las etiquetas de formato JSTL?

R: Las etiquetas de formato JSTL se utilizan para formatear y mostrar texto, la fecha, la hora y los números de los sitios web internacionalizados. La siguiente es la sintaxis para incluir la biblioteca de formato en su JSP:

<% @ taglib prefix = "fmt"

uri = “http://java.sun.com/jsp/jstl/fmt”%>

P: ¿Qué son las etiquetas SQL JSTL?

R: La biblioteca de etiquetas SQL JSTL proporciona etiquetas para interactuar con bases de datos relacionales (RDBMS) como Oracle, mySQL o Microsoft SQL Server.

La siguiente es la sintaxis para incluir la biblioteca JSTL SQL en su JSP:

<% @ taglib prefix = "sql"

uri = “http://java.sun.com/jsp/jstl/sql”%>

P: ¿Qué son las etiquetas JSTL XML?

R: Las etiquetas JSTL XML proporcionan una forma centrada en JSP de crear y manipular documentos XML. La siguiente es la sintaxis para incluir la biblioteca JSTL XML en su JSP.

<% @ taglib prefix = "x"

uri = “http://java.sun.com/jsp/jstl/xml”%>

P: ¿Qué es una etiqueta personalizada JSP?

R: Una etiqueta personalizada es un elemento de lenguaje JSP definido por el usuario. Cuando una página JSP que contiene una etiqueta personalizada se traduce en un servlet, la etiqueta se convierte en operaciones en un objeto llamado manejador de etiquetas. El contenedor web invoca esas operaciones cuando se ejecuta el servlet de la página JSP.

P: ¿Qué es el lenguaje de expresión JSP?

R: El lenguaje de expresión JSP (EL) hace posible acceder fácilmente a los datos de la aplicación almacenados en componentes JavaBeans. JSP EL le permite crear expresiones tanto (a) aritméticas como (b) lógicas. Una sintaxis simple para JSP EL es:

$ {expr}

Aquí expr especifica la expresión en sí.

P: ¿Cuáles son los objetos EL implícitos en JSP?

R: El lenguaje de expresión JSP admite los siguientes objetos implícitos:

  • pageScope: variables con ámbito del alcance de la página
  • requestScope: variables con ámbito del alcance de la solicitud
  • sessionScope: variables con ámbito del alcance de la sesión
  • applicationScope: variables con ámbito del ámbito de aplicación
  • param: solicitar parámetros como cadenas
  • paramValues: parámetros de solicitud como colecciones de cadenas
  • headerHTTP: encabezados de solicitud como cadenas
  • headerValues: encabezados de solicitud HTTP como colecciones de cadenas
  • initParam: parámetros de inicialización de contexto
  • cookie: valores de cookies
  • pageContext: el objeto JSP PageContext para la página actual

P: ¿Cómo podemos desactivar EL?

R: Podemos deshabilitar el uso del atributo isELIgnored de la directiva de página:

Si es cierto, las expresiones EL se ignoran cuando aparecen en texto estático o atributos de etiqueta. Si es falso, el contenedor evalúa las expresiones EL.

P: ¿Qué tipo de errores puede encontrar en un código JSP?

UNA:

  • Excepciones comprobadas: la excepción comprobada es una excepción que generalmente es un error del usuario o un problema que el programador no puede prever. Por ejemplo, si se va a abrir un archivo, pero no se puede encontrar el archivo, se produce una excepción. Estas excepciones no pueden simplemente ignorarse en el momento de la compilación.
  • Excepciones de tiempo de ejecución: una excepción de tiempo de ejecución es una excepción que probablemente el programador podría haber evitado. A diferencia de las excepciones marcadas, las excepciones de tiempo de ejecución se ignoran en el momento de la compilación.
  • Errores: Estas no son excepciones en absoluto, sino problemas que surgen fuera del control del usuario o del programador. Los errores generalmente se ignoran en su código porque rara vez puede hacer algo al respecto. Por ejemplo, si se produce un desbordamiento de la pila, se producirá un error. También se ignoran en el momento de la compilación.

P: En la página JSP, ¿cómo podemos manejar la excepción de tiempo de ejecución?

R: Podemos usar el atributo errorPage de la directiva de página para que las excepciones de tiempo de ejecución no detectadas se envíen automáticamente a una página de procesamiento de errores.

Ejemplo:

Redirigirá el navegador a la página JSP error.jsp si se encuentra una excepción no detectada durante el procesamiento de la solicitud. Dentro de error.jsp, deberá indicar que es una página de procesamiento de errores, utilizando la directiva:

P: ¿Qué es la internacionalización?

R: La internacionalización significa habilitar un sitio web para proporcionar diferentes versiones de contenido traducido al idioma o nacionalidad del visitante.

P: ¿Qué es la localización?

R: La localización significa agregar recursos a un sitio web para adaptarlo a una región geográfica o cultural particular, por ejemplo, la traducción del hindi a un sitio web.

P: ¿Qué es la configuración regional?

R: Esta es una región cultural o geográfica particular. Por lo general, se conoce como un símbolo de idioma seguido de un símbolo de país que están separados por un guión bajo. Por ejemplo, “en_US” representa la configuración regional en inglés para EE. UU.

P: ¿Cuál es la diferencia entre y ?

R: es un comentario JSP y el motor JSP lo ignora.

es un comentario HTML y el navegador lo ignora.

P: ¿La tecnología JSP es extensible?

A: si. La tecnología JSP es extensible mediante el desarrollo de acciones personalizadas, o etiquetas, que se encapsulan en bibliotecas de etiquetas.

P: ¿Cómo incluyo archivos estáticos dentro de una página JSP?

R: Los recursos estáticos siempre deben incluirse utilizando la directiva JSP include. De esta manera, la inclusión se realiza solo una vez durante la fase de traducción. Tenga en cuenta que siempre debe proporcionar una URL relativa para el atributo de archivo. Aunque también puede incluir recursos estáticos utilizando la acción, esto no es aconsejable ya que la inclusión se realiza para cada solicitud.

P: ¿Puede una página JSP procesar datos de FORMULARIO HTML?

A: si. Sin embargo, a diferencia de Servlet, no es necesario que implemente métodos específicos del protocolo HTTP como doGet () o doPost () dentro de su página JSP. Puede obtener los datos para los elementos de entrada FORM a través del objeto implícito de solicitud dentro de un scriptlet o expresión.

P: ¿Cómo pasa el control de una página JSP a otra?

R: Use las siguientes formas para pasar el control de una solicitud de un servlet a otro o de un jsp a otro:

  • El método de reenvío del objeto RequestDispatcher para pasar el control.
  • Usando el método response.sendRedirect .

P: ¿Puede hacer uso de un objeto ServletOutputStream desde una página JSP?

R: No. Se supone que debe utilizar solo un objeto JSPWriter (que se le proporciona en forma de objeto implícito) para responder a los clientes.

Un JSPWriter puede verse como una versión almacenada del objeto de flujo devuelto por response.getWriter (), aunque desde una perspectiva de implementación, no lo es.

P: ¿Cuál es la directiva de página que se usa para evitar que una página JSP cree automáticamente una sesión?

A:

P: ¿Cómo pasar información de JSP a JSP incluido?

A: Usando la etiqueta .

P: ¿Podemos anular los métodos jspInit (), _jspService () y jspDestroy ()?

R: Podemos anular los métodos jspinit () y jspDestroy () pero no _jspService ().

P: ¿Por qué el método _jspService () comienza con un ‘_’ mientras que otros métodos del ciclo de vida no lo hacen?

A: el método _jspService () será escrito por el contenedor, por lo tanto, cualquier método que no sea anulado por el usuario final generalmente se escribe comenzando con un ‘_’. Esta es la razón por la cual no anulamos el método _jspService () en ninguna página JSP.

P: Una página JSP, include.jsp , tiene una variable de instancia “int a”, ahora esta página está incluida estáticamente en otra página JSP, home.jsp, que también tiene una variable de instancia “int a” declarada. ¿Qué sucede cuando el cliente solicita la página home.jsp?

R: Causa un error de compilación, ya que no se pueden declarar dos variables con el mismo nombre. Esto sucede porque, cuando una página se incluye estáticamente, el código completo de la página incluida se convierte en parte de la nueva página. En este momento hay dos declaraciones de la variable ‘a’. De ahí el error de compilación.

P: ¿Cómo se desactivan los scripts?

R: La secuencia de comandos se deshabilita al establecer el elemento no válido de la secuencia de comandos del descriptor de implementación en verdadero. Es un subelemento de jsp-property-group. Sus valores válidos son verdadero y falso. La sintaxis para deshabilitar las secuencias de comandos es la siguiente:

* .jsp

verdadero

P: ¿Cuándo uso el alcance de la aplicación?

R: Si queremos que nuestros datos estén disponibles para toda la aplicación, entonces tenemos que usar el alcance de la aplicación.

P: ¿Cuáles son las opciones en JSP para incluir archivos?

R: En JSP, podemos realizar la inclusión de las siguientes maneras:

  • Por la directiva include: por ejemplo:

·

  • Por incluir acción: Por ejemplo:

·

  • Mediante el uso de objeto implícito pageContext Por ejemplo:

<%

·

pageContext.include (“/ header.jsp”);

%>

  • Mediante el uso del objeto RequestDispatcher: por ejemplo:

·

<%

·

RequestDispatcher rd = request.getRequestDispatcher (“/ header.jsp”);

·

Rd.incliude (solicitud, respuesta);

%>

P: ¿Cómo instalan los motores JSP las instancias de clases de manejador de etiquetas?

R: Los motores JSP siempre instanciarán una nueva instancia de controlador de etiquetas cada vez que se encuentre una etiqueta en una página JSP. Se mantiene un grupo de instancias de etiquetas y se reutilizan cuando sea posible. Cuando se encuentra una etiqueta, el motor JSP intentará encontrar una instancia de etiqueta que no se esté utilizando y usará la misma y luego la liberará.

P: ¿Cuál es la diferencia entre las directivas JavaBeans y taglib?

R: Se introdujeron los fundamentos JavaBeans y taglib para su reutilización. Pero las siguientes son las principales diferencias entre ellas:

  • Taglibs son para generar elementos de presentación, mientras que JavaBeans son buenos para almacenar información y estado.
  • Utilice etiquetas personalizadas para implementar acciones y JavaBeans para presentar información.

Hola,

Según mi experiencia, la mayoría de los entrevistadores me hicieron algunas preguntas que mencioné a continuación,

  1. Objetos implícitos
  2. Diferencia entre incluir acción y directiva
  3. Diferencia entre ServletContext y ServletConfig
  4. Diferencia entre métodos get y post.
  5. Explicar sobre la etiqueta de carga al inicio.
  6. ¿Explicar el ciclo de vida de Servlet y JSP?
  7. Diferencia entre web y servidor de aplicaciones.
  8. Algunos detalles sobre filtro y sesión también.

Estas son las preguntas que un entrevistador me hizo repetidamente, pero sí, puede ser diferente de persona a persona, por lo que debe prepararse para la peor condición.

Actualizaré la respuesta nuevamente si tengo más información sobre la misma.

Aquí hay algunos – J2EE – Preguntas y respuestas de la entrevista sobre Servlets / JSP

El siguiente artículo contiene preguntas y respuestas detalladas sobre el servlet, desearía que esto pueda ayudarlo. Gracias.

http://www.dev2qa.com/java-servl

Aquí puede encontrar las principales preguntas de la entrevista JSP: https://www.hub4tech.com/intervi

More Interesting

¿Cuáles son algunas buenas tareas de desarrollo cortas (1–3 horas) para un proceso de solicitud / entrevista de desarrollador JavaScript de nivel medio de entrada?

Se le da una matriz ordenada, que aumenta monotónicamente y disminuye de la misma manera. ¿Cómo idear un algoritmo para encontrar el índice de un elemento en esta matriz sin calcular el pivote? El tiempo de ejecución debe ser O (log n). Puede suponer que no hay ningún elemento duplicado en esta matriz.

¿Las preguntas de entrevistas de software en las principales compañías tecnológicas están específicamente diseñadas para sesgar a los programadores más jóvenes (que aún recuerdan los conceptos teóricos en detalle)?

Soy bueno en algoritmos y lógica, pero todavía no estoy descifrando mis entrevistas de codificación. ¿Qué tengo que hacer?

Cómo prepararse para las entrevistas con desarrolladores Java (Spring, Hibernate)

¿Qué significa cuando un entrevistador dice que mira más "cómo piensa el entrevistado"?

¿Cuáles son algunas preguntas que se le pueden hacer a un desarrollador de React.js en una entrevista técnica?

¿Qué debo preparar para la entrevista para el desarrollador de material de estudio para física?

¿Cuándo fue tu primera entrevista? ¿Como le fue? ¿Qué aprendiste de esa experiencia? ¿Cómo te preparaste para la entrevista?

¿Por qué no se debe adquirir un mutex en una rutina de servicio de interrupción?

Cómo descifrar las entrevistas de codificación en línea

Cómo medir la calidad del código

¿Dónde puedo encontrar algunas preguntas de entrevistas en el sitio de Google?

Cómo resolver este problema en Java, dado un árbol binario, determinar si está equilibrado en altura

¿Cuál es el conjunto de preguntas para preparar en Java y JavaScript para una entrevista de más de 2 años?