Abstract
Un altro semplice Tip pre-Ajax per attuare il retrieving dei dati Server-Side
Data di stesura: 08/02/2006
Data di pubblicazione:
08/02/2006
Ultima modifica: 04/04/2006
Nel primo Tip è stato mostrato luso di un IFRAME come buffer per il
caricamento del contenuto di una pagina. Utiliziamo ancora un IFRAME
per gestire il caricamento di un cookie e fare una piccola animazione:
una tabella 4x4 in cui una cella viene scelta in maniera casuale e
valorizzata, sempre in modo randomico!
LIFRAME svolge il ruolo di loader grazie al quale viene invocata la
servlet che produce un cookie il cui valore è un testo C.S.V. che
esprime la tripletta (coord. x, coord. y,valore cella).
Lato Client il valore dei cookie viene interpretato e grazie a DOM si
modificano i contenuti!
Testato con Netscape 8, FireFox 1.x, IE 5.5+, Opera 8
Buon Divertimento!
I nostri ingredienti
La pagina HTML.
<p><a href="#" onclick="start();return false;" >START</a></p>
<p><a href="#" onclick="stop();return false;" >STOP</a></p>
<p>
<table id="targetTable" border="1">
<tr><td>[00]</td><td>[00]</td><td>[00]</td><td>[00]</td></tr>
<tr><td>[00]</td><td>[00]</td><td>[00]</td><td>[00]</td></tr>
<tr><td>[00]</td><td>[00]</td><td>[00]</td><td>[00]</td></tr>
<tr><td>[00]</td><td>[00]</td><td>[00]</td><td>[00]</td></tr>
</table>
</p>
<iframe id="loader" src="" style="border:0px;visibility:hidden"
onload="checkCoordinate()" />
Gli scripts.
var x = 0;
var y = 0;
var id = -1;
function start(){ id = setInterval('newValues()',1000); }
function stop(){ clearInterval(id); }
function newValues(){ var loader = document.getElementById('loader');
loader.src ='';
loader.src =
'/cookiesservlet?ts='+(new Date()).getTime(); }
function checkCoordinate(){
var value = 0; var t = document.getElementById('targetTable');
t.rows[y].cells[x].style.backgroundColor='#FFF';
var cc = document.cookie.split(';');
for(var idx = 0; idx< cc.length; idx++){
var vv = cc[idx].split('=');
if( vv[0].indexOf('COORD') >= 0){
var coords = vv[1].split(',');
x = parseInt(coords[0]);
y = parseInt(coords[1]);
value = parseInt(coords[2]); } }
var t = document.getElementById('targetTable');
t.rows[y].cells[x].innerHTML = '['+value+']';
t.rows[y].cells[x].style.backgroundColor='#F00';
}
La servlet.
public class CookiesServlet
extends HttpServlet {
private static final Random rnd = new Random();
private static final String CONTENT_TYPE = "text/html";
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws
ServletException, IOException {
manageCookies(request, response);
makeResponse(response);
}
private void manageCookies(HttpServletRequest request,
HttpServletResponse response) {
int x = rnd.nextInt(4);
int y = rnd.nextInt(4);
int value = rnd.nextInt(100);
StringBuffer sb = new StringBuffer();
sb.append(x).append(",").append(y).append(",").append(value);
Cookie coord = new Cookie("COORD", sb.toString());
coord.setMaxAge(3);
response.addCookie(coord);
}
private void makeResponse(HttpServletResponse response) throws
IOException {
response.setContentType(CONTENT_TYPE);
response.getWriter().print("OK");
}
}
Informazioni sull'autore
Stefano Fago, classe 1973. Diplomato in ragioneria, ha conseguito il Diploma di Laurea in Informatica con un progetto legato alle interfacce grafiche soft-realtime in Java. Dopo esperienze in Alcatel ed Elea, ha svolto attività di consulenza come Software Developer e Trainer alla ObjectWay S.p.A. sede di Milano. Attualmente Software Designer presso la sezione Innovazione e Attività Progettuali di BPU Banca. Appassionato del linguaggio Java e di tutte le tecnolgie Object Oriented. Polistrumentista dilettante.
È possibile consultare l'elenco degli articoli scritti da Stefano Fago.
Altri articoli sul tema Tip / AJAX.