View Full Version : (Java) Domande varie su JSP e Servlet
Salve, avrei alcune domande su tali argomenti.
1) In molte guide JSP fanno un esempio in cui c'è una pagina JSp che prende in ingresso dati da un form. Tale pagina poi richiama una Servlet a cui passa i dati immessi. Ma io non capisco, una pagina JSP non diventa automanticamente una Servlet? Che bisogno c'è che la pagina JSP richiami un'altra Servlet?
2) Ho visto che in alcuni casi Vi è una implementazione di thread all'interno delle servlet. Ora, io so che la gestione della concorrenza tra servlet, a parte alcuni piccoli accorgimenti è a carico del Web Container, ad esempio Tomcat, e che ogni connessione a tale servlet è in pratica una specie di thread a se. Quindi, perchè implementare un ulteriore thread all'interno della Servlet? Grazie.
Per la uno, è certamente corretto dire che non c'è un'esigenza meccanica di divisione dei compiti. E' possibile tuttavia che l'autore abbia fatto una scelta strutturale. Non è insolito che un programma sia costruito come un insieme di parti ognuna responsabile di uno specifico gruppo di azioni. Probabilmente l'autore di quell'esempio ha inteso delegare ad un componente l'acquisizione dei dati ed ad un altro componente la sua manipolazione. Per farlo ha sfruttato la modularità che esiste nei linguaggi di programmazione ormai da tempo immemore.
Per la due è un problema di garanzie minime. Il server ha la responsabilità di gestire la fornitura del servizio rappresentato dalla servlet. Può usare un Thread solo per tutti, può usare un Thread per ogni connessione, può usare un pool di Thread e distribuire il carico tra di essi. Dal punto di vista della distribuzione del carico di lavoro tutto quello che il programmatore sa è che... non sa. La domanda che si fa è: posso delegare al Thread che fornisce il servizio un compito che lo terrà impegnato per un bel po? Sapendo che ogni connessione è gestita da un Thread ad hoc la risposta sarebbe sì. Ma poichè non si può contare su questo comportamento la soluzione da preferire è "garantista": non sovraccarico un Thread di cui non conosco le responsabilità ma ne creo e controllo uno ad hoc. Nascono problemi anche in questo caso ma sono problemi che derivano interamente da presupposti noti e controllabili dal programmatore della servlet.
1) In molte guide JSP fanno un esempio in cui c'è una pagina JSp che prende in ingresso dati da un form. Tale pagina poi richiama una Servlet a cui passa i dati immessi. Ma io non capisco, una pagina JSP non diventa automanticamente una Servlet? Che bisogno c'è che la pagina JSP richiami un'altra Servlet?
http://en.wikipedia.org/wiki/Model-view-controller#Java_Platform.2C_Enterprise_Edition_.28Java_EE.29
Per la uno, è certamente corretto dire che non c'è un'esigenza meccanica di divisione dei compiti. E' possibile tuttavia che l'autore abbia fatto una scelta strutturale. Non è insolito che un programma sia costruito come un insieme di parti ognuna responsabile di uno specifico gruppo di azioni. Probabilmente l'autore di quell'esempio ha inteso delegare ad un componente l'acquisizione dei dati ed ad un altro componente la sua manipolazione. Per farlo ha sfruttato la modularità che esiste nei linguaggi di programmazione ormai da tempo immemore.
Per la due è un problema di garanzie minime. Il server ha la responsabilità di gestire la fornitura del servizio rappresentato dalla servlet. Può usare un Thread solo per tutti, può usare un Thread per ogni connessione, può usare un pool di Thread e distribuire il carico tra di essi. Dal punto di vista della distribuzione del carico di lavoro tutto quello che il programmatore sa è che... non sa. La domanda che si fa è: posso delegare al Thread che fornisce il servizio un compito che lo terrà impegnato per un bel po? Sapendo che ogni connessione è gestita da un Thread ad hoc la risposta sarebbe sì. Ma poichè non si può contare su questo comportamento la soluzione da preferire è "garantista": non sovraccarico un Thread di cui non conosco le responsabilità ma ne creo e controllo uno ad hoc. Nascono problemi anche in questo caso ma sono problemi che derivano interamente da presupposti noti e controllabili dal programmatore della servlet.
Grazie della risposta, però avrei un'altra domanda. supponendo di aver creato un thread all'interno della servlet, tale thread lo controllo io. Ma quindi volendo posso creare più thread controllati da me dallo stesso thread creato dalla servlet? Si creerebbe un thread master della servlet e altri thread figli creati dal client. E' uno scenario possibile?
Se intendo correttamente il senso della domanda sì, è possibile. La precisazione è dovuta al fatto che in Java non c'è una relazione master-slave tra Thread. C'è invece una relazione parent-child tra ThreadGroup (ogni Thread appartiene ad un ThreadGroup). Occorre inoltre tenere conto del fatto che avere un riferimento ad un Thread Java non significa poterlo controllare: per farlo occorre che il Thread appartenga ad una più ampia struttura di controllo. Comunque è un sì: Java non cessa di essere un linguaggio concorrente quando vede due 'E' di fila :D.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.