Objetos implícitos JSP
¿Qué es el objeto implícito JSP?
- Los objetos implícitos JSP se crean durante la fase de traducción de JSP al servlet.
- Estos objetos se pueden usar directamente en scriptets que van en el método de servicio.
- El contenedor los crea automáticamente y se puede acceder a ellos mediante objetos.
¿Cuántos objetos implícitos hay disponibles en JSP?
Hay 9 tipos de objetos implícitos disponibles en el contenedor:
- Oct
- Solicitar retiro
- Respuesta
- Config
- Solicitud
- Sesión
- Contexto de página
- Páginas
- Excepción
Estudiemos uno por uno.
1) Fuera
- Out es uno de los objetos implícitos para escribir los datos en el búfer y enviar la salida al cliente en respuesta.
- El objeto Out nos permite acceder al flujo de salida del servlet.
- Out es objeto de la clase javax.servlet.jsp.jspWriter
- Mientras trabajaba con servlet, necesitamos el objeto printwriter
Ejemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP1</title> </head> <body> <% int num1=10;int num2=20; out.println("num1 is " +num1); out.println("num2 is "+num2); %> </body> </html>
Explicación del código:
Línea de código 11-12– out se utiliza para imprimir en el flujo de salida
Cuando ejecutamos el código anterior, obtenemos el siguiente resultado:
Salida:
- En la salida, obtenemos los valores de num1 y num2.
2) Solicitud
- El objeto de solicitud es una instancia de java.servlet.http.HttpServletRequest y es uno de los argumentos del método de servicio.
- Se creará por contenedor para cada solicitud.
- Se utilizará para solicitar información como parámetro, información del encabezado, nombre del servidor, etc.
- Utiliza getParameter() para acceder al parámetro de solicitud.
Ejemplo:
Implicit_jsp2.jsp (formulario desde el cual se envía la solicitud a guru.jsp)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru form JSP2</title> </head> <body> <form action="guru.jsp"> <input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html>
Guru.jsp (donde se realiza la acción)
Explicación del código:
Línea de código 10-13: En implícito_jsp2.jsp (formulario), se envía la solicitud, por lo tanto, la variable nombre de usuario se procesa y se envía a guru.jsp, que es una acción de JSP.
Gurú.jsp
Línea de código 10-11: Es la acción jsp donde se procesa la solicitud y el nombre de usuario se toma del formulario jsp.
Cuando ejecutas el código anterior, obtienes el siguiente resultado
Salida:
Cuando escribes la prueba y haces clic en el botón Enviar, obtienes el siguiente resultado: “Prueba de bienvenida”.
3) Respuesta
- "Respuesta" es una instancia de clase que implementa la interfaz HttpServletResponse
- El contenedor genera este objeto y pasa al método _jspservice() como parámetro
- El contenedor creará un “objeto de respuesta” para cada solicitud.
- Representa la respuesta que se le puede dar al cliente.
- El objeto implícito de respuesta se utiliza para escribir contenido, agregar cookies y redirigir a la página de respuesta.
Ejemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP4</title> </head> <body> <%response.setContentType("text/html"); %> </body> </html>
Explicación del código:
Línea de código 11: En el objeto de respuesta podemos establecer el tipo de contenido.
Aquí configuramos solo el tipo de contenido en el objeto de respuesta. Por lo tanto, no hay salida para esto.
4) Configuración
- “Config” es del tipo java.servlet.servletConfig
- Lo crea el contenedor para cada página jsp.
- Se utiliza para obtener el parámetro de inicialización en web.xml.
Ejemplo:
Web.xml (especifica el nombre y la asignación del servlet)
Implicit_jsp5.jsp (obteniendo el valor del nombre del servlet)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP5</title> </head> <body> <% String servletName = config.getServletName(); out.println("Servlet Name is " +servletName);%> </body> </html>
Explicación del código:
En web.xml
Línea de código 14-17: En web.xml tenemos mapeo de servlets a las clases.
Implícito_jsp5.jsp
Línea de código 10-11: Para obtener el nombre del servlet en JSP, podemos usar config.getServletName, que nos ayudará a obtener el nombre del servlet.
Cuando ejecuta el código anterior, obtiene el siguiente resultado:
Salida:
- El nombre del servlet es "GuruServlet", ya que el nombre está presente en web.xml
5) Aplicación
- El objeto de aplicación (línea de código 10) es una instancia de javax.servlet.ServletContext y se utiliza para obtener información de contexto y atributos en JSP.
- El objeto de aplicación lo crea el contenedor uno por aplicación, cuando se implementa la aplicación.
- El objeto Servletcontext contiene un conjunto de métodos que se utilizan para interactuar con el contenedor de servlet. Podemos encontrar información sobre el contenedor de servlet.
Ejemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Implicit JSP6</title> </head> <body> <% application.getContextPath(); %> </body> </html>
Explicación del código:
- En el código anterior, el atributo de la aplicación ayuda a obtener la ruta de contexto de la página JSP.
6) Sesión
- La sesión contiene el objeto "httpsession" (línea de código 10).
- El objeto de sesión se utiliza para obtener, establecer y eliminar atributos del alcance de la sesión y también se utiliza para obtener información de la sesión.
Ejemplo:
Implícito_jsp7 (el atributo está establecido)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit JSP</title> </head> <body> <% session.setAttribute("user","GuruJSP"); %> <a href="implicit_jsp8.jsp">Click here to get user name</a> </body> </html>
Implícito_jsp8.jsp (getAttribute)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>implicit Guru JSP8</title> </head> <body> <% String name = (String)session.getAttribute("user"); out.println("User Name is " +name); %> </body> </html>
Explicación del código:
Implícito_jsp7.jsp
Línea de código 11: estamos configurando el atributo usuario en la variable de sesión, y ese valor se puede obtener de la sesión en cualquier jsp que se llame desde allí (_jsp8.jsp).
Línea de código 12: Estamos llamando a otro jsp en href en el que obtendremos el valor del atributo usuario que está configurado.
Implícito_jsp8.jsp
Línea de código 11: Obtenemos el valor del atributo de usuario del objeto de sesión y mostramos ese valor
Cuando ejecuta el código anterior, obtiene el siguiente resultado:
Al hacer clic en el enlace del nombre de usuario, obtendrá el siguiente resultado.
Salida:
- Cuando hacemos clic en el enlace proporcionado en implicit_jsp7.jsp, somos redirigidos a la segunda página jsp, es decir, la página (_jsp8.jsp) y obtenemos el valor del objeto de sesión del atributo de usuario (_jsp7.jsp).
7) Contexto de la página
- Este objeto es del tipo de contexto de página.
- Se utiliza para obtener, establecer y eliminar los atributos de un alcance particular.
Los alcances son de 4 tipos:
- Páginas
- Solicitar retiro
- Sesión
- Solicitud
Ejemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP9</title> </head> <body> <% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE); String name = (String)pageContext.getAttribute("student"); out.println("student name is " +name); %> </body> </html>
Explicación del código:
Línea de código 11: Estamos configurando el atributo usando el objeto pageContext y tiene tres parámetros:
- Clave
- Value alto
- <b></b><b></b>
En el código anterior, la clave es estudiante y el valor es "gurustudent", mientras que el alcance es el alcance de la página. Aquí el alcance es "página" y solo se puede utilizar el alcance de la página.
Línea de código 12: Obtenemos el valor del atributo usando pageContext
Cuando ejecuta el código anterior, obtiene el siguiente resultado:
Salida:
- El resultado imprimirá "el nombre del estudiante es gurustudent".
8) Página
- La variable implícita de página contiene el objeto servlet actualmente ejecutado para el jsp correspondiente.
- Actúa como este objeto para la página jsp actual.
Ejemplo:
En este ejemplo, estamos usando el objeto de página para obtener el nombre de la página usando el método toString.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP10</title> </head> <body> <% String pageName = page.toString(); out.println("Page Name is " +pageName);%> </body> </html>
Explicación del código:
Línea de código 10-11: En este ejemplo, intentamos utilizar el método toString() del objeto de página e intentamos obtener el nombre de cadena de la página JSP.
Al ejecutar el código se obtiene el siguiente resultado:
Salida:
- La salida es el nombre de cadena de la página jsp anterior
9) Excepción
- La excepción es el objeto implícito de la clase arrojable.
- Se utiliza para manejo de excepciones en JSP.
- El objeto de excepción solo se puede utilizar en páginas de error.Ejemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isErrorPage="true"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP 11</title> </head> <body> <%int[] num1={1,2,3,4}; out.println(num1[5]);%> <%= exception %> </body> </html>
Explicación del código:
Línea de código 10-12 – Tiene una matriz de números, es decir, num1 con cuatro elementos. En la salida, intentamos imprimir el quinto elemento de la matriz de num1, que no está declarado en la lista de matrices. Por lo tanto, se utiliza para obtener el objeto de excepción del jsp.
Salida:
Obtenemos ArrayIndexOfBoundsException en la matriz donde obtenemos una matriz num1 del quinto elemento.