Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16

    Passaggio parametri tramite url

    Salve ragazzi, ho creato questa discussione perché vorrei un chiarimento sul passaggio di parametri tramite url.
    Vi spiego: Ho una pagina con diverse immagini, ad ogni immagine è assegnata una pagina che visualizzerà determinate cose. Però non voglio creare mille pagine, ho pensato di cambiare contenuto della pagina in base all'id che passo. Ad esempio:
    codice:
    <a href="pagina.jsp?id=77"><img src="immagine.jpg"></a>
    <a href="pagina.jsp?id=78"><img src="immagine2.jpg"></a>
    <a href="pagina.jsp?id=79"><img src="immagine3.jpg"></a>
    ...
    Quindi la pagina sarà sempre la stessa, ma il contenuto cambierà in base all'id che passo nell'url.
    E io volevo sapere proprio questo, come faccio a cambiare il contenuto della pagina in base all'id che passo nell'url?
    E soprattutto, come faccio ad accedere all'id che ho passato nell'url? Ad esempio se voglio visualizzare quel valore in una parte della pagina come testo, è possibile farlo? Non so se mi sono spiegato

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Per recuperare il parametro devi usare l'oggetto "request" (implicito all'interno della JSP). Per cambiare il contenuto, dovrai fare le dovute considerazioni in base al valore del parametro.

    codice:
    <html>
    <head><title>...</title></head>
    <body>
    <%
       String strId = request.getParameter("id");   // Ottengo il valore del parametro "id"
    
       // In base al suo valore, faccio le mie considerazioni
       if ( strId.equals("77") ) { %>
    
       <p>Hai indicato l'ID 77</p>
    
       <%
       }
    %>
    </body>

    Tieni presente che l'uso di scriptlet in questo modo dentro ad una JSP è deprecato ormai da diversi anni (almeno un decennio). Generalmente non si richiama direttamente la JSP nel link, ma si richiama una risorsa (una servlet) che effettua tutto il lavoro dietro le quinte (recupera il parametro, fa le sue considerazioni, fa elaborazioni): sarà la servlet che, in base alle sue elaborazioni, richiama la JSP (o diverse JSP a seconda dei casi) passandole tutti i dati già pronti. La JSP dovrebbe fare il minimo lavoro possibile: dovrebbe occuparsi solamente di visualizzare le informazioni che le vengono passate.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16
    Però, per farti un esempio, se vado qui http://forum.html.it/forum/forum.php e seleziono l'area 'Programmazione' il link diventa questo http://forum.html.it/forum/forumdisplay.php?forumid=31, e se invece di 'Programmazione' seleziono PHP http://forum.html.it/forum/forumdisplay.php?forumid=39. Cioè, la pagina è la stessa ma cambia solo il forumid. Io adesso uso struts 2, ho cercato su internet e per passare un valore devo semplicemente fare così:
    codice:
    <s:url action="urlTagAction.action" >
        <s:param name="id">123</s:param>
    </s:url>
    Quindi poi nella classe controllo l'id inserito, ma come faccio a cambiare il contenuto della pagina tramite la classe?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Sì, è esattamente quello che intendevo nel precedente post.
    Quello che accade anche in questo forum è che tramite l'id passato viene fatta un'interrogazione al db, vengono prelevati i dati della discussione, che vengono poi passate alla pagina. La pagina è sempre uguale, ciò che cambia è l'insieme delle informazioni da visualizare.

    In Java si può procedere, ad esempio, in questo modo:
    1) la url punta ad una servlet, passandole l'id.
    2) la servlet preleva dal db le informazioni relative a quell'id e le inserisce in un bean che rappresenta l'informazione
    3) questo bean viene inserito nella request come attributo
    4) la servlet richiama la jsp
    5) la jsp si occupa di creare l'html della pagina, visualizzando i dati del bean

    La pagina ha sempre la stessa forma (template), ciò che cambia, di volta in volta, è il dato contenuto nel bean (che arriva dal db, o da un file, o da altra risorsa).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16
    Ok mi è chiaro cosa devo fare, ma ho un altro problema (sempre relativo alla discussione).
    Quello che sto facendo è un sito di streaming (che non verrà mai pubblicato, è solo un progetto): nella home ho varie locandine delle serie tv e film, cliccando su una locandina si apre la pagina con l'elenco delle puntate se è una serie tv, e lo streaming se è semplicemente un film. Tutti questi dati devono essere in un database che poi preleverò in base all'id che viene passato nell'url. Adesso volevo sapere, nel database, come faccio ad associare TOT puntate ad una serie tv?
    Ad esempio:
    The Big Bang Theory (se non la conosci, è una serie tv), la prima stagione è composta da 17 episodi. Io volevo sapere come associare questi 17 episodi alla serie The Big Bang Theory. Nel database ho una tabella "Film", i campi sono "idFilm", "Titolo", "Trama".
    Ho pensato a creare una tabella per ogni serie tv/film, inserendo così ogni puntata all'interno della tabella come campo, però creare una tabella per ogni serie tv/film mi sembra una cosa un po' troppo lunga e noiosa. C'è un metodo più semplice? (Non so se mi spiego...)

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Questo non ha più a che fare con Java; è una questione di struttura del database.
    Per memorizzare un'informazione di quel tipo serve una seconda tabella (una sola, non una per ogni serie) che abbia una relazione di chiave esterna con la prima. Un veloce esempio potrebbe essere:

    idFilm, idEpisodio, NomePuntata

    La chiave primaria di questa tabella è la coppia (idFilm, idEpisodio).
    Se ci sono altre informazioni legate alla singola puntata possono essere aggiunte a questa tabella.

    Ma, ripeto, è una problematica che riguarda l'organizzazione della base di dati.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.