Diferència entre revisions de la pàgina «NF2 - Llenguatge JSP (15h)»
(→Scriplets) |
(→Scriplets) |
||
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=" | + | <source lang="java"> |
<%-- Exemple 1 --%> | <%-- Exemple 1 --%> | ||
<table> | <table> |
Revisió del 19:54, 8 nov 2014
Contingut
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>