Diferència entre revisions de la pàgina «NF2 - Llenguatge JSP (15h)»
(→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 tutorial jsp] | + | Per a més informació [http://www.tutorialspoint.com/jsp/jsp_actions.htm] |
+ | |||
+ | == Objectes implícits == | ||
+ | En JSP disposem d'alguns objectes implícits, que ens permetran accedir a diferent informació i realitzar diverses accions. En JSP tenim els següents objectes implícits: request, response, out, session, application, config, pageContext, i page. | ||
+ | |||
+ | JSP suporta nou variables definides de forma automàtica, que també s'anomenen objectes implícits. Aquestes variables són: | ||
+ | |||
+ | {|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"|Objecte implícit | ||
+ | ! align="left" width="150 px" style="background:Lavender; color:Black"|Propòsit | ||
+ | |- | ||
+ | | request ||Aquest és l'objecte HttpServletRequest associat amb la petició . | ||
+ | |- | ||
+ | | response ||Aquest és l'objecte HttpServletResponse associat amb la resposta al client . | ||
+ | |- | ||
+ | | out ||Aquest és l'objecte PrintWriter usat per a enviar la sortida al client . | ||
+ | |- | ||
+ | | session ||Aquest és l'objecte HttpSession associat amb la petició . | ||
+ | |- | ||
+ | | application ||Aquest és l'objecte ServletContext associat amb el context d'aplicació | ||
+ | |- | ||
+ | | config ||This is the ServletConfig object associated with the page. | ||
+ | |- | ||
+ | | pageContext || Això encapsula ús de les característiques específiques del servidor com el més alt JspWriters rendiment . | ||
+ | |- | ||
+ | | page || Això és simplement un sinònim d'aquesta , i s'utilitza per cridar als mètodes definits pel translated servet class | ||
+ | |- | ||
+ | | Exception || L'objecte d'excepció permet que les dades d'excepció per a tenir accés als designats JSP . | ||
+ | |} | ||
+ | |||
+ | === Objecte Request === | ||
+ | És un objetode la classe HttpServletRequest, el seu ús principal és l'accés als paràmetres de la petició. Destacarem les següents funcions: | ||
+ | *'''String getParameter(String name)''' | ||
+ | **Retorna el valor d'un paràmetre | ||
+ | *'''Enumeration getParameterNames()''' | ||
+ | **Retorna una enumeració amb els noms de tots els paràmetres de la petició. | ||
+ | *'''String[] getParameterValues(String name)''' | ||
+ | **Els paràmetres poden tenir valor múltiple, amb aquesta funció recuperem un array amb tots els valors per a un nom donat. | ||
+ | *'''String getRemoteAddr()''' | ||
+ | **Retorna la IP del host des del qual es realitza la petició | ||
+ | |||
+ | Exemple: | ||
+ | <source lang="xml"> | ||
+ | <html> | ||
+ | <body> | ||
+ | <form> | ||
+ | <input type="text" name="parametro"/> | ||
+ | <input type="submit"/> | ||
+ | </form> | ||
+ | <br> | ||
+ | <br> | ||
+ | Su IP: <%=request.getRemoteAddr()%> | ||
+ | <br> | ||
+ | Su nombre de host: <%= request.getRemoteHost() %> | ||
+ | <br> | ||
+ | Valor del parámetro: | ||
+ | <%= request.getParameter("parametro") %> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | |||
+ | === Objecte Response === | ||
+ | És un objecte de la classe HttpServletResponse, que vas agafar al servlet en la seva generació de la resposta per al client, conté funcions per a maneig de capçaleres, codis d'estat, cookies i transferència de control. | ||
+ | <source lang="java"> | ||
+ | <%@ page import="java.io.*,java.util.*" %> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Auto Refresh Header Example</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center> | ||
+ | <h2>Auto Refresh Header Example</h2> | ||
+ | <% | ||
+ | // Set refresh, autoload time as 5 seconds | ||
+ | response.setIntHeader("Refresh", 5); | ||
+ | // Get current time | ||
+ | Calendar calendar = new GregorianCalendar(); | ||
+ | String am_pm; | ||
+ | int hour = calendar.get(Calendar.HOUR); | ||
+ | int minute = calendar.get(Calendar.MINUTE); | ||
+ | int second = calendar.get(Calendar.SECOND); | ||
+ | if(calendar.get(Calendar.AM_PM) == 0) | ||
+ | am_pm = "AM"; | ||
+ | else | ||
+ | am_pm = "PM"; | ||
+ | String CT = hour+":"+ minute +":"+ second +" "+ am_pm; | ||
+ | out.println("Current Time is: " + CT + "\n"); | ||
+ | %> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | Per a més informació [http://www.tutorialspoint.com/jsp/jsp_server_response.htm tutorial jsp] | ||
+ | === Objecte Out === | ||
+ | És un objecte de la classe JspWriter, és el que ens permet accedir a la sortida del navegador des dels scriplet. | ||
+ | Els següents són els mètodes importants que volem utilitzar per escriure Char boolean , int , double , objecte , cordes , etc: | ||
+ | |||
+ | {|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"|Método | ||
+ | ! align="left" width="150 px" style="background:Lavender; color:Black"|Descripción | ||
+ | |- | ||
+ | | out.print(dataType dt) ||mprimir una dada. | ||
+ | |- | ||
+ | | out.println(dataType dt) ||Imprimir una dada i acaba amb caràcter de nova línia. | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | == Objecte Session === | ||
+ | És un objecte de la classe HttpSession. Ens permet accedir a la sessió associada a la petició. A través d'aquest objecte podem, entre altres coses, guardar objectes que seran accessibles des de qualsevol JSP de la sessió o invalidar-la. | ||
+ | Per guardar i recuperar informació usarem: | ||
+ | <source lang="java"> | ||
+ | Object session.getAttribute("clave"); | ||
+ | void session.setAttribute("clave", Object objeto); | ||
+ | </source> | ||
+ | |||
+ | I per invalidar la sessió: | ||
+ | <source lang="java"> | ||
+ | void session.invalidate(); | ||
+ | </source> | ||
+ | |||
+ | Exemple: | ||
+ | <source lang="java"> | ||
+ | <%@ page session="true" %> | ||
+ | <% | ||
+ | java.util.ArrayList accesos= (java.util.ArrayList)session.getAttribute("accesos"); | ||
+ | if (accesos==null) | ||
+ | accesos=new java.util.ArrayList(); | ||
+ | accesos.add(new java.util.Date().toString()); | ||
+ | session.setAttribute("accesos", accesos); | ||
+ | if (request.getParameter("invalidaSesion")!=null) | ||
+ | session.invalidate(); | ||
+ | %> | ||
+ | <html> | ||
+ | <body> | ||
+ | <form> | ||
+ | <input type="submit" name="invalidaSesion" value="Invalidar sesión"/> | ||
+ | <input type="submit" value="Recargar página"/> | ||
+ | </form> | ||
+ | <br/> | ||
+ | Usted accedió a esta página en los siguientes momentos: <br> | ||
+ | <% | ||
+ | for (int i=0;i<accesos.size();i++) | ||
+ | { | ||
+ | %> | ||
+ | <%= accesos.get(i) %> | ||
+ | <br> | ||
+ | <% | ||
+ | } | ||
+ | %> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | Per a més informació [http://www.tutorialspoint.com/jsp/jsp_session_tracking.htm tutorial jsp] | ||
+ | |||
+ | == Objecte Application === | ||
+ | És un objecte de la classe ServletContext. Aquest objecte és comú per a tota l'aplicació web i, entre altres coses, ens permet emmagatzemar informació que serà accessible des de totes les pàgines de l'aplicació web, independentment de la sessió. | ||
+ | Per guardar i recuperar valors: | ||
+ | <source lang="java"> | ||
+ | Object application.getAttribute("clave"); | ||
+ | void application.setAttribute("clave", Object objeto); | ||
+ | </source> | ||
+ | |||
+ | Exemple: | ||
+ | <source lang="java"> | ||
+ | <%@ page session="true" %> | ||
+ | <% | ||
+ | java.util.Hashtable direcciones = (java.util.Hashtable)application.getAttribute("direcciones"); | ||
+ | if (direcciones==null) | ||
+ | direcciones=new java.util.Hashtable(); | ||
+ | direcciones.put(request.getRemoteAddr(),""); | ||
+ | application.setAttribute("direcciones", direcciones); | ||
+ | %> | ||
+ | <html> | ||
+ | <body> | ||
+ | El servidor fue accedido desde las siguientes direcciones IP: | ||
+ | <% | ||
+ | java.util.Enumeration e= direcciones.keys(); | ||
+ | while (e.hasMoreElements()) | ||
+ | { | ||
+ | %> | ||
+ | <%= e.nextElement() %> | ||
+ | <br> | ||
+ | <% | ||
+ | } | ||
+ | %> | ||
+ | <br> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | Per a més informació [http://www.tutorialspoint.com/jsp/jsp_hits_counter.htm tutorial jsp] | ||
+ | |||
+ | == Objecte Config === | ||
+ | És un objecte de la classe ServletConfig. Permet accedir a paràmetres d'inicialització del servlet i al seu context. | ||
+ | Aquest objecte permet l'accés de JSP programador per als paràmetres d'inicialització de servlet o JSP motor com ara la camins o ubicacions d'arxius , etc. | ||
+ | El següent mètode de configuració és l'únic que pot utilitzar sempre , i el seu ús és trivial : | ||
+ | <source lang="java"> | ||
+ | config.getServletName(); | ||
+ | </source> | ||
+ | Retorna el nom del servlet, que és la cadena continguda en el element <servlet-name> es defineix en el WEB-INF\web.xml | ||
+ | |||
+ | == Objecte PageContext == | ||
+ | |||
+ | És un objecte de la classe PageContext. Entre altres coses, ens permet emmagatzemar informació localment a la pàgina. | ||
+ | Per guardar i recuperar valors: | ||
+ | <source lang="java"> | ||
+ | Object pageContext.getAttribute("clave"); | ||
+ | void pageContext.setAttribute("clave", Object objeto); | ||
+ | </source> | ||
+ | També podem usar PageContext per emmagatzemar i recuperar informació en sessió i en aplicació: | ||
+ | Emmagatzemar en context de pàgina: | ||
+ | <source lang="java"> | ||
+ | PageContext.setAttribute("clave", obj, PageContext.PAGE_SCOPE); | ||
+ | PageContext.setAttribute("clave", obj); | ||
+ | </source> | ||
+ | Emmagatzemar en context de sessió: | ||
+ | <source lang="java"> | ||
+ | PageContext.setAttribute("clave",obj, PageContext.SESSION_SCOPE); | ||
+ | session.setAttribute("clave", objeto); | ||
+ | </source> | ||
+ | Emmagatzemar en context de aplicació: | ||
+ | <source lang="java"> | ||
+ | PageContext.setAttribute("clave",obj,PageContext.APPLICATION_SCOPE); | ||
+ | application.setAttribute("clave",objeto); | ||
+ | </source> | ||
+ | |||
+ | Un dels mètodes importants és '''removeAttribute''', que accepta un o dos arguments. Per exemple, pageContext.removeAttribute("attrName") elimina l'atribut de tots els àmbits, mentre que el següent codi només l'elimina de l'àmbit pàgina. | ||
+ | <source lang="java"> | ||
+ | pageContext.removeAttribute("attrName", PAGE_SCOPE); | ||
+ | </source> | ||
+ | |||
+ | == Objecte Page == | ||
+ | Aquest objecte és una referència real a la instància de la pàgina. Es pot considerar com un objecte que representa el pàgina JSP sencera. L'objecte de pàgina és realment un sinònim directe per el objecte '''this'''. |
Revisió del 23:01, 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]
Objectes implícits
En JSP disposem d'alguns objectes implícits, que ens permetran accedir a diferent informació i realitzar diverses accions. En JSP tenim els següents objectes implícits: request, response, out, session, application, config, pageContext, i page.
JSP suporta nou variables definides de forma automàtica, que també s'anomenen objectes implícits. Aquestes variables són:
Objecte implícit | Propòsit |
---|---|
request | Aquest és l'objecte HttpServletRequest associat amb la petició . |
response | Aquest és l'objecte HttpServletResponse associat amb la resposta al client . |
out | Aquest és l'objecte PrintWriter usat per a enviar la sortida al client . |
session | Aquest és l'objecte HttpSession associat amb la petició . |
application | Aquest és l'objecte ServletContext associat amb el context d'aplicació |
config | This is the ServletConfig object associated with the page. |
pageContext | Això encapsula ús de les característiques específiques del servidor com el més alt JspWriters rendiment . |
page | Això és simplement un sinònim d'aquesta , i s'utilitza per cridar als mètodes definits pel translated servet class |
Exception | L'objecte d'excepció permet que les dades d'excepció per a tenir accés als designats JSP . |
Objecte Request
És un objetode la classe HttpServletRequest, el seu ús principal és l'accés als paràmetres de la petició. Destacarem les següents funcions:
- String getParameter(String name)
- Retorna el valor d'un paràmetre
- Enumeration getParameterNames()
- Retorna una enumeració amb els noms de tots els paràmetres de la petició.
- String[] getParameterValues(String name)
- Els paràmetres poden tenir valor múltiple, amb aquesta funció recuperem un array amb tots els valors per a un nom donat.
- String getRemoteAddr()
- Retorna la IP del host des del qual es realitza la petició
Exemple:
<html>
<body>
<form>
<input type="text" name="parametro"/>
<input type="submit"/>
</form>
<br>
<br>
Su IP: <%=request.getRemoteAddr()%>
<br>
Su nombre de host: <%= request.getRemoteHost() %>
<br>
Valor del parámetro:
<%= request.getParameter("parametro") %>
</body>
</html>
Objecte Response
És un objecte de la classe HttpServletResponse, que vas agafar al servlet en la seva generació de la resposta per al client, conté funcions per a maneig de capçaleres, codis d'estat, cookies i transferència de control.
<%@ page import="java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
Per a més informació tutorial jsp
Objecte Out
És un objecte de la classe JspWriter, és el que ens permet accedir a la sortida del navegador des dels scriplet. Els següents són els mètodes importants que volem utilitzar per escriure Char boolean , int , double , objecte , cordes , etc:
Método | Descripción |
---|---|
out.print(dataType dt) | mprimir una dada. |
out.println(dataType dt) | Imprimir una dada i acaba amb caràcter de nova línia. |
Objecte Session =
És un objecte de la classe HttpSession. Ens permet accedir a la sessió associada a la petició. A través d'aquest objecte podem, entre altres coses, guardar objectes que seran accessibles des de qualsevol JSP de la sessió o invalidar-la. Per guardar i recuperar informació usarem:
Object session.getAttribute("clave");
void session.setAttribute("clave", Object objeto);
I per invalidar la sessió:
void session.invalidate();
Exemple:
<%@ page session="true" %>
<%
java.util.ArrayList accesos= (java.util.ArrayList)session.getAttribute("accesos");
if (accesos==null)
accesos=new java.util.ArrayList();
accesos.add(new java.util.Date().toString());
session.setAttribute("accesos", accesos);
if (request.getParameter("invalidaSesion")!=null)
session.invalidate();
%>
<html>
<body>
<form>
<input type="submit" name="invalidaSesion" value="Invalidar sesión"/>
<input type="submit" value="Recargar página"/>
</form>
<br/>
Usted accedió a esta página en los siguientes momentos: <br>
<%
for (int i=0;i<accesos.size();i++)
{
%>
<%= accesos.get(i) %>
<br>
<%
}
%>
</body>
</html>
Per a més informació tutorial jsp
Objecte Application =
És un objecte de la classe ServletContext. Aquest objecte és comú per a tota l'aplicació web i, entre altres coses, ens permet emmagatzemar informació que serà accessible des de totes les pàgines de l'aplicació web, independentment de la sessió. Per guardar i recuperar valors:
Object application.getAttribute("clave");
void application.setAttribute("clave", Object objeto);
Exemple:
<%@ page session="true" %>
<%
java.util.Hashtable direcciones = (java.util.Hashtable)application.getAttribute("direcciones");
if (direcciones==null)
direcciones=new java.util.Hashtable();
direcciones.put(request.getRemoteAddr(),"");
application.setAttribute("direcciones", direcciones);
%>
<html>
<body>
El servidor fue accedido desde las siguientes direcciones IP:
<%
java.util.Enumeration e= direcciones.keys();
while (e.hasMoreElements())
{
%>
<%= e.nextElement() %>
<br>
<%
}
%>
<br>
</body>
</html>
Per a més informació tutorial jsp
Objecte Config =
És un objecte de la classe ServletConfig. Permet accedir a paràmetres d'inicialització del servlet i al seu context. Aquest objecte permet l'accés de JSP programador per als paràmetres d'inicialització de servlet o JSP motor com ara la camins o ubicacions d'arxius , etc. El següent mètode de configuració és l'únic que pot utilitzar sempre , i el seu ús és trivial :
config.getServletName();
Retorna el nom del servlet, que és la cadena continguda en el element <servlet-name> es defineix en el WEB-INF\web.xml
Objecte PageContext
És un objecte de la classe PageContext. Entre altres coses, ens permet emmagatzemar informació localment a la pàgina. Per guardar i recuperar valors:
Object pageContext.getAttribute("clave");
void pageContext.setAttribute("clave", Object objeto);
També podem usar PageContext per emmagatzemar i recuperar informació en sessió i en aplicació: Emmagatzemar en context de pàgina:
PageContext.setAttribute("clave", obj, PageContext.PAGE_SCOPE);
PageContext.setAttribute("clave", obj);
Emmagatzemar en context de sessió:
PageContext.setAttribute("clave",obj, PageContext.SESSION_SCOPE);
session.setAttribute("clave", objeto);
Emmagatzemar en context de aplicació:
PageContext.setAttribute("clave",obj,PageContext.APPLICATION_SCOPE);
application.setAttribute("clave",objeto);
Un dels mètodes importants és removeAttribute, que accepta un o dos arguments. Per exemple, pageContext.removeAttribute("attrName") elimina l'atribut de tots els àmbits, mentre que el següent codi només l'elimina de l'àmbit pàgina.
pageContext.removeAttribute("attrName", PAGE_SCOPE);
Objecte Page
Aquest objecte és una referència real a la instància de la pàgina. Es pot considerar com un objecte que representa el pàgina JSP sencera. L'objecte de pàgina és realment un sinònim directe per el objecte this.