Ricerca dinamica con AJAX

di: Pasquale Congiustì     10 Marzo 2008

Nell'articolo delle scorse settimane abbiamo discusso su come sviluppare una cache per l'accesso alla base dati. Abbiamo visto come il suo utilizzo possa migliorare le performance del sistema con dei semplici accorgimenti. In questo articolo prenderemo spunto da quanto prodotto finora per aggiungere un elemento dinamico molto in voga nei siti web che utilizzano tecniche di rappresentazione AJAX.

Probabilmente, navigando per il web, spesso vi è capitato di compilare dei moduli di ricerca che, contestualmente alla digitazione dei caratteri, vi davano dei suggerimenti (sulle ricerche più frequenti, ad esempio, o su quelle recenti). Quello che svilupperemo noi è uno script che in fase di digitazione del testo del modulo di ricerca, vi darà dei suggerimenti su quei termini contenuti nella cache.

Modifiche Lato Server

La classe che gestisce le operazioni sul layer di persistenza, nell'articolo sulle cache, è la classe astratta Database, che viene poi implementata dal proxy (DatabaseProxy) e dalla classe concreta (DatabaseConcrete). La prima modifica che dovremo fare sarà estendere il funzionamento di questo modulo software con l'aggiunta di un metodo che restituisca le keyword di ricerca mantenute in cache.

Per non perdere di vista la struttura progettuale che abbiamo introdotto nello scorso articolo andremo a modificare direttamente la gerarchia presentata (anziché fare operazioni di estensione della gerarchia delle classi), aggiungendo il metodo showKeywords:

Listato 1. Carica una lista di keyword recenti

//Database.java

public abstract Collection<String> showKeywords(String key);
...

Come intuitivamente si può capire, il compito di questo metodo è quello di restituire una collezione di keyword. L'implementazione concreta è appannaggio della classe DatabaseProxy (quella dove risiede concretamente la struttura dati della cache):

Listato 2. Ricerca e restituisce i risultati

//DatabaseProxy.java

//Ricerchiamo tutte le keyword presenti nella cache, che iniziano con la keyword KEY

public Collection<String> showKeywords(String key) {
  Collection<String> toRet=new ArrayList();
  // Recupero tutte le chiavi di ricerca presenti in cache
  Set ks=cache.keySet();
  Iterator<String> it=ks.iterator();
  
  //Iteriamo il set di key, se c'e' match, lo aggiungiamo alla lista di ritorno
  while(it.hasNext()){
    String tmpKey=it.next();
    //lavoriamo su oggetti NON case sensitive
    if (tmpKey.toLowerCase().startsWith(key.toLowerCase()))
      toRet.add(tmpKey);
  }
  return toRet;
}

Utilizzando il metodo keySet() sulla struttura dati abbiamo tutte le chiavi di ricerca contenute in cache. A questo punto controlliamo se tutte queste chiavi di ricerca combaciano con la stringa key, la chiave di ricerca passata come riferimento.

Guide Java

Guida Apache Struts

Il primo e più utilizzato tra i framework MVC del mondo Java,...

Guida Java Spring

Scoprire il lightweight container più famoso del mondo Java....

Guida Java 6

Prendendo le mosse dalla guida Java, già presente su HTML.it,...

Altre guide

Newsletter @Programmazione

Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti