Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Pagina attesa jsp

  1. #1

    Pagina attesa jsp

    Io ho un'applicazione web jsp model 2, ovvero, una pagina html che fa una post ad una servlet, quest'ultima servlet fa un'elaborazione e ritorna i risultati ad una pagina jsp che mostra i risultati dell'elaborazione. Siccome l'elaborazione della servlet è molto lunga io vorrei frapporre tra la pagina html e la servlet una pagina jsp che possa mostrare tramite browser il messaggio "attendere prego, l'elaborazione potrebbe richiedere alcuni minuti".
    Io ho provato a mandare tramite post ad una jsp intermedia che poi fa il forward alla servlet, ma la jsp non si visualizza... ecco la jsp
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Pagina di attesa</title>
    </head>
    <body>
    <h1>Attendere prego l'operazione potrebbe richiedere alcuni minuti</h1>
    <jsp:forward page="FormXml2"></jsp:forward>
    </body>
    </html>
    Il risultato è che i parametri del post vengono inviati correttamente alla servlet referenziata (FormXml2) e l'elaborazione avviene correttamente, però non si visualizza il messaggio html "Attendere prego l'operazione potrebbe richiedere alcuni minuti".
    Come posso fare a frappore questo messaggio prima dell'elaborazione della servlet?
    Cosa devo modificare nella jsp intermedia?
    Grazie per l'aiuto!!!

  2. #2
    Ciao,
    non sono sicuro di aver capito.
    Penso che la pagina intermedia funzioni correttamente, non riesci a vederla perchè il forward è immediato.

    Io, sempre se ho capito, farei così:
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Pagina di attesa</title>
    </head>
    <body onload="setTimeout('this.location.href="FormXml2"' ,5000);">
    <h1>Attendere prego l'operazione potrebbe richiedere alcuni minuti</h1>
    </body>
    </html>

    Con la setTimeout() decidi che dopo tot millisec(5000 = 5'') venga eseguita
    l'istruzione passata come primo parametro (this.location.href="FormXml2" cambi l'indirizzo nella barra degli indirizzi).

    Spero di essere stato utile.
    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Adesso la pagina di attesa mi compare, ma si blocca lì e non avanza(non si caricano le altre pagine). La servlet dell'elaborazione non si carica proprio. Si interrompe proprio l'esecuzione. Non ho proprio idea del perché, io ho ricopiato pari pari il codice scritto.
    Grazie per la risposta.

  4. #4
    Ciao,
    che errore ti segnala il browser?

    Se è dovuto ad un errore di script prova cosi:
    <body onload="setTimeout(\"this.location.href='FormXml2' \",5000);">

    Penso che forse ho sbagliato l'indirizzo:
    FormXml2 è giusto?
    E' un url mappato alla servlet sul web.xml?


    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  5. #5
    Non mi dà nessun errore il browser. La barra degli indirizzi segnala "operazione completata" e resta fissa la pagina jsp di attesa (quella dove c'è scritto attendere prego ecc...).
    Il nome della servlet è corretto perché con il jsp:forward funziona quel nome (la mappatura nel web.xml c'é).
    Quello che non avviene è il redirect verso il servlet.

  6. #6
    Guarda che è proprio strano:
    lo uso io sulla mia splashPage di presentazione.
    Tra l'altro funziona su tutti i browsers.

    puoi dare un'occhiata al codice che io uso qui:
    mirkoagrati.110mb.com

    Devi essere veloce perché dopo 4 sec gira la pagina.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  7. #7
    Ma in <body onload="setTimeout(\"this.location.href='FormXml2' \",5000);"> la funzione setTimeout è uno script javascript?
    No perché secondo me qua sta il problema. Non riconosce le funzioni javascript, viene ignorato dal browser la riga.
    La pagina che mi hai indicato ha il seguente stralcio di sorgente:
    <script type="text/JavaScript">
    /*
    window.onload = function(){
    this.location.href = 'index.php?page=home';
    }
    */
    window.onload = function(){
    setTimeout("this.location.href = 'index.php?page=home'",4000);
    }
    </script>
    Al suo interno è chiamato setTimeout: nel mio caso riferimenti Javascript non ce ne sono proprio.
    Queste cose le dico con beneficio di inventario perché non conosco Javascript.
    Grazie per l'attenzione.

  8. #8
    In ogni caso io sono alla ricerca di una soluzione che sia preferibilmente realizzata tramite jsp o servlet e non con javascript.
    Grazie per le risposte.

  9. #9
    Non servono pagine intermedie.
    Nella pagina che fa la post (cio&egrave; che chiama la servlet) basta che tu crei un div nascosto con il tuo bel messaggio di attendere prego... e, per esempio nell'onclick del pulsante che fa il submit, rendi visibile il div.
    L'Utente vedr&agrave; apparire il div con scritto "Attendere prego..." ed il suo browser lo lascer&agrave; visibile fintanto che il server non inizier&agrave; ad inviare i dati risultanti dall'elaborazione della Servlet e della jsp.

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  10. #10
    Ho capito più o meno il concetto ma non lo saprei fare da solo. Inserisco il codice della mia pagina, Zappa potresti modificarlo tu? Io non so come fare. Grazie.
    Questo è il file html:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <
    title>Da form a xml</title>
    </
    head>
    <
    body>
        <
    h1>Inserimento utente</h1>
        

    Per trasformare i dati utente in un file xml riempire i campi sottostanti

            Al termine clicca su invia        
        
    </p>
        <
    form action="FormXml2" method="post">
            <
    table cellpadding="5" border="0">
                <
    tr>
                    <
    td align="right">Nome:</td>
                    <
    td><input type="text" name="nome"/></td>
                </
    tr>
                <
    tr>
                    <
    td align="right">Cognome:</td>
                    <
    td><input type="text" name="cognome"/></td>
                </
    tr>
                <
    tr>
                    <
    td align="right">Età:</td>
                    <
    td><input type="text" name="eta"/></td>
                </
    tr>
                <
    tr>
                    <
    td align="right">Ruolo:</td>
                    <
    td><input type="text" name="ruolo"/></td>
                </
    tr>
                <
    tr>
                    <
    td align="right">Percorso:</td>
                    <
    td><input type="text" name="percorso" size="80"/></td>
                </
    tr>
                <
    tr>
                    <
    td></td>
                    <
    td>
    <
    input type="submit" value="Invia"/>
                </
    tr>
            </
    table>
        </
    form>
    </
    body>
    </
    html
    Questa è la servlet
    Codice PHP:
    package controller;

    import java.io.IOException;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    //import javax.servlet.http.HttpSession;

    import model.ConvertToXml;
    import model.Impiegato;

    /**
     * Servlet implementation class for Servlet: FormXml
     *
     */
     
    public class FormXml2 extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
       static final 
    long serialVersionUID 1L;
       
        
    /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#HttpServlet()
         */
        
    public FormXml2() {
            
    super();
        }       
        
        
    /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        
    protected void doGet(HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
            
    // TODO Auto-generated method stub
        
    }      
        
        
    /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        
    protected void doPost(HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
            
    String nome request.getParameter("nome");
            
    String cognome request.getParameter("cognome");
            
    String eta request.getParameter("eta");
            
    String ruolo request.getParameter("ruolo");
            
    String percorso request.getParameter("percorso");
            
    Impiegato i = new Impiegato(nomecognomeetaruolo);
            
    ConvertToXml convert = new ConvertToXml();
            
    convert.convertToXml(percorsoi);
            
    model.Risposta risposta = new model.Risposta();
            
    risposta.setRisp("ok");
            
    //String ok = new String("ok");
            
    request.setAttribute("risultato",risposta);
            
    //HttpSession session = request.getSession();
            //session.setAttribute("risultato", "ok");
            
    RequestDispatcher disp getServletContext().getRequestDispatcher("/risposta2.jsp");
            
    disp.forward(requestresponse);
        }                 

    Infine la jsp
    Codice PHP:
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        
    pageEncoding="ISO-8859-1"%>
    <!
    DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <
    title>Risultato creazione file XML</title>
    </
    head>
    <
    body>
        <%@ 
    page import="model.Risposta" %>
        <%
    Risposta risultato = (Rispostarequest.getAttribute("risultato");
        if (
    "ok".equals(risultato.getRisp())){ %>
        <
    h2>Inserimento avvenuto con successo tramite oggetto request</h2>
        <%} %>
        
    </
    body>
    </
    html
    Grazie mille!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.