Programmazione
Asp
Asp.NET
Java
Javascript
Php
Oracle

Svaghi
Ascolta Radio
Faccine
Libri
Links

Varie
Cerca nel sito...
Segnalazioni
Scrivimi


SERVLET accesso a DB (scarica l'allegato)

Questo è un esempio di utilizzo di servlet per leggere e scrivere in un data base. Per semplicità si utilizza una semplice tabella Access.
L'esempio è stato impostato utilizzando due classi, una classe DBManagerWR che implementa la connessione alla base dati ed una classe DBServletWR che implementa le operazioni sia di lettura sia di scrittura. Per il loro utilizzo è necessario che la compilazione dei files .java avvenga specificando il percorso delle classi del package javax: se si sta utilizzando Jakarta Tomcat 4.0 questo potrebbe essere un esempio di istruzione di compilazione


javac -classpath c:\Programmi\jakarta-tomcat-4.0\common\lib\servlet.jar *.java

Il comando produrrà due file .class: tali files andranno posizionati nella cartella

jakarta-tomcat-4.0\webappsxamples\WEB-INF\classes

mentre la pagina HTML che deve esser utilizzata per accedere alla base dati deve essere posta nella cartella

jakarta-tomcat-4.0\webappsxamples\servlets

Per poter utilizzare il codice viene fornito un semplice esempio in Access costituito da una tabella con tre campi testuali, NOME, COGNOME e EMAIL.
Inoltre occorre ricordarsi di definire una fonte dati ODBC per potre accedere a tale data base via codice: tale fonte dati deve chiamarsi DBServletWR.

codice classe DBManagerWR:
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class DBManagerWR
{
Statement st;
ServletOutputStream out;
Connection con;

public DBManagerWR()
{
try
{
System.out.println("Inzializzazione DBManager ....");
System.out.println("Caricamento driver ...");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Driver caricato ...");
System.out.println("Conessione al data base ...");
con = DriverManager.getConnection("jdbc:odbc:DBServletWR");
System.out.println("Connessione instaurata ...");
System.out.println("Creazione statement ...");
st = con.createStatement();
System.out.println("Statement creato ...");
System.out.println("DBManager pronto ...");
}
catch (SQLException sqle)
{
System.out.println("Attenzione errore sql "+sqle.getMessage()+"\n");
}
catch (ClassNotFoundException cnfe)
{
System.out.println("Attenzione classe non trovata "+cnfe.getMessage()+"\n");
}
catch (Exception e)
{
System.out.println("Attenzione eccezione "+e.getMessage()+"\n");
}
}

public void executeQuery(String SqlString) throws IOException
{
try
{
System.out.println(SqlString);
ResultSet rs = st.executeQuery(SqlString);
out.println("<HEAD>");
out.println(" <TITLE>");
out.println(" Pagina generata dalla servlet DBServlet - QUERY");
out.println(" </TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println(" Output della query");
out.println(" <BR>");
out.println(" <BR>");
out.println(" <TABLE border=1>");
out.println(" <TR>");
ResultSetMetaData rsmtd = rs.getMetaData();
for (int i = 1; i <= rsmtd.getColumnCount(); i++)
{
out.println(" <TD>");
out.println(" " + rsmtd.getColumnName(i));
out.println(" </TD>");
}
out.println(" </TR>");
while (rs.next())
{
out.println(" <TR>");
for (int i = 1; i <= rsmtd.getColumnCount(); i++)
{
out.println(" <TD>");
out.println(" " + rs.getString(i));
out.println(" </TD>");
}
out.println(" </TR>");
}
out.println(" </TABLE>");
out.println("</BODY>");
}
catch (SQLException sqle)
{
System.out.println("Errore " + sqle.getMessage());
}
}

public void executeUpdate(String SqlString) throws IOException
{
try
{
System.out.println(SqlString);
st.executeUpdate(SqlString);
out.println("<HEAD>");
out.println(" <TITLE>");
out.println(" Pagina generata dalla servlet DBServlet - UPDATE");
out.println(" </TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println(" <B>Update avvenuto !!!</B>");
out.println("</BODY>");
}
catch (SQLException sqle)
{
System.out.println("Errore " + sqle.getMessage());
}
}

public void setOutput(ServletOutputStream o)
{
out = o;
}

public void closeConnection()
{
st = null;
try
{
con.close();
}
catch (SQLException e)
{
System.out.println("Problemi in chiusura connessione: " + e.getMessage());
}
}
}


codice classe DBServletWR.:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class DBServletWR extends HttpServlet
{
DBManagerWR dbm;
String key;
String value;

public void init(ServletConfig config) throws ServletException
{
super.init(config);
dbm = new DBManagerWR();
}

public void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
boolean query;
String valueNome = null;
String valueCognome = null;
String valueEmail = null;

res.setContentType("text/html");
res.setHeader("Pragma","no-cache");

ServletOutputStream out = res.getOutputStream();
dbm.setOutput(out);
String SqlString = null;

query = false;
Enumeration parametri = req.getParameterNames();
while (parametri.hasMoreElements())
{
key = (String)parametri.nextElement();
value = req.getParameter(key);
if (key.equals("query"))
{
query = true;
if (value.equals("*"))
SqlString = "SELECT * FROM TAB1";
else
SqlString = "SELECT * FROM TAB1 WHERE nome='" + value + "'";
System.out.println(SqlString);
dbm.executeQuery(SqlString);
}
else if (key.equals("nome"))
valueNome = value;
else if (key.equals("cognome"))
valueCognome = value;
else if (key.equals("email"))
valueEmail = value;
}
if (! query)
{
SqlString = "INSERT into TAB1 (nome, cognome, email) VALUES ('" + valueNome + "','" + valueCognome + "','" + valueEmail + "')";
dbm.executeUpdate(SqlString);
}
}

public void destroy()
{
dbm.closeConnection();
}

public String getServletInfo()
{
return "Servet DBServletWR per la scrittura (W) e lettura (R) da un data base";
}
}


codice pagina HTML da utilizzare:

                         
   <html>
    <head>
     <title>
      Form HTML di esempio di uso della servlet DBServlet
     </title>
    </head>
    <body>
     <form method=post action="../servlet/DBServletWR">   
      <table bgcolor=cyan>
       <tr>
        <td>   
         <table>
          <tr>
           <td>
            <B>
             Ricerca per stringa su data base
            </B>
           </td>
          </tr>
          <tr>
           <td>
            (usare * per cercare tutto)
           </td>
          </tr>
          <tr>
           <td>
            <input TYPE=text SIZE=30 NAME="query">
           </td>
         </table>   
        </td>
       </tr>
       <tr>
        <td>
         <center>
          <td>
           <input TYPE="submit" VALUE="OK"><input TYPE="reset" VALUE="Clear">
          </td>
         </center>
        </td>
       </tr>
      </table>
     </form>
   
     <form method=post action="../servlet/DBServletWR">
      <table bgcolor=green>
       <tr>
        <td>
         <table>
          <tr>
           <td>
            <b>
             <br>Inserimento dati nel data base<br><br>
            </b>
           </td>
          </tr>
          <tr>
           <td>
            Nome
           </td>
           <td>
            <input TYPE=text SIZE=30 NAME="nome">
           </td>
          </tr>
          <tr>
           <td>
            Cognome
           </td>
           <td>
            <input TYPE=text SIZE=30 NAME="cognome">
           </td>
          </tr>
          <tr>
           <td>
            Indirizzo e-mail
           </td>
           <td>
            <input TYPE=text SIZE=30 NAME="email">
           </td>
          </tr>
         </table>
        </td>
       </tr>
       <tr>
        <td>
         <center>
          <td>
           <input TYPE="submit" VALUE="OK"><input TYPE="reset" VALUE="Clear">
          </td>
         </center>
        </td>
       </tr>
      </table>
     </form>
    </body>
   </html>