PDA

View Full Version : [JAVA-JSP]ancora sull'oggetto pageContext


prazision
12-06-2005, 13:55
l'oggetto implicito pageContext in una pagina jsp viene definito come segue:

"Un'istanza di PageContext consente di accedere a tutti gli scope JSP...inoltre,essa mette a
disposizione un livello sopra i dettagli d'implementazione del
container, in modo da permettere al container stesso di generare
classi d'implementazione JSP portabili"

in una precedente discussione (http://www.hwupgrade.it/forum/showthread.php?t=955114) sono giunto (grazie all'aiuto di kingv) alla conclusione che la classe PageContext è un'interfaccia(o forse una classe astratta) in modo che le jsp possono limitarsi a utlizzare i suoi metodi senza dover sapere di preciso come questa interfaccia è implementata nei singoli web container

guardando nel codice di una servlet generata da una jsp vedo:

session = pageContext.getSession();(metodo per ottenere l'oggetto session)

quello che non capisco ora è: nei singoli web container cosa succede nel momento di esecuzione di un simile script???

nel senso, se pageContext è una classe astratta(o un'interfaccia) bisognerà chiamare la classe che la implementa per il singolo web container e a quel punto chiamare il metodo getSession di tale classe; ma come fa il web container a sapere quale è la classe che implementa pageContext se nel codice legge solo qualcosa come session = pageContext.getSession();?????

so che è un problema scemo ma con le consocenze di Java che ho in questo momento non riesco a spiegarmelo

grazie (siate semplici che ho già un labirinto nella testa)

it_developer
14-06-2005, 12:42
Per vedere come funziona un web container è consigliabile dare un occhiata al sorgenete...

Perdi Tomcat come base di partenza:
http://jakarta.apache.org/tomcat/index.html

Scaricati i sorgenti (circa 6Mb) e cerca quella classe...

abstract public class PageContext extends JspContext

La classe non è un interfaccia ma è astratta....e come vedi estende JspContext...girovagando tra i sorgenti vedi i vari collegamenti trovando la classe che c'è dietro a pageContext nello specifico container!

Ciao,
it_developer

prazision
14-06-2005, 15:32
ok appena posso guardo, grazie mille

rimane per ora un mistero come faccia il web container a leggere qualcosa del tipo

session = pageContext.getSession();

e a sapere su quale oggetto chiamare il metodo getSession

it_developer
15-06-2005, 12:21
session = pageContext.getSession();

Come tu vedi...invoca getSession() proprio sull'oggetto pageContext che in qualche modo viene fornito dal jsp container...

Ho controllato su alcuni libri che parlano di jsp e simili...molti non si soffermano molto sull'oggetto pageContext...perchè in molti casi gli altri oggetti impliciti adempiono tutti i compiti necessari...

Credo, d'altra parte, che pageContext sia molto utile quando hai la necessità di scrivere del codice che utilizzerà gli oggetti impliciti del container e rimarrà molto più pulito e comodo passare come parametro tutto pageContext che i singoli oggetti! ;)

Ciao,
it_dev

prazision
15-06-2005, 14:29
grazie