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

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 28: Línia 28:
 
s'indica amb l'atribut import.
 
s'indica amb l'atribut import.
 
Exemple:
 
Exemple:
<source lang="jsp">
+
<source lang="java">
 
<%@page import="java.io.*, miPackage.miClase"%>
 
<%@page import="java.io.*, miPackage.miClase"%>
 
</source>
 
</source>
 
* 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.
 
* 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:
 
Exemple:
<source lang="jsp">
+
<source lang="java">
 
<%@page session="true" import="java.util.ArrayList"%>
 
<%@page session="true" import="java.util.ArrayList"%>
 
</source>
 
</source>
 
* Gestió d'errors. Permet redireccionar a una pàgina quan es produeixi un error, s'indicaamb els atributs ''errorPage'' i ''isErrorPage''.
 
* Gestió d'errors. Permet redireccionar a una pàgina quan es produeixi un error, s'indicaamb els atributs ''errorPage'' i ''isErrorPage''.
 
Exemple:
 
Exemple:
<source lang="jsp">
+
<source lang="java">
 
<%@page errorPage="error.jsp">
 
<%@page errorPage="error.jsp">
 
         [...]
 
         [...]
Línia 52: Línia 52:
 
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.
 
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:
 
Exemple:
<source lang="jsp">
+
<source lang="java">
 
<html>
 
<html>
 
   <head>
 
   <head>
Línia 69: Línia 69:
 
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.
 
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:
 
Exemples:
<source lang="jsp">
+
<source lang="java">
 
<%-- Exemple 1 --%>
 
<%-- Exemple 1 --%>
 
<%! int numeroAccesos=0; %>
 
<%! int numeroAccesos=0; %>
Línia 106: Línia 106:
 
Es pot utilitzar també l'equivalent a etiquetes XML: '''<jsp:declaration>'''codi'''</jsp:declaration>'''
 
Es pot utilitzar també l'equivalent a etiquetes XML: '''<jsp:declaration>'''codi'''</jsp:declaration>'''
  
<source lang="jsp">
+
<source lang="java">
 
<%-- Exemple sense etiquietes xml: --%>
 
<%-- Exemple sense etiquietes xml: --%>
 
<%!
 
<%!
Línia 136: Línia 136:
 
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.
 
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:
 
Exemples:
<source lang="jsp">
+
<source lang="java">
 
<%-- Exemple 1 --%>
 
<%-- Exemple 1 --%>
 
<table>
 
<table>
Línia 167: Línia 167:
  
 
Es pot utilitzar també l'equivalent a etiquetes XML: '''<jsp:scriplet>'''codi'''</jsp:scriplet>'''
 
Es pot utilitzar també l'equivalent a etiquetes XML: '''<jsp:scriplet>'''codi'''</jsp:scriplet>'''
<source lang="jsp">
+
<source lang="java">
 
<%-- Exemple sense etiquietes xml: --%>
 
<%-- Exemple sense etiquietes xml: --%>
 
<html>
 
<html>
Línia 199: Línia 199:
 
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);
 
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:
 
Exemples:
<source lang="jsp">
+
<source lang="java">
 
<%= "Tamaño de cadena: "+cadena.length() %>
 
<%= "Tamaño de cadena: "+cadena.length() %>
 
<%= new java.util.Date() %>
 
<%= new java.util.Date() %>
Línia 206: Línia 206:
  
 
Es pot utilitzar també l'equivalent a etiquetes XML: '''<jsp:expression>'''codi'''</jsp:expression>'''
 
Es pot utilitzar també l'equivalent a etiquetes XML: '''<jsp:expression>'''codi'''</jsp:expression>'''
<source lang="jsp">
+
<source lang="java">
 
<%-- Exemple sense etiquietes xml: --%>
 
<%-- Exemple sense etiquietes xml: --%>
 
<%= "Tamaño de cadena: "+cadena.length() %>
 
<%= "Tamaño de cadena: "+cadena.length() %>

Revisió del 19:51, 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>