JavaServer Pages
JavaServer Pages (JSP) es una tecnología que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML y XML, entre otros tipos de documentos. JSP es similar a PHP, pero usa el lenguaje de programación Java.
JSP puede ser visto como una abstracción de alto nivel de los servlets Java. Las JavaServer Pages son traducidas a servlets en tiempo real; cada servlet es guardado en caché y rehusado hasta que la JSP original es modificada. Dicho en otras palabras un JSP son páginas java para un ambiente web.
Qué es el API de JSP
Como el lenguaje Java es un lenguaje orientado a objetos, la API de Java provee de un conjunto de clases utilitarias para efectuar toda clase de tareas necesarias dentro de un programa.
La API Java está organizada en paquetes lógicos, donde cada paquete contiene un conjunto de clases relacionadas semánticamente.
Ciclo de vida JSP
- El servlet asociado a una jsp es un servlet por lo siguiente: implementa la interface javax.servlet.jsp.HttpJspPage, que es subinterface de JspPage del mismo paquete, que, a su vez, es subinterface de javax.servlet.Servlet.
- Como todo servlet se caracteriza por implementar la interface Servlet, queda asegurado que el código Java generado en la traducción de la jsp es un servlet. Si se consulta la API J2EE, se observa que
- La interface HttpJspPage declara el método _jspService(HttpServletRequest request, HttpServletResponse response).
Estos tres métodos constituyen el ciclo de vida de una jsp y son similares al init(..), service(..) y destroy() del ciclo de vida de un servlet.
Código JSP
<!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>Mi Primer JSP</title> </head> <body> <h1>Mi Primer JSP</h1> <% // Código Java %> </body> </html>
Comentarios en las paginas jsp
<%-- comentario jsp que solo se ve en la jsp --%><%// comentario de linea Java que solo se ve en la jsp y en su servlet asociado %>
<% /*comentario de Java. Se ve donde el anterior.*/ out.println("CUCU");
//out.println("No me verás si no descomentas"); %>
Objetos implícitos de JSP
Objeto | escripción | Clase o interfaz | Categoria |
page | Instancia de la página JSP actual | java.lang.Object | Relacionados con los servlets |
config | Contiene información relativa a la configuración del servlet generado | java.servlet.ServletConfig | |
request | Petición realizada la página JSP | javax.servlet.http.HttpServletRequest | Entrada/Salida |
response | Respuesta proporcionada por la página JSP | javax.servlet.http.HttpServletResponse | Entrada/Salida |
out | Representa el flujo de salida del cuerpo de la respuesta HTTP | javax.servlet.jsp.JspWriter | Entrada/Salida |
session | Permite mantener una sesión para cada uno de los usuarios conectados a la aplicación Web | javax.servlet.http.HttpServletSession | Contexto |
application | Representa a la propia aplicación Web | java.servlet.ServletContext | Contexto |
pageContext | Contexto en el que se ejecuta la página JSP | javax.servlet.jsp.PageContext | Contexto |
exception | Excepción que se ha producido en una página JSP | Java.lang.throwable | Tratamiento de errores |
Manejo de errores dentro de la página actual
La página
JSP puede entonces llevar a cabo la acción de recuperación adecuada en
función del error
recibido. Una página JSP puede utilizar cualquier combinación de los
siguientes ámbitos
de manejo de errores.
La página JSP puede utilizar bloques try y catch para
capturar la excepción de modo que pueda llevar a cabo la acción adecuada en función del
tipo de excepción. El siguiente es un ejemplo de un fragmento de código JSP que utiliza
sentencias Java try y catch:
SomeDataBean sdb = new SomeDataBean();
sdb.setSomeProperty("");
try {
com.ibm.commerce.beans.DataBeanManager.activate(sdb, request); }
catch(Exception ex){
//Maneje la excepción de la forma que desee..
}
Para obtener más detalles sobre un error, incluya un ErrorDataBean
en el archivo JSP. Se puede crear una instancia de ErrorDataBeans, se
pueden llenar y utilizar. A continuación se proporciona un ejemplo:
ErrorDataBean errorBean = new ErrorDataBean ( );
com.ibm.commerce.beans.DataBeanManager.activate (errorBean, request);
Una
vez que se ha creado una instancia del bean de datos, éste cuenta con métodos para
obtener ExceptionData, ExceptionMessage, MessageKey, ExceptionType, y otros métodos de
ayudante.
Para archivos JSP de escaparate, utilice StoreErrorDataBean para manejar los errores.
Expresión JSP
Se usan para mandar valores directamente a la pagina web resultante de la JSP, <%= expresion %>, la expresion es ejecutada, se convierte a una cadena de caracteres (String) y insertada en la pagina. En las expresiones se usan gran cantidad de variables predefinidas, los mas usados son:- request, de la clase HttpServletRequest
- response, de la clase HttpServletResponse
- session, de la clase HttpSession que esta asociada al request, si es que trabajamos con sessions
- out, se trata de una clase PrintWriter usada para imprimir directamente en la pagina resultante.
Buffering en JSP
Cualquier cosa generada por la página JSP se almacena en un búfer. Cuando el búfer está lleno, se devuelve al cliente (navegador). A veces, es necesario ajustar los atributos de buffer y autoFlush para darle más control sobre cómo y cuándo el búfer se vacía al navegador.
Por ejemplo, si no tiene cuidado con una response.sendRedirect , puede obtener una java.lang.IllegalStateException . Esto ocurre cuando está realizando un redireccionamiento después de que los datos ya han sido confirmados en el navegador.
El atributo autoFlush indica al motor JSP cuando se debe descargar el búfer. De forma predeterminada, se establece en true. Si lo establece en false y el búfer se llena, se lanzará una excepción.
Cuando el búfer se vacía una vez, la redirección o el reenvío no funcionarán. Todos los cambios en el encabezado de respuesta HTTP deben producirse la primera vez que se envía un búfer al cliente JSP,. Por ejemplo, tenga cuidado donde se hace el procesamiento de cookies!
No hay comentarios:
Publicar un comentario