Baza de date
Pe serverul de Web se afla o baza de date Access:
cu numele Firma
ce cuprinde tabelul Persoane
cu DSN: FirmaODBC
salvata ca Firma.mdb
cu câmpurile pers si salariu
Fig. 0
Ce urmarim
Urmarim ca baza date sa poate fi consultata si sa se poata efectua inserari de noi înregistrari. Mai precis:
la prima tranzactie dorim sa apara pe ecranul clientului înregistrarile din baza de date (informatiile despre salariati). Meniul are numele salariat, iar butonul are numele Buton si valoarea (eticheta) Adauga:
Fig. 1
la urmatoarele tranzactii dorim sa apara un câmp de text cu numele text si un buton cu numele Buton si eticheta OK:
Fig. 2
Dupa completarea câmpului de text cu numele si salariul unui nou salariat, informatii separate printr-un blanc, dorim ca la apasarea butonului servlet-ul sa completeze baza de date, iar pe ecranul clientului sa apara continutul actualizat al bazei de date:
Fig. 3
Observatie. Reamintim ca desi entitatile din sirul de caractere ce contine numele si salariul noului salariat sunt despartite prin caracterul (asa cum apare în figura de mai sus), separatorul real este blancul (vezi clasa URLEncoder). Acest lucru este important daca dorim sa le identificam folosind StringTokenizer
Programul
Clasele sunt cuprinse în pachetul Baza_Date din directorul:
User\WEB-INF\classes
Clasa Persoana contine:
câmpurile pers si salariu
un constructor ce initializeaza aceste câmpuri la crearea unui obiect de acest tip;
metodele rPers si rSalariu ce întorc valorile celor doua câmpuri;
metoda toString ce întoarce sirul de caractere format din cele doua câmpuri, despartite printr-un blanc.
package Baza_Date;
public class Persoana
public String rPers()
public int rSalariu()
public String toString()
Clasa BD contine:
câmpul stmt de tip Statement
un constructor ce initializeaza acest câmp;
metoda cauta ce întoarce un vector în care apar toate obiectele de tipul Persoana corespunzatoare înregistrarilor din baza de date;
metoda adauga cu un parametru de tipul Persoana. Executarea metodei adauga în baza de date o înregistrare corespunzatoare argumentului (noului salariat) cu care este invocata.
package Baza_Date;
import java.sql.*; import java.util.*;
public class BD
public Vector cauta() throws Exception
return v;
}
public void adauga(Persoana p) throws Exception
Clasa principala (servlet-ul) Firma contine metodele doGet afisare si cerere
Metoda afisare realizeaza transmiterea catre client a informatiilor din baza de date, sub forma din figura 1.
Metoda cerere afiseaza pe ecranul clientului pagina din figura 2.
Metoda doGet întreprinde urmatoarele actiuni:
creaza obiectul out de tipul PrintWriter
transmite cu ajutorul sau marcajele (tag-urile) html head title body si form, specificând în acesta din urma adresa servlet-ului;
creaza un obiect stmt de tipul Statement si un obiect bd de tipul BD
citeste în sirul de caractere s, prin intermediul metodei getQueryString, lista de parametri;
actiune
transmite prin intermediul lui out marcajele de sfârsit corespunzatoare lui form body si html
unde actiune semnifica:
daca s=null, adica suntem la prima tranzactie, este invocata metoda afisare
în caz contrar:
este citita în s, prin intermediul metodei getParameter, valoarea atasata butonului Buton
daca eticheta butonului este Adauga, este invocata metoda cerere
daca eticheta butonului este OK, este citit în s textul introdus de client în câmpul de text cu numele text. Folosind StringTokenizer, sunt extrase cele doua informatii si este creat un obiect de tipul Persoana corespunzator noului salariat. Apoi aceasta informatie este adaugata bazei de date prin invocarea metodei adauga a clasei BD si este invocata metoda afisare
package Baza_Date;
import java.io.*; import java.util.*; import java.sql.*;
import java.awt.*; import java.awt.event.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Firma extends HttpServlet
catch (SQLException e)
catch (ClassNotFoundException e)
String s = req.getQueryString(); String ss;
if (s==null) try catch(Exception e)
else catch(Exception e)
else if( s.equals("OK") )
try
catch(Exception e) ;
}
out.println("</body></html>");
}
public void afisare(BD bd) throws Exception
html += "</select><p>";
html += "<input type=submit name=Buton value=Adauga>";
out.println(html);
}
public void cerere(BD bd) throws Exception
|