APLICACIONES EMPRESARIALES CON JEE Profesores: Andrés Farías Objetivos INTRODUCCIÓN GENERAL Introducción ¿Qué es y para qué sirve? JSP HTML JSP HTML HTML <% %> Introducción Las Java Server Pages JSP .jsp JSP JSP JSP Introducción JSP 2.0 JSP 2.0 1.2 Simple Expression Language EL Elementos JSP Elementos de Script Elementos JSP Directivas JSP Elementos JSP Ejemplo de elementos JSP (1/2) <html><head><title>Elementos de JavaServer Pages</title></head> <body><h1>Elementos de JavaServer Pages</h1> <P>El siguiente es contenido din&aacute;mico generado con elementos JSP: <ul> <li><B>JSP Expression:</B><BR>Tu hostname: <%= request.getRemoteHost() %>. <li><B>JSP Scriptlet.</B><BR> <% out.println("Data adjunta al GET: " + request.getQueryString()); %> <li><B>JSP Declaration (m&aacute;s una expresi&oacute;n).</B><BR> <%! private int accessCount = 0;%> Accesos a la p&aacute;gina desde el inicio del server: <%= ++accessCount %> <li><B>JSP Directive (m&aacute;s una expresi&oacute;n).</B><BR> <%@ page import="java.util.*"%> Fecha actual: <%=new Date()%> </ul> </body> </html> Elementos JSP Ejemplo de elementos JSP (2/2) Elementos JSP Acciones JSP SCRIPTS JSP Scripts JSP <%= <JavaExpression> %> <expresion> service() out <jsp:expression> <JavaExpression> </jsp:expression> response out session application config pageContext request Scripts JSP Expresiones (2/2) request HttpServletRequest response HttpServletResponse session HttpSession request out PrintWriter JspWriter Your hostname: <%= request.getRemoteHost() %> Scripts JSP: Expresiones Un ejemplo simple La parte de código que se evalúa en el Servidor. Scripts JSP Scriptlets JSP <% <JavaStatement> %> service() <jsp:scriptlet> <JavaStatement> </jsp:scriptlet> Scripts JSP: Scriptlets Sintaxis service() print() %\> HTML Java %> Scripts JSP: Scriptlets Sintaxis <% if (Math.random() < 0.5) { %> Have a <B>nice</B> day! <% } else { %> Have a <B>lousy</B> day! <% } %> if (Math.random() < 0.5) { out.println("Have a <B>nice</B> day!");} else { out.println("Have a <B>lousy</B> day!");} Scripts JSP: Declaraciones Sintaxis y uso <%! <JavaStatement> %> <%! private int accessCount = 0; %> Accesses to page since server reboot: <%= ++accessCount %> Declaraciones Sintaxis XML %> %\> <jsp:declaration> <JavaMemberDeclaration> </jsp:declaration> DIRECTIVAS JSP page include <%@ ... %> Directivas JSP Resumen general Directivas JSP Directiva Page <%@ page att="val" %> <jsp:directive.page att="val"\> (1/3) Directivas JSP Directiva Page: Atributos legales import="package.class" contentType="MIME-Type" isThreadSafe="true|false“ session="true|false" buffer="sizekb|none" autoflush="true|false" extends="package.class" info="message" errorPage="url" isErrorPage="true|false" language="java" (2/3) Directivas JSP Directiva Include (3/3) <%@ include file="url" %> <jsp:directive.include file="url" \> DIRECTIVA PAGE <%@ PAGE … %> Directivas JSP Directiva: page Atributos: import & contentType import="package.class“ o import="package.class1,...,package.classN". import ContentType = "MIME-Type" o contentType = "MIME-Type; charset = Character-Set" MIME text/html “response.setContentType” Directiva: page Atributos: Threads& Sesiones isThreadSafe="true|false" SingleThreadModel session="true|false" true session HttpSession session Directiva: page Atributos: buffer & autoflush buffer="sizekb|none" out JspWriter autoflush="true|false" true buffer="none" Directiva: page Atributos: Extends, Info& ErrorPage extends="package.class" info="message" string getServletInfo errorPage="url" Throwable Directiva: page Atributos: isErrorPage & Language isErrorPage="true|false" language="java" false DIRECTIVA PAGE <%@ INCLUDE … %> Directivas JSP Directiva: include Atributos: file <%@ include file=“<urlRelativa>” %> ACCIONES JSP VARIABLES PREDEFINIDAS Acciones JSP Variables predefinidas La petición: request request HttpServletRequest getParameter() GET POST HEAD cookies Referer ServletRequest HttpServletRequest Variables predefinidas La respuesta: response response HttpServletResponse stream Variables predefinidas La salida: out out PrintWriter JspWriter PrintWriter out Variables predefinidas La sesión: session session HttpSession session session Variables predefinidas Varios: application, Config & PageContext application ServletContext getServletConfig().getContext() config ServletConfig pageContext PageContext page this JspWriters ACCIONES Acciones JSP Acciones Conceptos Generales Sintaxis Acción Include jsp:include <jsp:include page="relative URL" flush="true"/> Sintaxis Acciones: jsp:useBean <jsp:useBean att=val*/> <jsp:useBean att=val*> ... </jsp:useBean> id="name" scope="page|request|session|application" class="package.class" type="package.class" beanName="package.class" Sintaxis Acciones sobre beans jsp:setProperty <jsp:setProperty att=val*/> name="beanName" property="propertyName|*" param="parameterName" value="val" jsp:getProperty <jsp:getProperty name="propertyName" value="val"/> Sintaxis Acciones sobre beans jsp:forward <jsp:forward page="relative URL"/> jsp:plugin <jsp:plugin attribute="value"*> ... </jsp:plugin> OBJECT EMBED Acciones include jsp:include <jsp:include page="relative URL" flush="true" /> include Acciones: useBean Sintaxis jsp:useBean JavaBean <jsp:useBean id="name" class="package.class" /> class id jsp:setProperty id jsp:getProperty Acciones: useBean Uso <jsp:useBean id="name" class="package.class" /> <jsp:useBean ...> Body </jsp:useBean> Body jsp:useBean Acciones: useBean Atributos id class id scope scope type page, request, session, application. beanName type beanName class Acciones: setProperty Uso useBean <jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName“ property="someProperty" ... /> Acciones: setProperty Uso (2/2) useBean <jsp:useBean id="myName“ ... > ... <jsp:setProperty name="myName" property="someProperty" ... /> </jsp:useBean> Acciones: setProperty Atributos (1/2) name jsp:useBean jsp:setProperty property * value valueOf value param Acciones: setProperty Atributos param <jsp:setProperty name="orderBean“ property="numberOfItems" param="numItems" /> (2/2) EL: SIMPLE EXPRESSION LANGUAGE Simple Expression Language (SLE) Introducción <%@ page isScriptingEnabled="true|false" isELEnabled="true|false"%> Sintaxis EL Expresiones: literales ${expr} expr true false Integer Floating point String null ${false} <%-- evaluates to false --%> ${3*8} Sintaxis EL Expresiones: operadores ${expr} expr + - * / div % mod and && or || ! not == eq != ne < lt < gt <= le >= ge empty null func A ? B: C ${ (6 * 5) + 5 } <%-- evalua a 35 --%> ${empty name} args 0 Sintaxis EL Expresiones: objetos implícitos ${expr} expr pageContext response session out servletContext request : ${pageContext.response} param $(param.name) <-> request.getParameter (name) paramValues ${paramvalues.name) <-> request.getParamterValues(name ) header ${header.name} <-> request.getHeader(name) headerValues ${headerValues.name} <-> request.getHeaderValues(name) Sintaxis EL Expresiones: objetos implícitos ${expr}, expr cookie ${cookie.name.value} initParam initParam.name ServletContext.getInitparameter(String name) pageScope ${pageScope.objectName} ${pageScope.objectName.attributeName}. requestScope ${requestScope.objectName} ${requestScope.objectName.attributeName} sessionScope ${sessionScope.name} applicationScope Ejemplos EL Expresiones simples y objetos implícitos ${amount + 5} ${order.amount + 5} amount order ${order['amount'] + 5} <input type="text" name="ip" value="${pageContext.request.remoteAddr}"> Ejemplos EL Operador ? <select name="artist"> <option value="1” ${param.artist == 1 ? 'selected' : ''}> Vanessa Paradis </option> <option value="2" ${param.artist == 2 ? 'selected' : ''}> Yan Tiersen </option> <option value="3" ${param.artist == 3 ? 'selected' : ''}> Dave Matthews Band </option> </select> PÁGINAS DE ERRORES Páginas de Error JSP Las clases de soporte javax.servlet.error.exception errorData pageContext javax.servlet.jsp.ErrorData requestURI servletName statusCode throwable Páginas de Error JSP Ejemplo de Uso <%@ page isErrorPage="true" contentType="text/html" %> <%@ taglib prefix="log" uri="http://jakarta.apache.org/taglibs/log-1.0" %> Disculpa, pero las cosas no funcionaron como estaban planeadas. Registré tanto como supe del problema, asique esté tranquilo que mi Maestro mirará el error tan pronto como esté sobrio. <jsp:useBean id="now" class="java.util.Date" /> <log:fatal> ----${now} Petición que falló: ${pageContext.errorData.requestURI} código de status: ${pageContext.errorData.statusCode} Exception: ${pageContext.errorData.throwable} ----</log:fatal> Páginas de Error JSP Declaración de la página de error web.xml ... <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-code>500</exception-code> <location>/error.jsp</location> </error-page> ... web.xml en JSP 2.0 web.xml web.xml web.xml config> <jsp- Elemento jsp-config <jsp-property-group> ... <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config> ... Elemento jsp-config Elemento Descripción <el-ignored> Indica si ignorar o no las expresiones EL dentro de un JSP correspondiente al patrón URL indicado. Por defecto es false. <scripting-invalid> Si es true no se pueden introducir scriplets en el JSP. <page-encoding> Indica la codificación de caracteres para un conjunto de JSPs <include-coda> Indica el path correspondiente a un fichero a añadir al final de cada página JSP.. <include-prelude> Lo mismo pero al comienzo de cada JSP. <is-xml> Si se asigna a true la sintaxis de los JSPs es en XML. EJERCICIO PROPUESTO Ejercicio práctico JSP PREGUNTAS?