miércoles, 20 de mayo de 2015

JSP y JSTL


Procedimiento y Resultados:
1.   primer jsp
 primer.jsp
<html>
<body>
<%
String mensaje = "D.S.U.N.A.L.M - Java Web";
out.println(mensaje);
%>
</body>
</html>
2.   EXPRESIONES
expresiones.jsp
<html>
<body>
<%= new java.util.Date()%>
</body>
</html>
expresiones2.jsp
<html>
<body>
<%
String curso = "Java Web";
%>   
<%=curso%>
</body>
</html>
3.   DECLARACIÓN
      declaracion.jsp
<html> 
    <body>
<%! int count = 0; %>
<% count++; %>
Ud. es el visitante <%=count%>    
   
    </body>
</html>
4.   COMENTARIOS
      comentarios.jsp
<html> 
    <body>
     Comentarios
<%-- Comentario 1 --%>
<!-- Comentario 2 -->
<%
// Comentario 3
/* Comentario 4
 */
%>   
    </body>
</html>
5.   IMPORT
importar.jsp
<%@page import="java.util.*" %>
<html>
<body>
<%
Date fecha = new Date();
String total=fecha.getDate()+"-"+(fecha.getMonth()+1)+"-" + (fecha.getYear()+1900);
%>
<%=total%>
</body>
</html>
6.   mostrando un collection
            mostrarcollection.jsp
<%@page import="java.util.*"%>
<html>
 <body>
<%
Collection<String> c = new ArrayList<String>();
c.add("servlets");
c.add("jsp");
c.add("beans");
c.add("tags");
for(String x : c){
       out.print(x);
}
%>
</body>
</html>
  1. Ejercicio: Enviar un Collection de un Servlet a un JSP
Persona.java
package ejercicio;
public class Persona {
   
    private String nombre;
    private String apellidos;
   
    public Persona(){
    }
    public Persona(String pNombre, String pApellidos) {
        this.nombre = pNombre;
        this.apellidos = pApellidos;
    }
   
    public String getNombre() {
        return this.nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getApellidos() {
        return this.apellidos;
    }
    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }   
}
MostrarPersonasServlet.java
package ejercicio.servlets;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {       
        Persona p1 = new Persona("erasmo", "saavedra robles");
        Persona p2 = new Persona("juan", "rodriguez condezo");
        Persona p3 = new Persona("jose", "rodriguez condezo");
       
        Collection<Persona> c = new ArrayList<Persona>();
        c.add(p1);
        c.add(p2);
        c.add(p3);
       
        request.setAttribute("personas", c);
       
        RequestDispatcher rd = request.getRequestDispatcher("personas.jsp");
        rd.forward(request, response);
}
            personas.jsp
<%@page import="ejercicio.Persona, java.util.*"%>
<html>
    <body>
   
    <table border="1">
      <tr><th>Nombre</th><th>Apellidos</th></tr>
<%
Collection<Persona> c = (ArrayList<Persona>)request.getAttribute("personas");
for(Persona p : c) {
    out.println("<tr><td>");
    out.println(p.getNombre());
    out.println("</td><td>");
    out.println(p.getApellidos());
    out.println("</td></tr>");
}
%>    </table>
   
    </body>
</html>
8.   EJERCICIO INCLUDe
inclusion.jsp
<html>
<body>
<h3>Inclusión en compilación</h3>
<%@include file="tabla.jsp" %>
<h3>Inclusión en ejecución</h3>
<jsp:include page="tabla.jsp"/>
</body>
</html>
     tabla.jsp
<table border="1">
<tr><td colspan="2">Tabla de Prueba</td></tr>
<tr><td>Celda 1</td><td>Celda 2</td></tr>
<tr><td>Celda 3</td><td>Celda 4</td></tr>
<tr><td>Celda 5</td><td>Celda 6</td></tr>
</table>
9.   VARIABLE implicita request
formulario.jsp
<html>
<body>
<form action="autentifica.jsp" method="post">
         Codigo: <input type="text" name="cod"><br>
         Clave:   <input type="password" name="cla"><br>
         <input type="Submit" value="Aceptar">
</form>
</body>
­</html>


autentifica.jsp
<html>
<body>
<%
String codigo = request.getParameter("cod");
String clave = request.getParameter("cla");
String mensaje="";
if("tecsup".equals(codigo) && "javaweb".equals(clave)) {
    mensaje="Bienvenido "+codigo;
} else {
    mensaje="Codigo o Clave Incorrecta";
}
%>
<%=mensaje%>
</body>
</html>
10.                VARIABLES IMPLICITA session
iniciar-contador.jsp
<html>
<body>
<% session.setAttribute("visitas","0"); %>
<h1>Contador de visitas iniciado!</h1>
<a href="contador.jsp">Continuar</a>
</body>
</html>
  
      contador.jsp
<html>
<body>
<%
int nro = Integer.parseInt((String)session.getAttribute("visitas"));
nro++;
session.setAttribute("visitas",""+nro);
%>
<h1>Página visitada <%=nro%> veces (sólo en esta sesión).</h1>
</body>
</html>


  1. EJERCICIO: AREA

<html>
<body>
Usando PI igual a <%=pi%>, el área del círculo<br>
con un radio de 3 es  <%=area(3)%>
<%!
double area(double r) {
   return r*r*pi;
}
%>
<%! final double pi=3.14159; %>
</body>
</html>


JSTL
Copiar las librerías jstl.jar y standard.jar
1.    Test1.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:set scope="session" var="name" value="<b>David</b>"/>
Bienvenido <c:out value="Hola ${sessionScope.name}"
default="Invitado" escapeXml="false"/>
</body>
</html>
2.    Test2.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
  String nombre = "david desde variable de clase";
%>
<c:set var="nom" value="<%=nombre %>"/>
<c:out value="${pageScope.nom}"/>
<%
session.setAttribute("nombre", "david");
pageContext.setAttribute("nombre", "juan");
request.setAttribute("nombre", "jose");
application.setAttribute("nombre", "toti");
%>
<html>
    <body>
    <c:out value="${sessionScope.nombre}" />
    <br/>
    <c:out value="${pageScope.nombre}" />
    <br/>
    <c:out value="${requestScope.nombre}" />
    <br/>   
    <c:out value="${applicationScope.nombre}" />
    <br/>
    1 <c:out value="${pageContext}" />
    <br/>
    2 <c:out value="${pageContext.request.method}"/>
    <br/>
    3 <c:out value="${pageContext.request.queryString}"/>
     <br/>
    4 <c:out value="${pageContext.servletContext.serverInfo}"/>  
    </body>
</html>


Pregunta.java
package tarea04.vo;
public class Pregunta {
            private int idPregunta;
            private String texto;
// Generar sus métodos set y get
}
3.    Test3.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="tarea04.vo.Pregunta,java.util.*"%>
<html>
    <body>
        <%
        Pregunta p1 = new Pregunta();
        p1.setIdPregunta(1);
        p1.setTexto("¿Qué es jstl?");
        Pregunta p2 = new Pregunta();
        p2.setIdPregunta(2);
        p2.setTexto("¿Qué es EL?");
       
        Collection<Pregunta> c = new ArrayList<Pregunta>();
        c.add(p1);
        c.add(p2);       
        request.setAttribute("preguntas", c);
        %>     
        <c:forEach items="${requestScope.preguntas}"
        var="p" varStatus="i" >
            ${i.count}.- ${p.texto} <br/>
        </c:forEach>
       
    </body>
</html>
4.    Test4.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<body>
<c:set var="titulo" value="Este es el TITULO de la PAGINA"/>
${fn:toUpperCase(titulo)}
<br/>
${fn:substring(titulo, 2,10)}
<br/>
${fn:replace(titulo, "TITULO", "TITLE")}
<br/>
${fn:escapeXml("<foo>body of foo</foo>")}
</body>
</html>
5.    Test5.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <body>
        <h3>IF</h3>
        <c:if test='${param.ok == "yes"}'>
            Hola <c:out value="${param.name}!"/>
        </c:if>
       
        <h3>CHOOSE</h3>
        <c:choose>
            <c:when test='${param.curso == "java"}'>
            Curso de Java
            </c:when>
            <c:when test='${param.curso == "php"}'>
            Curso de PHP
            </c:when>
        </c:choose>
        
        <h3>FOREACH</h3>
        <table>
            <tr><th>Value</th>
            <th>Square</th></tr>
            <c:forEach var="x" begin="0" end="10" step="2">
                <tr><td><c:out value="${x}"/></td>
                <td><c:out value="${x * x}"/></td></tr>
            </c:forEach>
        </table>
        <c:set var="minombre" value="${param.minombre}Rodriguez"/>
        <a href="<c:url value="mock.jsp?a=${minombre}"/>">hazme click</a>
       
        <br/>
        <c:import url="http://www.gooogle.com"/>
       
    </body>
</html>
6.    Test6.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <body>
<a href="<c:url value="mock.jsp"><c:param name="n" value="a"/></c:url>">ir a</a>
<c:out value="<h3>"  escapeXml="true"/>
    </body>
</html>


ETIQUETAS PERSONALIZADAS
  1. PRIMERA ETIQUETA
PrimerTag.java
package laboratorio6.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class PrimerTag extends TagSupport {
   public int doStartTag() throws JspException {
        try {
            pageContext.getOut().print("Esta es mi primera etiqueta.");
        } catch (Exception ex) {
            throw new JspException("Error al crear la primera etiqueta");
        }
        return SKIP_BODY;
    }
}
/WEB-INF/tld/EtiquetasPersonalizadas.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0">
  <tlib-version>1.0</tlib-version>
  <short-name>EtiquetasPersonalizadas</short-name>
  <uri>/WEB-INF/EtiquetasPersonalizadas</uri>
  <tag>
    <name>mensaje</name>
    <tag-class>laboratorio6.tag.PrimerTag</tag-class>
    <body-content>empty</body-content>
  </tag>
 
</taglib>
test1.jsp
<%@taglib uri="/WEB-INF/EtiquetasPersonalizadas" prefix="mistag" %>
<html>
<body>
<mistag:mensaje/>
</body>
</html>


  1. ETIQUETA PONER EN MAYÚSCULA

PonerEnMayusculaTag.java
package laboratorio6.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class PonerEnMayusculaTag extends BodyTagSupport {
  
    public int doStartTag() throws JspException {
        return EVAL_BODY_BUFFERED;
    }
   
    public int doAfterBody() throws JspException {
        try {
            JspWriter out = bodyContent.getEnclosingWriter();
            String text = bodyContent.getString();
            out.print(text.toUpperCase());
        } catch (IOException e){
            throw new JspException(e.getMessage());
        }
        return SKIP_BODY;
    }
}
            /WEB-INF/tld/EtiquetasPersonalizadas.tld
  <tag>
    <name>PonerEnMayuscula</name>
    <tag-class>laboratorio6.tag.PonerEnMayusculaTag</tag-class>
    <body-content>JSP</body-content>
  </tag> 
test2.jsp
<%@taglib uri="/WEB-INF/EtiquetasPersonalizadas" prefix="mistag" %>
<html>
<body>
<mistag:PonerEnMayuscula>Curso de Java</mistag:PonerEnMayuscula>
</body>
</html>


  1. ETIQUETA QUE MUESTRA UN ARREGLO COMO TABLA

            MostrarArregloComoTablaTag.java
package laboratorio6.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
public class MostrarArregloComoTablaTag extends TagSupport {
   
    private String nombreAtributo;
    private String nombreScope;
  
    public void setNombreAtributo(String nombreAtributo){
        this.nombreAtributo = nombreAtributo;
    }
   
    public void setNombreScope(String nombreScope){
        this.nombreScope = nombreScope;
    }
    private int getScopeAsInt(){
        if("request".equals(nombreScope)){
            return PageContext.REQUEST_SCOPE;
        }
        if("session".equals(nombreScope)){
            return PageContext.SESSION_SCOPE;
        }
        if("application".equals(nombreScope)){
            return PageContext.APPLICATION_SCOPE;
        }
        return PageContext.PAGE_SCOPE;
    }
   
    public int doStartTag() throws JspException {
        try {
            String[] cadenas = (String[])pageContext.getAttribute(nombreAtributo, getScopeAsInt());
            JspWriter out = pageContext.getOut();
            out.print("<table border=\"1\">");
            for(int i=0; i<cadenas.length; i++){
                out.print("<tr><td>"+cadenas[i]+"</td></tr>");
            }
            out.print("</table>");            
        } catch (Exception e){
            throw new JspException(e.getMessage());
        }
        return SKIP_BODY;
    }
}
           
            /WEB-INF/tld/EtiquetasPersonalizadas.tld
  <tag>
    <name>MostrarArregloComoTabla</name>
    <tag-class>laboratorio6.tag.MostrarArregloComoTablaTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>nombreAtributo</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>nombreScope</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
test3.jsp
<%@taglib uri="/WEB-INF/EtiquetasPersonalizadas" prefix="mistag" %>
<html>
<body>
   <%
   String[] cadenas = {"uno", "dos", "tres"};
   request.setAttribute("cadenas", cadenas);
   %>  
   <mistag:MostrarArregloComoTabla nombreAtributo="cadenas" nombreScope="request"/>
</body>
</html>
  1. EJERCICIO: ETIQUETA PERSONALIZADA
Escribir una etiqueta que realice lo siguiente:
Página JSP:
<%@taglib prefix="c" uri="/WEB-INF/tags/CabeceraTag.tld"%>
<%@taglib prefix="t" uri="/WEB-INF/tags/TablaTag.tld"%>
<%@taglib prefix="p" uri="/WEB-INF/tags/PieTag.tld"%>
<c:cabecera titulo="Tecsup" keyword="Programación en Java">
  Esta es la página principal
</c:cabecera>
<h1>Contenido de mi página</h1>
<%
String[][] productos = { {"1","libro"},
                                       {"2","borrador"},
                                       {"3","lapicero"}};
pageContext.setAttribute("productos", productos);
%>
<t:tabla arreglo="productos"/>
<p:pie contenido="Copyright @ 2005 por Tecsup"/>
Resultado en HTML:
<html>
   <head>
      <title>Tecsup</title>
      <meta name=”keyword” content=”Programación en Java”/>
   </head>
   <body>
      <b>E</b>sta <b>E</b>s <b>L</b>a <b>P</b>ágina <b>P</b>rincipal
      <br/>
      <h1>Contenido de mi página</h1>
      <table border=”1”>
         <tr><th>Id</th><th>Descripción</th>
         <tr><td>1</td><td>Libro</td></tr>               
         <tr><td>2</td><td>Libro</td></tr>
         <tr><td>3</td><td>Lapicero</td></tr>
      </table>
      <h3>Copyright @ 2005 por Tecsup</h3>
   </body>
</html>
Conclusiones:
En la presente sesión, se detalló los elementos y las directivas más importantes de los JSP. Las páginas JSP permiten crear contenido dinámico. Los JSP y los Servlets trabajan en conjunto para crear páginas dinámicas.

No hay comentarios:

Publicar un comentario