JavaServer Pages (JSP) es una tecnología para desarrollar páginas web que admiten contenido dinámico que ayuda a los desarrolladores a insertar código Java en páginas HTML mediante el uso de etiquetas JSP especiales, la mayoría de las cuales comienzan con <% y terminan con%>.
JSP ofrece varias ventajas que se enumeran a continuación:
El rendimiento es significativamente mejor porque JSP permite incrustar elementos dinámicos en las propias páginas HTML.
Los JSP siempre se compilan antes de que el servidor los procese, a diferencia de CGI / Perl, que requiere que el servidor cargue un intérprete y el script de destino cada vez que se solicita la página.
Las páginas de JavaServer están construidas sobre la API de Java Servlets, por lo que, al igual que los Servlets, JSP también tiene acceso a todas las poderosas API de Enterprise Java, incluidas JDBC, JNDI, EJB, JAXP, etc.
Las páginas JSP se pueden utilizar en combinación con servlets que manejan la lógica empresarial, el modelo soportado por los motores de plantilla de servlet de Java.
Las ventajas de JSP son dobles.
Primero, la parte dinámica está escrita en Java, no en Visual Basic u otro lenguaje específico de MS, por lo que es más potente y fácil de usar.
En segundo lugar, es portátil a otros sistemas operativos y servidores web que no son de Microsoft.
Es más conveniente escribir (¡y modificar!) HTML regular que tener muchas declaraciones println que generen el HTML. Otras ventajas son:
Incrustación de código Java en páginas HTML.
Independencia de la plataforma.
Creación de aplicaciones web impulsadas por bases de datos.
Capacidades de programación del lado del servidor.
En realidad, SSI solo está diseñado para inclusiones simples, no para programas "reales" que usan datos de formularios, hacen conexiones a bases de datos y similares.
JavaScript puede generar HTML de forma dinámica en el cliente, pero difícilmente puede interactuar con el servidor web para realizar tareas complejas como el acceso a la base de datos y el procesamiento de imágenes, etc.
El HTML normal, por supuesto, no puede contener información dinámica.
Un ciclo de vida JSP consta de los siguientes pasos:
Compilation- Cuando un navegador solicita una JSP, el motor JSP primero comprueba si necesita compilar la página. Si la página nunca se ha compilado o si la JSP se ha modificado desde la última vez que se compiló, el motor JSP compila la página.
El proceso de compilación consta de tres pasos:
Analizando el JSP.
Convirtiendo el JSP en un servlet.
Compilando el servlet.
Initialization - Cuando un contenedor carga una JSP, invoca el método jspInit () antes de atender cualquier solicitud
Execution- Siempre que un navegador solicita una JSP y la página se ha cargado e inicializado, el motor JSP invoca el método _jspService () en la JSP. El método _jspService () de una JSP se invoca una vez por solicitud y es responsable de generar la respuesta para esa solicitud y este método también es responsable de generar respuestas a los siete métodos HTTP, es decir. OBTENER, PUBLICAR, ELIMINAR, etc.
Cleanup - La fase de destrucción del ciclo de vida de JSP representa cuando un contenedor deja de utilizar una JSP. El método jspDestroy () es el equivalente JSP del método de destrucción para servlets.
Un scriptlet puede contener cualquier número de declaraciones en lenguaje JAVA, declaraciones de variables o métodos, o expresiones que sean válidas en el lenguaje de secuencias de comandos de página.
A continuación se muestra la sintaxis de Scriptlet:
<% code fragment %>
Una declaración declara una o más variables o métodos que puede utilizar en el código Java más adelante en el archivo JSP. Debe declarar la variable o el método antes de usarlo en el archivo JSP.
<%! declaration; [ declaration; ]+ ... %>
Un elemento de expresión JSP contiene una expresión de lenguaje de secuencias de comandos que se evalúa, se convierte en una cadena y se inserta donde aparece la expresión en el archivo JSP.
El elemento de expresión puede contener cualquier expresión que sea válida de acuerdo con la Especificación del lenguaje Java, pero no puede usar un punto y coma para finalizar una expresión.
Su sintaxis es -
<%= expression %>
El comentario JSP marca texto o declaraciones que el contenedor JSP debe ignorar. Un comentario JSP es útil cuando desea ocultar o "comentar" parte de su página JSP.
A continuación se muestra la sintaxis de los comentarios JSP:
<%-- This is JSP comment --%>
Una directiva JSP afecta la estructura general de la clase de servlet. Suele tener la siguiente forma:
<%@ directive attribute = "value" %>
Las etiquetas de la directiva de tipos son las siguientes:
<%@ page ... %> - Define atributos que dependen de la página, como el lenguaje de secuencias de comandos, la página de error y los requisitos de almacenamiento en búfer.
<%@ include ... %> - Incluye un archivo durante la fase de traducción.
<%@ taglib ... %> - Declara una biblioteca de etiquetas, que contiene acciones personalizadas, utilizadas en la página.
Las acciones JSP utilizan construcciones en sintaxis XML para controlar el comportamiento del motor de servlets. Puede insertar dinámicamente un archivo, reutilizar componentes JavaBeans, reenviar al usuario a otra página o generar HTML para el complemento Java.
Su sintaxis es la siguiente:
<jsp:action_name attribute = "value" />
jsp: include, jsp: useBean, jsp: setProperty, jsp: getProperty, jsp: forward, jsp: plugin, jsp: element, jsp: attribute, jsp: body, jsp: text
Los literales son los valores, como un número o una cadena de texto, que se escriben literalmente como parte de un código de programa. El lenguaje de expresión JSP define los siguientes literales:
Boolean - verdadero y falso
Integer - como en Java
Floating point - como en Java
String- con comillas simples y dobles; "se escapa como \", 'se escapa como \' y \ se escapa como \\.
Null - nulo
los pageLa directiva se utiliza 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.
La directiva de página contiene los siguientes 13 atributos.
language
extends
import
session
isThreadSafe
info
errorPage
isErrorpage
contentType
isELIgnored
buffer
autoFlush
isScriptingEnabled
El atributo de búfer especifica las características de almacenamiento en búfer para el objeto de respuesta de salida del servidor.
Cuando el búfer se establece en "ninguno" , la salida del servlet se dirige inmediatamente al objeto de salida de respuesta.
los autoFlush atributo especifica si la salida almacenada en el búfer debe vaciarse automáticamente cuando se llena el búfer o si se debe generar una excepción para indicar un desbordamiento del búfer.
Un valor de true (predeterminado) indica el vaciado automático del búfer y un valor de false lanza una excepción.
los contentTypeEl atributo establece la codificación de caracteres para la página JSP y para la página de respuesta generada. El tipo de contenido predeterminado es texto / html, que es el tipo de contenido estándar para páginas HTML.
los errorPageEl atributo 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.
El atributo isErrorPage indica que la JSP actual se puede utilizar como página de error para otra JSP.
El valor de isErrorPage es verdadero o falso. El valor predeterminado del atributo isErrorPage es falso.
los extends atributo especifica una superclase que el servlet generado debe extender.
los importEl atributo tiene la misma función y se comporta como la declaración de importación de Java. El valor de la opción de importación es el nombre del paquete que desea importar.
los info El atributo le permite proporcionar una descripción de la JSP.
los isThreadSafeLa opción marca una página como segura para subprocesos. De forma predeterminada, todas las JSP se consideran seguras para subprocesos. Si establece la opción isThreadSafe en false, el motor JSP se asegura de que solo un hilo a la vez esté ejecutando su JSP.
los language El atributo indica el lenguaje de programación utilizado en la creación de scripts de la página JSP.
los sessionEl atributo indica si la página JSP utiliza sesiones HTTP. Un valor de verdadero significa que la página JSP tiene acceso a un objeto de sesión incorporado y un valor de falso significa que la página JSP no puede acceder al objeto de sesión incorporado.
los isELIgnored La opción le brinda la posibilidad de deshabilitar la evaluación de 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 dicta 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.
los isScriptingEnabled El atributo 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 de tiempo de traducción si la JSP usa scriptlets, expresiones (no EL) o declaraciones.
La directiva de inclusión se utiliza 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 la JSP actual durante la fase de traducción. Puede incluir códigos de directivas en cualquier lugar de su página JSP.
La forma de uso general de esta directiva es la siguiente:
<%@ include file = "relative url" >
La directiva taglib sigue la siguiente sintaxis:
<%@ taglib uri = "uri" prefix = "prefixOfTag">
El valor del atributo uri se resuelve en una ubicación que el contenedor comprende
El atributo de prefijo informa a un contenedor qué partes de marcado son acciones personalizadas.
La directiva taglib sigue la siguiente sintaxis:
<%@ taglib uri = "uri" prefix = "prefixOfTag" >
Id attribute- El atributo id identifica de forma única el elemento Action 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
Scope attribute- Este atributo identifica el ciclo de vida del elemento Acción. El atributo id y el atributo scope están directamente relacionados, ya que el atributo scope determina la vida útil del objeto asociado con el id. El atributo de alcance tiene cuatro valores posibles: (a) página, (b) solicitud, (c) sesión y (d) aplicación.
Esta acción le permite insertar archivos en la página que se está generando. La sintaxis se ve así:
<jsp:include page = "relative URL" flush = "true" />
Dónde page 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.
A diferencia del include directive, que inserta el archivo en el momento en que la página JSP se traduce a un servlet, include action inserta el archivo en el momento en que se solicita la página.
los useBeanla acción 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:
<jsp:useBean id = "name" class = "package.class" />
los setPropertyaction establece las propiedades de un Bean. El Bean debe haber sido definido previamente antes de esta acción.
los getProperty La acción se usa para recuperar el valor de una propiedad dada, lo convierte en una cadena y finalmente lo inserta en la salida.
los forward action 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:
<jsp:forward page = "Relative URL" />
los pluginLa acción se utiliza para insertar componentes Java en una página JSP. Determina el tipo de navegador e inserta las etiquetas <object> o <embed> 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.
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.
Los objetos implícitos de JSP son los objetos de Java que JSP Container pone a disposición de los desarrolladores en cada página y el desarrollador puede llamarlos directamente sin ser declarados explícitamente. Los objetos implícitos de JSP también se denominan variables predefinidas.
request, response, out, session, application, config, pageContext, page, Exception
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 del encabezado HTTP, incluidos datos de formularios, cookies, métodos HTTP, etc.
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.
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 la creación de 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.
los out El objeto implícito es una instancia de un objeto javax.servlet.jsp.JspWriter y se utiliza para enviar contenido en una respuesta.
los JspWriterEl objeto 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 delPrintWriter objeto, JspWriter arroja IOExceptions.
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.
El objeto de aplicación es un contenedor directo alrededor del objeto ServletContext para el Servlet generado y, en realidad, es una instancia de un objeto javax.servlet.ServletContext.
Este objeto es una representación de la página JSP durante 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.
El objeto de configuración es una instanciación de javax.servlet.ServletConfig y es un contenedor 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.
El objeto pageContext es una instancia de un objeto javax.servlet.jsp.PageContext. El objeto pageContext se utiliza 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 derivan al acceder a los atributos de este objeto.
El objeto pageContext también contiene información sobre las directivas emitidas a la página JSP, incluida la información de almacenamiento en búfer, errorPageURL y el alcance de la página.
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 de este objeto.
El objeto de excepción es un contenedor que contiene la excepción lanzada desde la página anterior. Suele utilizarse para generar una respuesta adecuada a la condición de error.
El método GET envía la información de usuario codificada adjunta a la solicitud de página. La página y la información codificada están separadas por? 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? en la URL lo envía como un mensaje separado. Este mensaje llega al programa backend en forma de entrada estándar que puede analizar y utilizar para su procesamiento.
JSP maneja el análisis de datos de formularios automáticamente usando los siguientes métodos dependiendo de la situación:
getParameter() - Llamas al método request.getParameter () para obtener el valor de un parámetro de formulario.
getParameterValues() - Llame a este método si el parámetro aparece más de una vez y devuelve varios valores, por ejemplo, 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 el flujo de datos binarios provenientes del cliente.
Los filtros JSP son clases de Java que se pueden utilizar 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 que se envíen de vuelta al cliente.
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 haya declarado en el descriptor de implementación. Los filtros se ejecutan en el orden en que se declaran en el descriptor de implementación.
Las cookies son archivos de texto almacenados en la computadora del cliente y se guardan para varios propósitos de rastreo de información.
Las cookies generalmente se establecen en un encabezado HTTP (aunque JavaScript también puede establecer una cookie directamente en un navegador). Si el navegador está configurado para almacenar cookies, entonces mantendrá esta información hasta la fecha de vencimiento. 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.
La configuración de cookies con JSP implica tres pasos:
Creating a Cookie object - Llamas al constructor de cookies con un nombre de cookie y un valor de cookie, ambos son cadenas.
Setting the maximum age - Utiliza setMaxAge para especificar cuánto tiempo (en segundos) debe ser válida la cookie.
Sending the Cookie into the HTTP response headers - Utiliza response.addCookie para agregar cookies en el encabezado de respuesta HTTP
Para leer las cookies, debe crear una matriz de objetos javax.servlet.http.Cookie llamando al método getCookies () de HttpServletRequest. Luego, recorra la matriz y use los métodos getName () y getValue () para acceder a cada cookie y valor asociado.
Eliminar las cookies es muy sencillo. Si desea eliminar una cookie, simplemente debe seguir tres pasos:
Leer una cookie ya existente y almacenarla en el objeto Cookie.
Establecer la edad de la cookie como cero usando setMaxAge() método para eliminar una cookie existente.
Vuelva a agregar esta cookie al encabezado de respuesta.
La gestión de sesiones se puede lograr mediante el uso de:
Cookies - Un servidor web puede asignar un ID de sesión único como una cookie a cada cliente web y para las solicitudes posteriores del cliente, pueden ser reconocidos utilizando la cookie recibida.
Hidden Form Fields - Un servidor web puede enviar un campo de formulario HTML oculto junto con una ID de sesión única de la siguiente manera:
<input type = "hidden" name = "sessionid" value = "12345">
URL Rewriting- 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 resultar útil cuando una cookie está desactivada.
The session Object - JSP hace uso de 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 para almacenar información sobre ese usuario.
Esto implica que cuando se envía el formulario, el nombre y el valor especificados se incluirán en el método GET o POST.
Cuando haya terminado con los datos de sesión de un usuario, tiene varias opciones:
Remove a particular attribute- Puede llamar al método public void removeAttribute (String name) para eliminar el valor asociado con una clave en particular.
Delete the whole session- Puede llamar al método public void invalidate () para descartar una sesión completa.
Setting Session timeout- Puede llamar al método public void setMaxInactiveInterval (int interval) para establecer el tiempo de espera de una sesión individualmente.
Log the user out - Los servidores que admiten servlets 2.4, puede llamar logout para cerrar la sesión del cliente en el servidor web e invalidar todas las sesiones que pertenecen a todos los usuarios.
web.xml Configuration - 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.
Para cargar un solo archivo, debe usar una sola etiqueta <input ... /> con 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.
Puede codificar esto en su programa o este nombre de directorio también podría agregarse usando una configuración externa como un elemento context-param en web.xml.
La redirección de página se usa generalmente cuando un documento se mueve a una nueva ubicación y necesitamos enviar al cliente a esta nueva ubicación o puede ser debido al equilibrio de carga o por simple aleatorización.
El elemento <jsp: forward> 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.
Un contador de visitas le informa sobre el número de visitas en una página en particular de su sitio web.
Para implementar un contador de visitas, puede utilizar el objeto Application Implícito y los métodos asociados getAttribute () y setAttribute ().
Este objeto es una representación de la página JSP durante 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.
Puede seguir los pasos a continuación:
Defina una tabla de base de datos con un solo recuento, digamos hitcount. Asígnele un valor cero.
Con cada visita, lea la tabla para obtener el valor del recuento de visitas.
Aumente el valor del recuento de visitas en uno y actualice la tabla con un nuevo valor.
Muestra el nuevo valor del recuento de visitas como recuento total de visitas a la página
Si desea contar las visitas de todas las páginas, implemente la lógica anterior para todas las páginas.
Considere una página web que muestre la puntuación del juego en vivo o el estado del mercado de valores o la ración de cambio de moneda. Para todos estos tipos de páginas, necesitaría actualizar su página web regularmente usando el botón de actualización o recarga de su navegador.
JSP facilita este trabajo al proporcionarle un mecanismo en el que puede crear una página web de tal manera que se actualice automáticamente después de un intervalo determinado.
La forma más sencilla de actualizar una página web es mediante el método setIntHeader () del objeto de respuesta. A continuación se muestra la firma de este método:
public void setIntHeader(String header, int headerValue)
Este método devuelve el encabezado "Actualizar" al navegador junto con un valor entero que indica el intervalo de tiempo en segundos.
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 estructurales comunes 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.
Los tipos de etiquetas JSTL son:
Core Tags
Formatting tags
SQL tags
XML tags
JSTL Functions
La etiqueta <c: set> 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 JavaBean o un objeto java.util.Map.
La etiqueta <c: remove> elimina una variable de un ámbito especificado o del primer ámbito donde se encuentra la variable (si no se especifica ningún ámbito).
La etiqueta <c: catch> captura cualquier Throwable que ocurra en su cuerpo y, opcionalmente, lo expone. Simplemente se utiliza para el manejo de errores y para tratar el problema con más elegancia.
La etiqueta <c: if> evalúa una expresión y muestra su contenido del cuerpo solo si la expresión se evalúa como verdadera.
<C: choose> funciona como una declaración de cambio de Java en el sentido de que le permite elegir entre varias alternativas. Donde la instrucción de cambio tiene declaraciones de caso, la etiqueta <c: choose> tiene etiquetas <c: when>. Una instrucción de cambio tiene una cláusula predeterminada para especificar una acción predeterminada y de manera similar <c: choose> tiene <de otra manera> como cláusula predeterminada.
Las etiquetas <c: forEach>, <c: forTokens> existen como una buena alternativa a incrustar un bucle for, while o do-while de Java a través de un scriptlet.
La etiqueta <c: param> permite especificar el parámetro de solicitud de URL adecuado con URL y realiza cualquier codificación de URL necesaria.
La etiqueta <c: redirect> redirige el navegador a una URL alternativa al proporcionar reescritura automática de URL, admite URL relativas al contexto y admite la etiqueta <c: param>.
La etiqueta <c: url> formatea una URL en una cadena y la almacena en una variable. Esta etiqueta realiza automáticamente la reescritura de URL cuando es necesario.
Las etiquetas de formato JSTL se utilizan para formatear y mostrar el texto, la fecha, la hora y los números de los sitios web internacionalizados. A continuación se muestra la sintaxis para incluir la biblioteca de formato en su JSP:
<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
La biblioteca de etiquetas SQL de JSTL proporciona etiquetas para interactuar con bases de datos relacionales (RDBMS) como Oracle, mySQL o Microsoft SQL Server.
A continuación se muestra la sintaxis para incluir la biblioteca JSTL SQL en su JSP:
<%@ taglib prefix = "sql" uri = "http://java.sun.com/jsp/jstl/sql" %>
Las etiquetas XML de JSTL proporcionan una forma centrada en JSP de crear y manipular documentos XML. A continuación se muestra la sintaxis para incluir la biblioteca XML de JSTL en su JSP.
<%@ taglib prefix = "x" uri = "http://java.sun.com/jsp/jstl/xml" %>
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 a un servlet, la etiqueta se convierte en operaciones en un objeto llamado controlador de etiquetas. Luego, el contenedor web invoca esas operaciones cuando se ejecuta el servlet de la página JSP.
JSP Expression Language (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í.
El lenguaje de expresión JSP admite los siguientes objetos implícitos:
pageScope - Variables de ámbito del ámbito de la página
requestScope - Variables de alcance del alcance de la solicitud
sessionScope - Variables de alcance del alcance de la sesión
applicationScope - Variables de alcance del alcance de la aplicación
param - Solicitar parámetros como cadenas
paramValues - Solicitar parámetros como colecciones de cadenas
headerHTTP - solicitar encabezados 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
Podemos deshabilitar el uso del atributo isELIgnored de la directiva de la página -
<%@ page isELIgnored = "true|false" %>
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.
Checked exceptions- Una excepción marcada es una excepción que suele ser 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, se produce una excepción. Estas excepciones no pueden simplemente ignorarse en el momento de la compilación.
Runtime exceptions- Una excepción de tiempo de ejecución es una excepción que ocurre y que probablemente el programador podría haber evitado. A diferencia de las excepciones marcadas, las excepciones en tiempo de ejecución se ignoran en el momento de la conformidad.
Errors- 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 pila, surgirá un error. También se ignoran en el momento de la compilación.
Podemos usar el atributo errorPage de la directiva de página para que las excepciones en tiempo de ejecución no detectadas se reenvíen automáticamente a una página de procesamiento de errores.
Ejemplo: <% @ page errorPage = "error.jsp"%>
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 se trata de una página de procesamiento de errores, utilizando la directiva: <% @ page isErrorPage = "true"%>
La internacionalización significa permitir que un sitio web proporcione diferentes versiones de contenido traducidas al idioma o nacionalidad del visitante.
La localización significa agregar recursos a un sitio web para adaptarlo a una región geográfica o cultural en particular, por ejemplo, la traducción del hindi a un sitio web.
Ésta es una región geográfica o cultural particular. Por lo general, se lo 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 de EE. UU.
<% - comment -%> es un comentario JSP y el motor JSP lo ignora.
<! - comment -> es un comentario HTML y el navegador lo ignora.
SI. La tecnología JSP se puede ampliar mediante el desarrollo de acciones personalizadas, o etiquetas, que se encapsulan en bibliotecas de etiquetas.
Los recursos estáticos siempre deben incluirse utilizando JSP include directive. De esta forma, la inclusión se realiza una sola 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 usando la acción, esto no es recomendable ya que la inclusión se realiza para todas y cada una de las solicitudes.
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.
Utilice las siguientes formas de 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 .
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 en búfer del objeto de flujo devuelto por response.getWriter (), aunque desde una perspectiva de implementación, no lo es.
<% @ page session = "false">
Usando la etiqueta <% jsp: param>.
Podemos anular los métodos jspinit () y jspDestroy () pero no _jspService ().
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 que no anulamos el método _jspService () en ninguna página JSP.
Provoca 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 de forma estática, el código completo de la página incluida pasa a formar parte de la nueva página. en este momento hay dos declaraciones de variable 'a'. De ahí el error de compilación.
La secuencia de comandos se deshabilita estableciendo el elemento scripting-invalid 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-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
Si queremos que nuestros datos estén disponibles para toda la aplicación, tenemos que usar el alcance de la aplicación.
En JSP, podemos realizar la inclusión de las siguientes formas:
By include directive - Por ejemplo -
<%@ include file = ”header.jsp” %>
By include action - Por ejemplo -
<%@ include file = ”header.jsp” %>
By using pageContext implicit object Por ejemplo
<% pageContext.include(“/header.jsp”); %>
By using RequestDispatcher object - Por ejemplo -
<%
RequestDispatcher rd = request.getRequestDispatcher(“/header.jsp”);
Rd.include(request,response);
%>
Los motores JSP siempre creará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 es 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 liberarla.
Se introdujeron JavaBeans y los fundamentos de taglib para su reutilización. Pero las siguientes son las principales diferencias entre ellos:
Los taglibs sirven para generar elementos de presentación, mientras que los JavaBeans son buenos para almacenar información y estado.
Utilice etiquetas personalizadas para implementar acciones y JavaBeans para presentar información.