Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    205

    java - codice di una servlet java richieste http di tipo: GET

    Salve dovrei svolgere questo esercizio:
    Scrivere il codice di una Servlet Java che gestisce richieste HTTP del tipo: GET
    http://localhost:8080/MyShop?user= u & prod=p&op=act gestendo act (operazione
    richiesta dall’utente) nel seguente modo:
    • se act = “acquista” invia il controllo alla Servlet “Acquisti” che gestisce
    gli acquisti
    • se act =”visualizzaProdotto” include il risultato dell’invocazione della
    Servlet “Prodotto”, che mostra i dettagli del prodotto p.
    • altrimenti invia il controllo alla pagina “home.html”

    codice:
       
    public class MyShop extends HttpServlet {
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
        
            String act = request.getParameter("op"); //ottendo dalla richiesta il contenuto di op
            HttpSession session = request.getSession(true); //nuova sessione
            session.setAttribute("user",a);
    
           if (act.equals("acquista")) {
                         ServletContext sc;
              sc=getServletContext(); 
              RequestDispatcher rd;
              rd=sc.getRequestDispatcher("/servlet/Acquisti");
              rd.include(request, response);
           }
        if(act.equals("visualizzaProdotto")) {
    
    
            ServletContext sc;
               sc=getServletContext(); 
               RequestDispatcher rd;
               rd=sc.getRequestDispatcher("/servlet/Prodotto");
               rd.include(request, response);
        }
    
    
        else
             request.getRequestDispatcher("home.html").forward(request, response);
    
       }
    }
    Quanti errori faccio? e quali?
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: java - codice di una servlet java richieste http di tipo: GET

    Originariamente inviato da Uccio87
    Quanti errori faccio? e quali?
    Grazie
    Questo lo devi dire tu, mica puoi pretendere che gli utenti prendano il tuo codice, lo analizzino, lo compilino, lo eseguano e ti correggano anche gli errori.

    Compilalo e provalo e se ottieni degli errori, indicali.


    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
    Registrato dal
    Feb 2010
    Messaggi
    205

    Re: Re: java - codice di una servlet java richieste http di tipo: GET

    Originariamente inviato da LeleFT
    Questo lo devi dire tu, mica puoi pretendere che gli utenti prendano il tuo codice, lo analizzino, lo compilino, lo eseguano e ti correggano anche gli errori.

    Compilalo e provalo e se ottieni degli errori, indicali.


    Ciao.
    a me interessa sapere se quello che faccio concettualmente è giusto!?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Concettualmente mi pare di sì.
    Recuperi il parametro "op" e, in base al suo valore, richiami il dispatcher corrispondente.


    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
    Registrato dal
    Feb 2010
    Messaggi
    205
    per inviare il controllo ad un servlet devo fare:

    codice:
    sc.getRequestDispatcher("/servlet/Acquisti");
    oppure

    codice:
    sc.getNamedDispatcher("/servlet/Acquisti");

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    La prima (che, tra parentesi, puoi invocare anche direttamente sull'oggetto HttpServletRequest).

    La seconda serve ad invocare un dispatcher tramite il suo nome (nome che deve essere configurato all'interno del deployment descriptor o tramite la pagina di amministrazione del server)... tu hai solo l'indirizzo, non il nome del dispatcher.


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    205
    Originariamente inviato da LeleFT
    La prima (che, tra parentesi, puoi invocare anche direttamente sull'oggetto HttpServletRequest).

    La seconda serve ad invocare un dispatcher tramite il suo nome (nome che deve essere configurato all'interno del deployment descriptor o tramite la pagina di amministrazione del server)... tu hai solo l'indirizzo, non il nome del dispatcher.


    Ciao.
    Quindi devo fare:
    codice:
    sc.getNamedDispatcher("Acquisti");
    altra domanda:

    quando mi chiede: - se act = “acquista” INVIA il controllo alla Servlet “Acquisti” che gestisce
    gli acquisti è giusto fare così?

    codice:
           if (act.equals("acquista")) {
                         ServletContext sc;
              sc=getServletContext(); 
              RequestDispatcher rd;
              rd=sc.getRequestDispatcher("/servlet/Acquisti");
              rd.forward(request, response);
           }
    invece quando mi chiede: - se act =”visualizzaProdotto” INCLUDE il risultato dell’invocazione della Servlet “Prodotto”, che mostra i dettagli del prodotto p. e' giusto fare così?


    codice:
        if(act.equals("visualizzaProdotto")) {
    
    
            ServletContext sc;
               sc=getServletContext(); 
               RequestDispatcher rd;
               rd=sc.getRequestDispatcher("/servlet/Prodotto");
               rd.include(request, response);
        }
    cioè il mio dubbio è sull'uso del forward o del include!?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Uccio87
    Quindi devo fare:
    codice:
    sc.getNamedDispatcher("Acquisti");
    Se così hai configurato nel deployment descriptor, ok.

    altra domanda:

    quando mi chiede: - se act = “acquista” INVIA il controllo alla Servlet “Acquisti” che gestisce
    gli acquisti è giusto fare così?

    codice:
           if (act.equals("acquista")) {
                         ServletContext sc;
              sc=getServletContext(); 
              RequestDispatcher rd;
              rd=sc.getRequestDispatcher("/servlet/Acquisti");
              rd.forward(request, response);
           }
    invece quando mi chiede: - se act =”visualizzaProdotto” INCLUDE il risultato dell’invocazione della Servlet “Prodotto”, che mostra i dettagli del prodotto p. e' giusto fare così?


    codice:
        if(act.equals("visualizzaProdotto")) {
    
    
            ServletContext sc;
               sc=getServletContext(); 
               RequestDispatcher rd;
               rd=sc.getRequestDispatcher("/servlet/Prodotto");
               rd.include(request, response);
        }
    cioè il mio dubbio è sull'uso del forward o del include!?
    Sì, è corretto.
    Il metodo forward() invia request e response al prossimo dispatcher, mentre il metodo include(), come dice il nome, include all'elaborazione attuale, il risultato dell'elaborazione del prossimo dispatcher. Da tenere presente che, invocando "include()", il dispatcher chiamato non può cambiare lo stato della response, né aggiungere headers.

    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    205
    Grazie!

    se devo sviluppare:
    GET http://localhost:8080/Negozio?utente= u & item=it & action=act
    se act =”viewProduct” accede al database “catalogue”, recupera
    dalla tabella PRODUCTS(ProdID, ProductName, Description, Price) il
    nome e la descrizione del prodotto it e la visualizza su pagina web

    come faccio?

    codice:
            
     if(act.equals("viewProduct")) {
            String ur = "jdbc:mysql://localhost/catalogue";
            String us = "root";
            String p = "root";
    
                DriverManager.registerDriver(new com.mysql.jdbc.Driver());
                Connection connessione = DriverManager.getConnection(ur, us, p);
                Statement statement = connessione.createStatement();
                String SQL = "SELECT ProductName, Description FROM PRODUCTS WHERE ProductName = '" + this.it + "'";
                 ResultSet risultato = statement.executeQuery(SQL);
                 
                 while (risultato.next()) {
                   \\come faccio a visualizzare su pagina web??????
                }
    }
    E' giusto quello che sto facendo???
    come faccio a visualizzare su pagina web??????

    Grazie

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Sì, così a grandi linee direi che va bene.
    Per poter visualizzare i dati in una pagina WEB dovrai incapsulare ciò che viene restituito dal ResultSet all'interno di una struttura dati che possa essere facilmente manipolata da una JSP. Ad esempio, dovresti avere un bean che contiene tutti i dati del singolo record. Quindi, scorrendo il ResultSet, creare un'istanza di questo Bean per ciascun record e valorizzarlo con i dati di ciascun campo. Se vi fossero più record, ciascun bean andrebbe inserito in una lista (un ArrayList, ad esempio). Inserire questo bean (o l'arraylist di beans) nella request e, tramite il forward (o l'include), richiamare una JSP che sia in grado di visualizzarne i 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.