Newsgroup: it.comp.java
Titolo: [JSP] Percorso come parametro

Nel sito che stò scrivendo gli utenti hanno la possibilità di iscriversi e  
compilare dei campi per farsi conoscere (la classica scheda personale).
Questa pagina va a leggere (e solo a leggere) da un db i dati  
significativi e li mostra formattati in una pagina HTML.
L'idea era avere una pagina /nome_utente/about.jsp per ogni utente.
La cosa più semplice sarebbe creare fisicamente la cartella nome_utente  
sul mio server all'atto della registrazione di ogni utente e copiarci  
dentro about.jsp, uguale per tutti, che reperisce nome_utente dal percorso  
con cui viene chiamata per poi usarlo come chiave per reperire i dati nel  
db.
La cosa però non la vedo molto sagace perché replicherei MILLE volte lo  
stesso file in giro per il server.
D'altra parte vorrei mantenere l'indirizzo invariato.
C'è qualche direttiva da dare a tomcat perché veda /nome_utente/about.jsp  
come /about.jsp?user=nome_utente ?
Sono sicuro che alcune cgi usavano un trucco del genere, quindi non  
dovrebbe essere impossibile, ma non saprei neanche cosa cercare per poter  
trovare informazioni a riguardo
-- 
Manny Calavera
Mail To: anforagimailpuntocom²
Uccidete i filosofi, tenetevi riso e bacchette per voi


... onestamente non credo che ti serva avere un path come /nome_utente/
about.jsp (a meno di indicazione esplicite in tal senso!), anche
perchè potresti (ad esempio) pensare di memorizzare le informazioni di
quell'utente direttamente nel db... avere una cartella per utente può
essere utile, ma detta così mi sembra solo un modo per complicarsi la
vita.
Credo che si possa fare una specie di redirect dal server (come dicevi
tu, ma non so come): piuttosto chiediti se ne vale la pena- Cosa ti
serve avere una cartella per utente, se poi avresti la STESSA jsp
replicata per ogni utente?
Piuttosto, ti basta una sola about.jsp con cui carichi (ad es.
mediante il bean utente che gli passi ogni volta) i dati che ti
servono. Spero di essermi spiegato...
Sa

 servono. Spero di essermi spiegato...
La pagina deve essere una specie di carta di identità, l'idea sarebbe  
poterla inserire come firma in forum, ng, ecc. per potersi fare conoscere,  
gli accessi a quella pagina arrivano da fuori (quindi niente post o bean),  
ma non posso accettare url con parametri (quindi niente get).
L'unica soluzine per poter passare informazione è stata quella di dare url  
significativi, se ce n'è un'altra non mi è venuta in mente.
ovviamente il tutto per non replicare la stessa jsp da tutte le parti.


 ovviamente il tutto per non replicare la stessa jsp da tutte le parti.
Per ora la creo sul serio una cartella per ogni utente, volevo poterlo  
evitare, il percorso dovrebbe essere virtuale e portare al ridirect senza  
dover veramente leggere qualcosa in nome_utente


 ovviamente il tutto per non replicare la stessa jsp da tutte le parti.
[...]
Cosa vuol dire che "arrivano da fuori", scusami?
Come intenderesti passare i dati che prendi dal db alla pagina...? Di
solito (quando non si usa get) si memorizza l'oggetto in sessione lato
codice, per poi ripescarlo tramite bean... non vedo altri modi per
farlo, a quanto ne so.
Tu se non ho capito male (è lunedi :) ...) intederesti mappare ogni
utente con un path univoco, insomma una cosa tipo directory LDAP... o
sbaglio?

 On 18 Giu, 12:18, "Manny Calavera" <leggi_n...@fir.ma.invalid> wrote:

Bè questa è la seconda jsp che scrivo quindi forse i miei metodi sono un  
po' grezzi e amatoriali.
Ripartiamo dall'inzio che magari si fa più chiarezza.
Ho un db con dei dati utente "non sensibili" (niente password o simili).
Nel registrarsi l'utente compila un form e dunque riempe una riga nel db.
Una pagina dinamica deve mostrare questi dati.
Questa pagina è completamente avulsa dal resto del sito e ci si può  
accedere sempre, da tutti, anche senza essersi identificati.
La pagina in questione usa come chiave per recuperare i dati sul db lo  
username desiderato.
I dati dal db alla pagina non sono un problema e non sono oggetto della  
discussione.
Passargli lo username come parametro in get non è possibile.
Considerando che la pagina è accessibile anche da siti esterni lo username  
non glielo si può passare come parametro in post.
L'unica soluzione che mi è venuta in mente, sicuramente la meno efficente  
di sto mondo, ma l'unica per ora in esame, è avere url "significativi".
Ovvero invece di usare /about.jsp?user=nome_utente utilizzo  
/nome_utente/about.jsp (evidentemente i due about hanno comportamenti  
leggermente differnti).
Mentre il primo prendetà il parametro semplicemente con una getParameter  
il secondo al suo interno processerà l'url con cui è stato invocato e  
ricaverà nome_utente per poi usarlo come chiave del db.
La seconda soluzione mi costringe ad avere n cartelle fisicamente presenti  
sul server con una copia del secondo about ciascuna.
La seconda soluzione funziona ma è pessima, avere un numero di cartella  
pari al numero degli utenti senza altro contenuto che un file replicato  
ovvunque non è certo un approccio di cui vantarsi.
La prima d'altra parte non è percorribile per vincoli imposti.
L'idea sarebbe poter utilizzare ugualmente /nome_utente/about.jsp ma non  
avere realmente la cartella nome_utente con all'interno about.jsp ma avere  
un redirect automatico a /about.jsp?user=nome_utente .
Questa trasformazione me la dovrebbe fare tomcat senza essere costretti ad  
avere una jsp che mi ridiriga, se no lo scopo di non avere mille cartelle  
e file replicati è perso.


 di sto mondo, ma l'unica per ora in esame, è avere url "significativi".
Ma guarda che se utilizzi i bean esternamente l'utente non vede nulla,
NON appare mica una cosa tipo about.jsp?user=sayhem , ma avviene
"trasparentemente".
Ripeto, secondo me ti stai complicando l'esistenza (come faccio 1000
volte anch'io in queste cose,del resto):
mi fai capire per quale motivo non dovresti utilizzare nè bean nè GET/
POST, dato che sono la cosa più ovvia pe ril tuo caso?Utilizzarli non
mi pare un grosso problema...

 mi pare un grosso problema...
Allora o io penso che i bean siano una cosa che in realtà non sono o qui  
c'è un fraintendimento.
Es. pratico:
prova a raggiungere questa pagina  
https://www.universibo.unibo.it/forum/profile.php?mode=viewprofile&u=607
 
senza poter scrivere nulla dopo profile.php
Perché non posso? vincoli imprescindibili del sistema.
Nel mio esempio la soluzione sarebbe  
https://www.universibo.unibo.it/forum/607/profile.php
 sempre che fosse  
possibile un ridirect come dico io.


 possibile un ridirect come dico io.
Ma forse il discorso che fai dipende dal tipo di connessione, che è
https e non semplice http... non ho mai utilizzato l'http protetto,per
cui puòessere che ti riferisci a qualcosa che non conosco. A me dopo
profile.php fa scrivere ed in effetti sembra che faccia un redirect
alla pagina richiesta,poi non saprei...

 [...]

Non centra nulla, la risposta corretta era: "Guardati i Filter di Tomcat".
Cosa che fa nascere altri problemi che però discuterò in una altra  
richiesta.
Grazie per l'impegno profuso.


 Uccidete i filosofi, tenetevi riso e bacchette per voi
Poco male, ho imparato che esistono i filter di Tomcat :)
Buona giornata!