Ho creato una semplice servlet che va a recuperare da un database i dati dei calciatori di una squadra. La servlet è richiamata da un form che chiede i dati da visualizzare tramite una check list.
Unico criterio di selezione da immettere l'annata del ragazzo.
Non riesco a capire perchè funziona una volta sì e 10 no, mi sembra una cosa assurda, ma non ci salto fuori.
:master:
codice:
import ...
public class Calciatori extends HttpServlet
{
public void service
(HttpServletRequest req, HttpServletResponse res)
throws IOException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String gn=req.getParameter("giornonascita");
String mn=req.getParameter("mesenascita");
String an=req.getParameter("annonascita");
String ln=req.getParameter("luogonascita");
String pn="prov";
String ind=req.getParameter("indirizzo");
String tel=req.getParameter("tel1");
String tel2="tel2";
String tel3="tel3";
String annata=req.getParameter("annata");
/* prepare the db connection */
String dbUrl="jdbc:odbc:db_archiviocalciatori";
String user="";
String password="";
try
{
/* the following command load the jdbc driver */
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection(dbUrl,user,password);
Statement s=c.createStatement();
if (annata.equals("aaaa"))
{
out.println("<html>");
out.println("<body>");
out.println("
ELENCO CALCIATORI</p>");
annata="1980";
int y= Integer.parseInt(annata);
for (y=1980; y<=2010; y++)
{
annata=""+y;
String query="SELECT cognome, nome, "+gn+", "+mn+", "+an+", "+ln+", "+pn+", "+ind+", "+tel+", "+tel2+", "+tel3+" FROM calciatori WHERE annonascita="+annata+" ORDER BY cognome, nome, "+an;
ResultSet r=s.executeQuery(query);
while(r.next())
{
out.print("
");
out.print(r.getString("cognome")+"");
out.print(r.getString("nome")+"");
if (gn!=null){out.print(r.getString(gn)+"-");}
if (mn!=null){out.print(r.getString(mn)+"-");}
if (an!=null){out.print(r.getString(an)+"");}
if (ln!=null){out.print(r.getString(ln)+"("+r.getString(pn)+")");}
if (ind!=null){out.print(r.getString(ind)+"");}
if (tel!=null){out.print(r.getString(tel)+""+r.getString(tel2)+""+r.getString(tel3));}
out.print("</p>");
}
s.close();
}
}
else
{
out.println("<html>");
out.println("<body>");
out.println("
ELENCO CALCIATORI NATI NEL "+annata+"</p>");
String query="SELECT cognome, nome, "+gn+", "+mn+", "+an+", "+ln+", "+pn+", "+ind+", "+tel+", "+tel2+", "+tel3+" FROM calciatori WHERE annonascita="+annata+" ORDER BY cognome, nome, "+an;
ResultSet r=s.executeQuery(query);
while(r.next())
{
out.print("
");
out.print(r.getString("cognome")+"");
out.print(r.getString("nome")+"");
if (gn!=null){out.print(r.getString(gn)+"-");}
if (mn!=null){out.print(r.getString(mn)+"-");}
if (an!=null){out.print(r.getString(an)+"");}
if (ln!=null){out.print(r.getString(ln)+"("+r.getString(pn)+")");}
if (ind!=null){out.print(r.getString(ind)+"");}
if (tel!=null){out.print(r.getString(tel)+""+r.getString(tel2)+""+r.getString(tel3));}
out.print("</p>");
}
s.close();
}
}
catch (Exception e)
{
out.println("<html>");
out.println("<body>");
out.println("
- ! - ERRORE NELLA QUERY - ! -</p>");
out.println("
I dati inseriti nel campo annata non sono corretti.
Digitare un valore numerico di 4 cifre (ad esempio \"1990\") oppure lasciare \"aaaa\" per visualizzare tutti i calciatori tesserati a prescindere dall'anno di nascita.
</p>");
}
out.println("
<input type=\"button\" onclick=\"history.go(-1)\" value=\"INDIETRO\"></p>");
out.println("</body>");
out.println("</html>");
}
}
Se avete anche altri consigli per migliorare la servlet vi prego di farlo. Ciao a tutti
Ty7
Java 1.3.1_10
Tomcat 3.3