Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [servlet]L'esecuzione si blocca ma in realtà ha funzionato tutto

    Ho questa servlet
    codice:
    package Servlet;
    
    import java.io.*;
    import java.sql.*;
    import java.net.*;
    import java.text.*; 
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class Gestione extends HttpServlet {
        MyConnection m = new MyConnection();
       
        protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
            response.setContentType("text/xml;charset=UTF-8");
            
            PrintWriter out = response.getWriter();
                    
            String user = request.getSession().getAttribute("s_usr").toString();
            int id_usr = Integer.parseInt(request.getSession().getAttribute("s_idusr").toString());
            
            try {
                String act = request.getParameter("act");
    
           if(act.equals("nonso")) {
                    int idq = Integer.parseInt(request.getParameter("idq"));
                    String idd = request.getParameter("idd");
                    int idc = Integer.parseInt(request.getParameter("idc"));
                    int prog = Integer.parseInt(request.getParameter("prog"));
                    
                    normalizzaQuestionario(id_usr, idq, prog, idc);
                    
                    out.println("<msg>finito</msg>");
                } 
            } catch(){....}
    all'internodi questa servlet c'è anche la dichiarazione di normalizzaQuestionario():
    codice:
    protected void normalizzaQuestionario(int id_usr, int id_qst, int prog, int id_crs) {
            try {
                // Leggo quante domande andranno aggiunte da web.xml
                int quanti = Integer.parseInt(getParam("quanti"));
                int esi;
    
                String sql0 = "SELECT id_dom, data FROM questionari WHERE id_qst="+id_qst+" AND prog >="+prog;
                ResultSet rs = m.eseguiQuery(sql0);
    
                // creo la stringa SQL che andrà ad incrementare il prog delle domande di un determinato 'quanto'
                int i = 0;
                String sql[] = new String[m.rowCount(rs)];
                while (rs.next()) {
                    sql[i] = "UPDATE questionari SET prog = (prog + " + quanti + ") WHERE id_qst=" + id_qst + " AND id_dom=" + rs.getInt("id_dom") + ";";
                    i++;
                }
                
                for (int k = 0; k <= i; k++) {
                    esi = m.eseguiUpdate(sql[k]);
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    Normalizza questionario mi esegue delle operazioni sul Database, l'ultimo whille e l'ultimo for non sono riuscito a metterli insieme altrimenti andava in errore e non eseguiva gli update.

    così comè il programma funziona correttamente, ma nel processRequest, dopo la chiamata a normalizzaQuestionario, vedi linea rossa, si blocca, infatti non stampa mai finito, anche se ha correttamente eseguito le operazioni SQL. Ovviamente ho provato a mettere la stringa finito, prima della chiamata e tutto funziona correttamente, e il DB è cmq aggiornato. Idee sul problema????

  2. #2
    Aggiungi out.flush() dopo out.print...
    Saluti,
    Pasquale Congiustì.

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.