Diferència entre revisions de la pàgina «NF2 - Llenguatge JSP (15h)»

De wikiserver
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «=Java Server Pages (JSP) = JavaServer Pages (JSP) és una tecnologia basada en el llenguatge Java que permet incorporar contingut dinàmic a les pàgines web. Els arxius …».)
 
Línia 8: Línia 8:
 
*Tags JSP: Etiquetes especials que interpreta el servidor.
 
*Tags JSP: Etiquetes especials que interpreta el servidor.
 
Exemple de JSP:
 
Exemple de JSP:
<source lang="jsp">
+
<source lang="java">
 
<%@page import="java.util.*"%>
 
<%@page import="java.util.*"%>
 
<%! String cadena="Bienvenidos a JSP"; %>
 
<%! String cadena="Bienvenidos a JSP"; %>

Revisió del 19:50, 8 nov 2014

Java Server Pages (JSP)

JavaServer Pages (JSP) és una tecnologia basada en el llenguatge Java que permet incorporar contingut dinàmic a les pàgines web. Els arxius JSP combinen HTML amb etiquetes especials i fragments de codi Java. El codi font d'una pàgina JSP pot contenir:

  • Directives: Indiquen informació general de la pàgina, com pot ser importació de classes, pàgina a invocar davant errors, si la pàgina forma part d'una sessió, etc.
  • Declaracions: Serveixen per declarar mètodes o variables.
  • Scriptlets: Codi Java embegut.
  • Expressions: Expressions Java que s'avaluen i s'envien a la sortida.
  • Tags JSP: Etiquetes especials que interpreta el servidor.

Exemple de JSP:

<%@page import="java.util.*"%>
<%! String cadena="Bienvenidos a JSP"; %>
<html>
  <body>
    <%= cadena %>
    <br>
    <% out.println(new Date()); %>
  </body>
</html>

Directives

Les directives són elements que proporcionen informació al motor JSP, i influiran en l'estructura del servlet generat. Hi ha tres tipus de directives: page, taglib i include.

page

S'indica amb la forma <%@ page atribut="valor">. Té diversos usos, entre els quals destacarem:

  • Importar classes. Importar codi, de la mateixa forma que es realitza en un programa en Java,

s'indica amb l'atribut import. Exemple:

<%@page import="java.io.*, miPackage.miClase"%>
  • Indicar si la pàgina tindrà accés a la sessió. S'especifica amb l'atribut session. L'ús de sessions es veurà amb més detall a l'apartat d'objectes implícits.

Exemple:

<%@page session="true" import="java.util.ArrayList"%>
  • Gestió d'errors. Permet redireccionar a una pàgina quan es produeixi un error, s'indicaamb els atributs errorPage i isErrorPage.

Exemple:

<%@page errorPage="error.jsp">
         [...]
<%@page isErrorPage="yes">
<html>
   <body>
    Error, contacte con el administrador [...]
   </body>
</html>

include

Permet incloure un arxiu en el lloc on s'especifiqui, al contrari que amb l'acció <jsp:include> que veurem més endavant, la directiva include simplement copia el contingut de l'arxivo byte a byte, sent el resultat similar a si copiéssim el text de l'arxiu inclòs i ho peguéssim en el JSP. Exemple:

<html>
   <head>
      <%@ include file="titulo.txt"%>
   </head>
   <body>
      <%@ include file="cuerpoPagina.jsp"%>
   </body>
</html>

taglib

S'empra per indicar que es van a emprar llibreries d'etiquetes. Per a mes informació veure JSTL.

Declaracions

Contenen declaracions de variables o mètodes, amb la forma <%! declaració %>. Aquestes variables o mètodes seran accessibles des de qualsevol lloc de la pàgina JSP. Cal tenir en compte que el servidor transforma la pàgina JSP en un servlet, i aquest és usat per múltiples peticions, la qual cosa provoca que les variables conservin el seu valor entre successives execucions. Exemples:

<%-- Exemple 1 --%>
<%! int numeroAccesos=0; %>
<html>
   <body>
   <%=
       "La página ha sido accedida "+(++numeroAccesos)+
       " veces desde el arranque del servidor"
   %>
   </body>
</html>

<%-- Exemple 2 --%>
<%! java.util.Date primerAcceso=new java.util.Date(); %>
<html>
   <body>
   El primer acceso a la página se realizo en:
   <%= primerAcceso %>
   </body>
</html>

<%-- Exemple 3 --%>
<%!
private String ahora()
{
return ""+new java.util.Date();
}
%>
<html>
   <body>
   <%= ahora() %>
   </body>
</html>

Es pot utilitzar també l'equivalent a etiquetes XML: <jsp:declaration>codi</jsp:declaration>

<%-- Exemple sense etiquietes xml: --%>
<%!
private String ahora()
{
return ""+new java.util.Date();
}
%>
<html>
   <body>
   <%= ahora() %>
   </body>
</html>

<%-- Exemple amb etiquietes xml: --%>
<jsp:declaration>
private String ahora()
{
return ""+new java.util.Date();
}
</jsp:declaration>
<html>
   <body>
   <%= ahora() %>
   </body>
</html>

Scriplets

Són fragments de codi Java amb la forma <% codi %>, en general, podem inserir qualsevol codi que poguéssim usar dins d'una funció Java. Per accedir a la sortida del navegador, usem l'objecte implícit out. Exemples:

<%-- Exemple 1 --%>
<table>
   <% for (int i=0;i<10;i++)
   {
    %>
   <tr><td> <%=i%> </td></tr>
    <% }
    %>
</table>

<%-- Exemple 2 --%>
<%
out.println("<table>");
for (int i=0;i<10;i++)
out.println("<tr><td>"+i+"</td></tr>");
out.println("</table>");
%>

<%-- Exemple 3 --%>
<%
String parametro1=request.getParameter("parametro1");
String parametro2=request.getParameter("parametro2");
MiClase miClase=new MiClase();
String salida=miClase.procesa(parametro1, parametro2);
%>
...
<%= salida %>

Es pot utilitzar també l'equivalent a etiquetes XML: <jsp:scriplet>codi</jsp:scriplet>

<%-- Exemple sense etiquietes xml: --%>
<html>
   <head><title>Hello World</title></head>
   <body>
      Hello World!<br/>
      <%
         out.println("Your IP address is " + request.getRemoteAddr());
      %>
   </body>
</html>

<%-- Exemple amb etiquietes xml: --%>
<html>
   <head><title>Hello World</title></head>
   <body>
      Hello World!<br/>
     <jsp:scriplet>
         out.println("Your IP address is " + request.getRemoteAddr());
     </jsp:scriplet>
   </body>
</html>



<jsp:scriptlet>
code fragment
</jsp:scriptlet>

Expressions

Són fragments de codi Java, amb la forma <%= expressió %> que s'avaluen i es mostren en la sortida del navegador. En general, dins d'una expressió podem usar qualsevol cosa que usaríem dins de un System.out.print(expr); Exemples:

<%= "Tamaño de cadena: "+cadena.length() %>
<%= new java.util.Date() %>
<%= Math.PI*2 %>

Es pot utilitzar també l'equivalent a etiquetes XML: <jsp:expression>codi</jsp:expression>

<%-- Exemple sense etiquietes xml: --%>
<%= "Tamaño de cadena: "+cadena.length() %>
<%= new java.util.Date() %>
<%= Math.PI*2 %>

<%-- Exemple amb etiquietes xml: --%>
<jsp:expression>
 "Tamaño de cadena: "+ cadena.length()
</jsp:expression> 
<jsp:expression>
new java.util.Date()
</jsp:expression>
<jsp:expression>
Math.PI*2
</jsp:expression>