Pagina 1 di 1

Programmazione servlet con Tomcat

Inviato: sabato 17 maggio 2014, 9:33
da Mifert
Ho questa servlet:

Codice: Seleziona tutto

import javax.servlet.http.*;
import javax.servlet.*;
import java.sql.*;
import java.io.*;



public class Index extends HttpServlet {
    public void doGet (HttpServletRequest req, HttpServletResponse res) throws IOException {
        Connection con;
        Statement st;
        ResultSet rs1, rs2, rs3;
        String queryAutor,queryReferencia,queryTitulo;
        PrintWriter out;
        
        try {
            Class.forName("com.mysql.jdbc.Driver"); 
        }
        catch(Exception e) {
            System.out.println("Error driver");
            System.exit(0);
        }
        
        
        try {
            con=DriverManager.getConnection("jdbc:mysql://localhost/mydb" , "root" ,"");
            st=con.createStatement();
        
            queryAutor= "SELECT apellido AS Autor FROM autores ORDER BY Autor";
            rs1= st.executeQuery(queryAutor);
            queryReferencia= "SELECT idLibro AS Referencia FROM libros ORDER BY idLibro ASC";
            rs2= st.executeQuery(queryReferencia);
            queryTitulo= "SELECT titulo FROM libros ORDER BY titulo";
            rs3= st.executeQuery(queryTitulo);
        
            out= res.getWriter();
            res.setContentType("text/html");
            
            //out.println("<HTML><BODY>HOOOOOLA</BODY></HTML>");
            
            out.println("<HTML><BODY>Listado libros ordenados por:<BR><form><select>");
            while(rs1.next()) {
                out.println("<option value= \"autor\">" +rs1.getString("Autor")+ "</option>");
            }
            while(rs2.next()) {
                out.println("<option value= \"referencia\">" +rs2.getString("Referencia")+ "</option>");
            }
            while(rs3.next()) {
                out.println("<option value= \"titulo\">" +rs3.getString("Titulo")+ "</option></select><BR><BR>");
            }
            out.println("<input type=\"submit\"></form>");
            
            rs1.close();
            rs2.close();
            rs3.close();
            out.close();
            st.close();
            con.close();
        }
        catch(Exception e) {
            System.out.println("Error");
            System.exit(0);}
    }
}
che però a quanto pare ha qualche problema di connessione al database (credo), dato che quando digito la URL localhost:8080/biblio/Index, non si connette a inoltre genera un errore che disconnette Tomcat

Re: Programmazione servlet con Tomcat

Inviato: domenica 18 maggio 2014, 1:57
da Zoff
Qual'è l'errore?

Re: Programmazione servlet con Tomcat

Inviato: domenica 18 maggio 2014, 11:31
da Mifert
Non so quale sia questo errore, so solo che fa stoppare tomcat

Re: Programmazione servlet con Tomcat

Inviato: martedì 20 maggio 2014, 8:30
da tomm
per vedere l'errore devi aggiungere e.printStackTrace() al costrutto try/catch così:

Codice: Seleziona tutto

catch(Exception e) {
            System.out.println("Error");
            e.printStackTrace();
            System.exit(0);
}
Inoltre ti sconsiglio di catchare così indiscriminatamente tutte le exception perché potresti catchare anche errori che non ti aspetti e, se il programma non funziona, non riesci a capire il perché (proprio come adesso). Meglio catchare solo l'eccezione che ti aspetti, ad es, se ti aspetti ClassNotFoundException:

Codice: Seleziona tutto

catch(ClassNotFoundException e)
Re-inoltre, che senso ha usare try/catch se poi usi System.exit? Ti consiglio si togliere System.exit e di rivedere la logica del programma.

Re: Programmazione servlet con Tomcat

Inviato: martedì 20 maggio 2014, 18:58
da Mifert
E dove dovrebbe comparire l'errore con e.printStackTrace() ?

Re: Programmazione servlet con Tomcat

Inviato: mercoledì 21 maggio 2014, 8:37
da tomm
l'errore lo puoi leggere nel log file. Nella cartella dove è installato il tomcat, vedi il file logs/catalina.out
Altrimenti, se hai installato il pacchetto tomcat6 con apt-get, il log lo trovi in /var/log/tomcat6/catalina.out