Newsgroup: it.comp.java
Titolo: Applicazione SEO / SEF con JSF - Controllo e gestione URLs

Salve a tutti e prima di tutto scusate l'ignoranza!
Vorrei creare una applicazione web usando JSF, la quale mostra le sue
pagine web in base all'URL nel senso che questi URLs sono totalmente
virtuali, io li passo mettiamo caso tutti sempre a pippo.jsp e
pippo.jsp tramite JSF, Hibernate e chi più ne ha ne metta mi mostra a
schermo quello che io ho richiesto e include ciò di cui ha bisogno URL
per URL...
Per fare un esempio semplice se io ho 
www.miodominio.com/fumetti/pippo
l'URL viene ricevuto dal mio diciamo gestore di URL che tramite
Database capisce che cosa gli sto chiedendo e in  index.jsp fosse
mettiamo l'unica pagina jsp di tutto il sito mi mostra una immagine di
Pippo con la sua storia etc etc...
Se invece io chiedo 
www.miodominio.com/comics/mickeymouse
 stessa
storia, l'URL viene ricevuto dal mio gestore di URL, database e via
dicendo e la index.jsp mi mostra una immagine di topolino con una
descrizione in inglese perché adesso sto nella sezione in inglese
riconosciuta dal fatto che l'indirizzo in qualche modo vi
appartiene...
Nel browser io devo visualizzare questo 
www.miodominio.com/comics/mickeymouse
e non 
www.miodominio.com/index.jsp
, deve esserci sempre l'indirizzo da
me richiesto qualsiasi cosa faccio, fosse anche i salti mortali con
AJAX tramite GWT per intendersi, il quale vorrei includere nella mia
applicazione per quanto riguarda le relative parti in AJAX che non
devono essere raggiungibili da un Google del caso.
Non solo... poniamo che io memorizzi su di un database una serie di
immagini tramite Hibernate.
Ne prelevo una dal database e la voglio mostrare a schermo sulla mia
pagina index.jsp, perché ho richiesto
www.miodominio.com/pippo/immagini/pippo_con_topolino
ebbene la mia pagina index.jsp mi mostra una pagina HTML dove
all'interno alla fine compare <img src="immagini/pippo/
pippo_con_topolino.jpg" />
L'indirizzo contenuto in SRC non esiste, deve essere virtuale e creato
sul momento perché il mio database oltre a fornirmi l'immagine mi dice
che il suo indirizzo virtuale per la pagina che mi è stata richiesta è
quello.
Stessa cosa se quell'indirizzo lo chiedo direttamente nel browser come
url del tipo 
www.miodominio.com/immagini/pippo/pippo_con_topolino.jpg
,
allora la index.jsp mi mostra solo l'immagine, come se io chiedessi un
file fisico sul server.
Spero di non essere stato troppo contorto, nel caso scusatemi!
Quello che vi chiedo dalla mia ignoranza è: esiste la possibilità di
fare tutto ciò e come?
Esistono eventualmente librerie, framework e via dicendo già
predisposti per creare delle funzioni del genere, del tipo che so io
gestore, motore gestore url etc?
Ho provato a fare delle ricerche ma per ora non ho trovato molto.
Ho trovato la libreria urlRewriter che emula il mod_rewrite di Apache,
ma a me serve relativamente penso, dato che comunque vorrei inoltrare
tutto verso una servlet, una pagina, qualcosa che mi gestisca l'URL lo
riconosca e poi dica... bene, ti do il contenuto che mi hai chiesto
includendo tutto il necessario... html, immagini, css e via dicendo.
Per il momento ho fatto solo una prova appunto usando questo
urlRewriter, un filter, e due paginette che fanno una mini
applicazione con JSF.
Spero che voi in quanto più esperti di me sappiate aiutarmi a trovare
la giusta soluzione, sempre che esista.
Grazie in anticipo quindi a chi mi risponderà, ciao!

 URL...
Si capisce poco piu' di nulla.
Sistema l'italiano, in primo luogo per farti comprendere in questo gruppo di discussione,
in secondo luogo anche perché ti servirà nella vita.
Sembra tu abbia bisogno di un URL-rewriter  e di un framework che supporti il bookmarking delle risorse web.
Per quanto riguarda le JSF, puoi ottenere tutto ciò piuttosto facilmente tramite Seam.

 Sembra tu abbia bisogno di un URL-rewriter  e di un framework che supporti il bookmarking delle risorse web.
Non ho da riscrivere l'URL, ho bisogno di qualcosa che lo intercetti e
mostri in base ad esso una struttura HTML costruita ad hoc in base ai
relativi dati presi dal database in base appunto a come è strutturato
l'URL.
Non so se esista qualcosa in proposito di già realizzato per questo
chiedo a voi che sicuramente siete più informati in proposito.
Faccio un esempio per un altro sito web che è per esempio realizzato
in PHP: in una variabile metto l'URL, lo suddivido / dopo / parola per
parola e da esso riconosco quale pagina vuole, quale sezione vuole, in
che lingua la vuole, quali parole sono contenute in quella pagina, in
che lingua sono, quali risorse contiene quella pagina, per esempio un
elenco di fotografie, una tabella di dati o qualsiasi altra cosa sia.
Il tutto viene fatto in modo molto semplice da una funzione che
dall'URL ricava lingua, pagina, parole e via dicendo, una serie di
dati che reperisce dal database e coniuga facendo includere alla
struttura madre, chiamala index.php con un suo header ed un suo
footer, un suo body, che rappresenta la pagina richiesta, del tipo
elenco_elementi.php, perché tu hai richiesto www.miodominio/goofy/images/goofy_images
Vorrei fare la stessa esatta cosa in Java con JSF e compagnia bella e
sto cercando il modo migliore per fare la cosa in modo, come dire, più
utile possibile e non barbaramente.
Se poi vi sono già strumenti atti a risolvere questo problema ben
venga, ma non li ho trovati per ora e quindi chiedo a chi penso ne
sappia di più.
Grazie ancora per la risposta.



con le jsp e di conseguenza le jsf puoi mappare una servelet in modo
che "appaia" come un indirizzo, anzi questi oggetti devono essere mappati
per essere raggiunti dal browser, e poi costruire la logica all'interno di
questa servelet, non so se ho capito cosa vuoi ma a cosa ti serve avere
sempre il solito url per pagine diverse?
Umberto

 
No hai bisogno del URL rewriting:
www.tuosito.it/lang/it/cat/3/item/4
Ad esempio questa, potrebbe essere "riscritta" come:
www.tuosito.it/index.jsp?lang=it&cat=3&item=4
Ovvero viene fatto il forward a questa seconda forma. Di questo se ne occupa un filtro.
Da questa seconda forma puoi leggere i parametri e interrogare il database come vuoi. 
Se usi JSF, ti ripeto che Seam é in grado di farlo ottimamente.
Dai un occhio alla documentazione: 
http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/events.html#d0e5013
Seam a dire il vero fa anche molto altro. 
Se non ti va di imparare qualcosa di Seam, e vuoi continuare a usare JSF puoi sempre provare
con RestFaces (altra libreria, ma piuttosto piccola), oppure usare un filtro per 
l'URL rewriting.

 Umberto
Si lo so, sempre che non abbia capito male quello che hai scritto, ma
io posso avere milioni o miliardi di URLs che cambiano continuamente,
anche centinaia in un minuto come dire... il tutto è rispecchiato
unicamente sul database.
Sistema riceve URL, va sul database a vedere che cosa viene chiesto,
prende dal database ciò che gli è necessario, richiede le JSP o genera
le parti HTML relative e ti da in risposta la pagina risultata da
tutto il processo, questa è l'idea.

 l'URL rewriting.
L'idea di base è quella, diciamo che il mio rewriting da URL a serie
di parametri deve essere comunque dinamico, più potente e gestibile
possibile, non scritta in una serie di regole dentro ad un file credo.
Do una occhiata a Seam, grazie a entrambi!

 in secondo luogo anche perché ti servirà nella vita.
Devo convenire che riesci ad essere sempre molto carino.
Complimenti per la semantica.
--
ac

 Grazie in anticipo quindi a chi mi risponderà, ciao!
Ciao
--
ac

 ac
Grazie molto per le risposte anche a te!

 E' possibile? Come si fa? Puoi scrivere un esempio di codice?
qui ci sono una serie di link che ho trovato
http://javahowto.blogspot.com/2008/04/sample-servlet-that-dynamically-creates.html
http://www.junlu.com/msg/59172.html
http://www.sitepoint.com/forums/showthread.php?t=500497
http://www.informit.com/articles/article.aspx?p=25286
http://today.java.net/pub/a/today/2004/04/22/images.html
La cosa curiosa e' che non c'e' neanche una pagina che sia jsp o 
qualcosa che gli assomigli. C'e' anche un concorrente "aspx", unbelievable
--
ac

 tutto il processo, questa è l'idea.
ok forse ho capito, ma le jsp e jsf ti dovrebbero bastare, non credo che tu
abbia bisogno di più
ti consiglio di studiare a fondo la tecnologia penso sia possibile
strutturare un'applicazione in quel modo, comunque all'aumentare di
complessità, intesa non in tabelle ma in relazioni e diverse viste dello
stesso dato, secondo me ti trovi a non riuscire più a gestire con efficenza
il software, se tu automatizzi la generazione delle viste rischi di
trovarti in difficoltà quando ti viene richiesto di fare qualcosa che la
tua organizzazione non prevede.
spero di aver capito e di averti dato spunto
Umberto

 db tramite Hibernate mi elettrizzo.
E fai male. E' perfettamente lecito dire "questo metodo scrive sul database",
o Hibernate scrive sul database, ovviamente è sottointeso che stiamo parlando
in senso lato.



Non è questione di essere carini o meno. 
E' questione di fargli notare il problema. 
Sapersi esprimere è fondamentale, altrimenti, povero, potrebbe
fare la tua fine.

 ac
Perfetto!
Era come immaginavo,cercavo proprio questo.
Ti ringrazio molto sei stato più bravo di me a fare ricerche! :)
Roberto