Newsgroup: it.comp.java
Titolo: servlet dispatcher

ciao
il problema è questo. Sto facendo un modulino-web, il cui scopo qui non 
   è significativo, dove devo usare delle servlet (e non jsp o altro). 
Avevo iniziato a configurare web.xml aggiungendo il nome della servlet e 
il mapping, come al solito, pensando che me ne bastassero un paio. 
Ovviamente le cose si sono complicate, e quindi devo aggiungere altre 
servlet, e altre configurazioni. Ho visto in alcuni framework che si 
definisce un solo "punto di accesso" (es. miawebap/servletsuperpiu ) che 
poi si occupa di smistare; mi pare di ricordare ci fosse anche un 
pattern sull'argomento, ma non ho trovato molto; avete suggerimenti su 
come implementare semplicemente una cosa simile?
NB non traffico con servlet "nude" da molto tempo, magari ci sono nuove 
possibilità che mi sono ignote
Grazie!
-- 
bye
DKano

Suggerisco la realizzazione classica:
1) un mapping per la servlet: "/servlettonapaura"
2) un elenco di "azioni", come sotto-mapping: "/servlettonapaura/
azione1", "/servlettonapaura/azione2", ecc.
3) (opzionale) file di configurazione, stile Struts o altri fw mvc a
basso livello, dove dici a cosa corrisponde ogni mapping.
Puoi scopiazzare (o addirittura usare) SpringMVC:
org.springframework.web.servlet.mvc.Controller
e soprattutto:
org.springframework.web.servlet.DispatcherServlet
--
www.megadix.it

 sono ignote
Hai già detto tutto te, non rimane che l'implementazione.
P.S
Spero non si tratti dell'ennesimo web framework fatto in casa...

cicap ha scritto:

Niente di così pretenzioso (o inutile? :) ), solo il desiderio di non 
star lì a configurare n servlet che dovevano esser 2 e invece sono, 
appunto n.
-- 
bye
DKano

 Puoi scopiazzare (o addirittura usare) SpringMVC:
Sono partito con la scopiazzatura, in effetti. Ho trovato anche un 
vecchio codice (dite che una mozione perché sulle pagine web ci sia 
sempre la data avrebbe successo? ;) ) che ad ogni doGet/Post instanzia 
un nuovo oggetto di una differente classe (tutte con la stessa interfaccia)
Ma mi sembra un tantino costoso in termini di oggetti che girano per la 
jvm; comunque ora mi guardo un po' di codice di spring, grazie!
-- 
bye
DKano

 
Da una prima analisi mi pare che spring usi all'incirca la stessa 
logica, salvo che
Non viene istanziato un oggetto ogni volta ma c'è una mappa che contiene 
quelli che spring chiama handler, e ne viene selezionato uno per ogni 
richiesta (con varie modalità, vedo che è possibile recuperarlo col nome 
anche dal context "application")
A questo punto una implementazione minimale potrebbe essere così fatta:
il doGet/post del dispatcher si gestisce una mappa di handler e in base 
all'azione ne restituisce uno e poi ne invoca un metodo ben definito. In 
spring ci sono ovviamente tonnellate di altre cose, dato che devono 
implementare tutto il framework, ma a me interessa solo questa piccola 
parte di "smistamento".
Vi sembra che il ragionamento fili?
-- 
bye
DKano


E' esattamente quello che succede :)
Attenzione solo ad una cosa: visto che avrai dei "singleton" per ogni
action, le implementazioni NON devono usare variabili membro ma
passarsi gli argomenti tramite parametri o mappe, altrimenti le
sessioni di diversi utenti cominceranno a mischiarsi... è un problema
che capita ai newbie di Struts e SpringMVC, per cui occhio ;)
Buon lavoro
--
www.megadix.it

megadix ha scritto:

Grazie, ci ho sbattuto il naso tempo fa, infatti è sempre il mio timore 
quasi a livello di paranoia, il mischione dei dati... a te funziona 
tutto, entrano in due e ognuno vede i dati altrui :(
Procedo... se non mi appioppano altre 10 attività (ma questa è un'altra 
storia ;) )
-- 
bye
DKano