Diferència entre revisions de la pàgina «NF2 - Llenguatge JSP (15h)»
(→Scriplets) |
|||
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=" | + | <source lang="xml"> |
<%-- Exemple sense etiquietes xml: --%> | <%-- Exemple sense etiquietes xml: --%> | ||
<%! | <%! | ||
Línia 189: | Línia 189: | ||
</body> | </body> | ||
</html> | </html> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
Línia 225: | Línia 219: | ||
</source> | </source> | ||
+ | == 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: | ||
<source lang="xml"> | <source lang="xml"> | ||
<jsp:action_name attribute ="value" /> | <jsp:action_name attribute ="value" /> | ||
</source> | </source> | ||
+ | |||
+ | {|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;" | ||
+ | ! align="left" width="150 px" style="background:Lavender; color:Black"|Sintaxi | ||
+ | ! align="left" width="150 px" style="background:Lavender; color:Black"|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: | ||
+ | <source lang="xml"> | ||
+ | <%-- 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> | ||
+ | </source> | ||
+ | Per a més informació [http://www.tutorialspoint.com/jsp/jsp_actions.htm] |
Revisió del 20:52, 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>
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ó [1]