// -*- mode: java -*-
// Servlet per la stampa di un database
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class List extends HttpServlet
{
private void header(ServletOutputStream out) throws IOException
{
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Elenco Indirizzi</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1 align=center>Elenco Indirizzi</H1>");
out.println("<p>");
out.println("<table border>");
out.println("<tr>");
out.println(" <th>NOME");
out.println(" <th>INDIRIZZO");
out.println(" <th>EMAIL");
out.println(" <th>TELEFONO");
out.println("<tr>");
}
private String n2s(String s) { return (s==null || s.startsWith("null") ) ? " " : s; }
private void row(ServletOutputStream out, ResultSet rs) throws IOException, SQLException
{
String s;
out.println("<form action=Input method=POST><tr>");
out.println("<td rowspan=3>"+(s=n2s(rs.getString("NOME"))));
out.println("<input type=hidden name=NOME value='"+s+"'>");
out.println("<td rowspan=3><i>"+(s=n2s(rs.getString("INDIRIZZO"))+"</i>"));
out.println("<input type=hidden name=INDIRIZZO value='"+s+"'>");
out.println("<td rowspan=3><tt>"+(s=n2s(rs.getString("EMAIL"))+"</tt>"));
out.println("<input type=hidden name=EMAIL value='"+s+"'>");
out.println("<td><tt>UFF.</tt> "+(s=n2s(rs.getString("UFFICIO"))));
out.println("<input type=hidden name=UFFICIO value='"+s+"'>");
out.println("<tr><td><tt>CASA</tt> "+n2s(rs.getString("CASA")));
out.println("<input type=hidden name=CASA value='"+s+"'>");
out.println("<tr><td><tt>CEL.</tt> "+n2s(rs.getString("CELLULARE")));
out.println("<input type=hidden name=CELLULARE value='"+s+"'>");
out.println("<tr><td colspan=4><font size=-2>"
+(s=n2s(rs.getString("NOTE"))+"</font>"));
out.println("<input type=hidden name=NOTE value='"+s+"'>");
out.println("</form>");
}
private void footer(ServletOutputStream out) throws IOException
{
out.println("</table>");
out.println("<hr>");
out.println("<center>");
out.println("<font size=-1> Written by <i>Michele Sciabarrà</i>");
out.println("<center>");
out.println("</BODY>");
out.println("</HTML>");
}
private void list(ServletOutputStream out) throws Exception
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:agenda", "", "");
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery("SELECT * FROM agenda");
header(out);
while(rs.next())
row(out, rs);
footer(out);
rs.close();
stat.close();
con.close();
} catch(Exception e) {
out.println(e.toString());
}
}
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
try {
list(out);
} catch(Exception e) {
out.println(e.toString());
}
}
}
Nel Listato 1 possiamo vedere un semplice esempio:
una servlet che stampa il risultato di una query ad un database
accessibile via JDBC. Il risultato è mostrato in Figura 2. La
classe List estende HttpServlet e ne ridefinisce il
metodo doGet. Viene impostato per la risposta il tipo, con
res.setContentType, dopodiché si stampa la risposta.
Per comodità si è suddivisa la generazione della pagina
di risposta in tre metodi, uno per stampare l'intestazione, uno per
stampare una riga estratta dal database e infine uno per stampare
la parte finale della pagina. L'esempio dovrebbe dare idea di
quanto sia semplice sviluppare applicazioni server side
utilizzando Java.
|