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

De wikiserver
Dreceres ràpides: navegació, cerca
(Accions)
Línia 270: Línia 270:
 
</jsp:forward>
 
</jsp:forward>
 
</source>
 
</source>
Per a més informació [http://www.tutorialspoint.com/jsp/jsp_actions.htm]
+
Per a més informació [http://www.tutorialspoint.com/jsp/jsp_actions.htm tutorial jsp]

Revisió del 20:52, 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>

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>

Accions

Accions JSP utilitzen construccions en la sintaxi XML per controlar el comportament del motor de servle. Dinàmicament pots inserir un arxiu , reutilitzar components JavaBeans, reenviar a l'usuari a una altra pàgina , o generar HTML per a un pluggin de Java.

Només hi ha una sintaxi per a l'element d'acció , ja que s'ajusta a l'estàndard XML:

<jsp:action_name attribute ="value" />
Sintaxi Propòsit
jsp:include Inclou un arxiu a la vegada que se sol·licita la pàgina
jsp:useBean Troba o instància un JavaBean
jsp:setProperty Estableix la propietat d'un JavaBean
jsp:getProperty Obté la propietat d'un JavaBean
jsp:forward envia al sol·licitant a una nova pàgina
jsp:plugin Genera codi específicament per a un navegador d'un objecte o EMBED tag
jsp:element Defineix els elements XML de forma dinàmica
jsp:attribute Defineix l'atribut de l'element XML.
jsp:body Defineix l'element body XML dinàmicament
jsp:text S'utilitza per escriure text de la plantilla en les pàgines i documents JSP

Exemples:

<%-- Exemple1 --%>
<html>
   <head>
      <jsp:include page="cabecera.jsp"/>
   </head>
   <body>
      <jsp:include page="cuerpo.jsp">
         <jsp:param name="tipo" value="paginaPrincipal"/>
      </jsp:include>
   </body>
</html>
<%-- Exemple2 --%>
<jsp:forward page="principal.jsp">
   <jsp:param name="titulo" value="Principal"/>
</jsp:forward>

Per a més informació tutorial jsp