PDA

View Full Version : [JSP/SERVLET] Chiamata metodo servlet da jsp


Andlea
15-04-2006, 19:01
Ciao a tutti
Ho nel DB una tabella con delle voci, queste voci devono apparire in un menu, rappresentano le categorie di un catalogo
Visto che il catalogo è dinamico e che non volevo che venisse fatta una query per ogni visita alla pagina ho fatto una servlet che chiama un bean, ottiene le voci di catalogo e spara fuori la tabella impaginata. Fin qui tutto ok.
Il problema sorge nel momento in cui si vuole aggiungere una categoria.
Ho una pagina con un form per inserire la nuova categoria, la categoria viene inserita correttmaente nel db, ma per poter vedere la modifica devo aspettare che la servlet riparta... inaccettabile. Quindi mi chiedevo se e come fosse possibile poter chiamare un eventuale metodo update() della servlet da una pagina jsp. Il metodo ovviamente non posso renderlo static.
Qualche idea?

PGI-Bis
15-04-2006, 19:26
Il mio è un sospetto maccheronico e non una certezza scientifica ma se si potesse, vivaddio i forum potrebbero segnalare a chi scrive "hey, guarda che mentre stai scrivendo c'è qualcun'altro che ha risposto".

Le pagine web, anche quelle generate dinamicamente, sono degli stoccafissi: è il ricevente che deve evocare l'aggiornamento con una richiesta ad hoc.

Una volta servito il contenuto, il fornitore perde cognizione del richiedente, fino alla domanda successiva (spara e dimentica, direbbero i guerrafondai :D).

E' possibile che sia uno degli effetti della carenza di stato del protocollo http. In questo caso l'alternativa sarebbe integrare un componente che dello stato si ricordi eccome. Un'applet firmata, per restare nel mondo Java. La cosa. però, complicherebbe la distribuzione dell'applicazione: dovresti informare gli utente della necessità di accettare l'esecuzione del componente attivo, oltre a sganciare qualche dollaro a Verisign per un certificato digitale attendibile.

Spero comunque di essere contraddetto da qualcuno con maggiore esperienza dell'argomento.

Andlea
15-04-2006, 20:19
?

no guarda, una volta che viene inserito nel database una nuova voce tramite l'apposita pagina in jsp(che usa un bean) viene fatto un post alla pagina stessa che si aggiorna per forza, quello che mi serve è dire all'applicazione web che dopo aver inserito la nuova voce deve anche chiamare il metodo x della servlet.
per dire io eseguo questo codice:
nomeBean.nomeBeanInsert();

devo semplicemente avere sotto questa riga la chiamata al metodo di aggiornamento che è già bello e pronto.
Il problema sta nel fatto che la servlet esiste a tempo di compilazione, e la pagina jsp non ha una reference alla sua istanza, e quindi si aspetta che al più venga chiamato un metodo statico. E il metodo statico non posso usarlo dato che il metodo deve modificare lo stato dell'istanza, il che prevede appunto un'istanza.

Andlea
15-04-2006, 20:37
Vabbè ho risolto
Ho guardato nella servlet se nel post c'era il parametro che indica l'inserimento di una nuova categoria e ho settato un flag, che una volt aggiornata la pagina fa l'update dello stato della servlet