Servlet-uri si lucrul cu baze de date folosind JDBC
Aplicatiile care folosesc baze de date sunt, în general, aplicatii complexe folosite
pentru gestionarea unor informatii de dimensiuni mai mari într-o maniera sigura si
eficienta.
Ce este o baza de date ? “http://ctvuct.ro:98/PUBLIC/Cursuri%20de%20programare/Curs%20JAVA/Curs%2011.pdf”
O baza de date reprezinta o modalitate de stocare a unor informatii (date) pe un
suport extern, cu posibilitatea regasirii acestora. Uzual, o baza de date este
memorata într-unul sau mai multe fisiere.
Modelul clasic de baza de date este cel relational, în care datele sunt memorate în
tabele. Pe lânga tabele, o baza de date mai poate contine: proceduri si functii,
utilizatori si grupuri de utilizatori, tipuri de date, obiecte, etc. Dintre producatorii cei mai
importanti de baze de date amintim Oracle, Sybase, IBM, Informix, Microsoft, etc.
Crearea unei baze de date
Se face cu aplicatii specializate oferite de producatorul tipului respectiv de baza de date. Accesul la o baza de date
Se face prin intermediul unui driver specific tipului respectiv de baza de date. Acesta
este responsabil cu accesul efectiv la datele stocate, fiind legatura între aplicatie si
baza de date.
Ce este JDBC ?
Definitie: JDBC (Java Database Connectivity) este o interfata standard SQL de acces la baze de date. JDBC este constituita dintr-un set de clase si interfete scrise în Java, furnizând mecanisme standard pentru proiectantii aplicatiilor de baze de date. Pachetul care ofera suport pentru lucrul cu baze de date este java.sql. Folosind JDBC este usor sa transmitem secvente SQL catre baze de date relationale.
Cu alte cuvinte, nu este necesar sa scriem un program pentru a accesa o baza de date
Oracle, alt program pentru a accesa o baza de date Sybase si asa mai departe. Este de
ajuns sa scriem un singur program folosind API-ul JDBC si
acesta va fi capabil sa trimita secvente SQL bazei de date dorite. Bineînteles, scriind
codul sursa în Java, ne este asigurata portabilitatea programului. Deci, iata doua motive puternice care fac combinatia Java - JDBC demna de luat în seama. Fiind robust, sigur, usor de folosit, usor de înteles, Java este un excelent limbaj pentru
a dezvolta aplicatii de baze de date. Tot ceea ce-i lipseste este modalitatea prin care
aplicatiile Java pot comunica cu bazele de date. Aici vine însa JDBC-ul care ofera
acest mecanism. Ce face JDBC-ul?
In linii mari, JDBC face trei lucruri:
stabileste o conexiune cu o
baza de date trimite secvente
SQL prelucreaza rezultatele
Conectarea la o baza de date
Procesul de conectare la o baza de date implica doua operatii:
1. încarcarea în memorie a unui driver corespunzator 2. realizarea unei conexiuni propriu-zise
Definitie: O conexiune (sesiune) la o baza de date reprezinta un context prin care sunt trimise secvente SQL si primite rezultate. Intr-o aplicatie pot exista mai multe conexiuni simultan la baze de date diferite sau la aceeasi baza. Clasele si interfetele responsabile cu realizarea unei conexiuni sunt:
clasa DriverManager, ce se ocupa cu înregistrarea driverelor ce vor fi folosite în
aplicatie interfata Driver, pe care trebuie sa o implementeze orice clasa ce
descrie un driver clasa DriverPropertyInfo interfata Connection, descrie obiectele ce modeleaza o conexiune propriu-zisa cu baza de date
Un servlet este o clasă scrisă în limbajul Java al cărei scop este generarea dinamică
de date într-un server HTTP. O astfel de clasă poate crea atât conținut HTML, cât și
documente XML, imagini, alte fișiere etc. În cea mai mare parte servleții sunt folosiți
împreună cu protocolul HTTP, deși există posibilitatea de a utiliza servleți generici care
nu sunt legați de un anumit protocol. Așadar prin „servlet” se înțelege de obicei „servlet
HTTP”.
public interface Servlet
Definește metode care toate servlet trebuie să le implementeze.
Un servlet este un program Java care rulează în mic un server Web. Servlets
primească și să răspundă la solicitările clienților web, de obicei, peste HTTP,
protocolul HyperText Transfer.
Pentru a implementa această interfață, puteți scrie un servlet generic care se
extinde javax.servlet.GenericServlet sau un servlet HTTP care se
extinde javax.servlet.http.HttpServlet .
Această interfață definește metode pentru a inițializa un servlet, pentru cereri de
servicii, precum și pentru a elimina un servlet de pe server. Acestea sunt cunoscute ca
metode ciclului de viață și sunt numite în următoarea secvență:
1. Servlet este construit, apoi inițializată cu init metoda.
2. Apeluri de la clienti la serviciu metoda sunt manipulate.
3. Servlet este scos din serviciu, apoi distruse cu distruge metoda, apoi gunoi
colectate și finalizate.
În plus față de metodele ciclului de viață, această interfață
oferă getServletConfig metoda, care servlet poate utiliza pentru a obține orice
informație de pornire, și getServletInfo metoda, care permite servlet pentru a reveni
informații de bază despre sine, cum ar fi autorul, versiunea, și copyright.
getServletConfig
ServletConfig getServletConfig ()
Returneaza un ServletConfig obiect, care conține parametrii de initializare si pornire
pentru acest servlet. ServletConfig Obiectul returnat este cel trecut
la inițializare metoda.
Implementari de acest interfață sunt responsabile pentru
stocarea ServletConfig obiect, astfel că această metodă poate
returna. GenericServlet clasă, care pune în aplicare această interfață, nu deja asta.
void init ( ServletConfig config)
aruncă ServletException
Numit de către containerul servlet pentru a indica un servlet care servlet este
dat în exploatare.
Containerul servlet numește init metoda exact o dată după instantierea
servlet. Init Metoda trebuie să completeze cu succes înainte de servlet poate
primi cereri.
Containerul servlet nu poate plasa servlet în serviciu în cazul în
care init metoda
1. Aruncă o ServletException
2. Nu se întoarce într-o perioadă de timp definită de serverul Web
Parametri: config - o ServletConfig obiect conține configurare și inițializare parametri
servlet lui
Aruncă: ServletException - dacă a avut loc o excepție care interferează cu funcționarea
normală servlet lui
getServletConfig
ServletConfig getServletConfig ()
Returneaza un ServletConfig obiect, care conține parametrii de initializare si pornire
pentru acest servlet. ServletConfig Obiectul returnat este cel trecut
la inițializare metoda.
Implementari de acest interfață sunt responsabile pentru
stocarea ServletConfig obiect, astfel că această metodă poate
returna. GenericServlet clasă, care pune în aplicare această interfață, nu deja asta.
Întoarce:
ServletConfig obiectul care initializeaza acest servlet
void serviciu ( ServletRequest cer,
ServletResponse res)
aruncă ServletException ,
java.io.IOException
Numit de către containerul servlet pentru a permite servlet a răspunde la o solicitare.
Această metodă se numește doar după servlet de init () metoda a finalizat cu succes.
Codul de stare a răspunsului întotdeauna ar trebui stabilit un servlet care aruncă sau
trimite o eroare.
Servlets de obicei rula în interiorul containerelor servlet multithreaded care se pot
ocupa mai multe cereri în același timp. Dezvoltatorii trebuie să fie conștienți de a
sincroniza accesul la resurse comune, cum ar fi fișiere, conexiuni de rețea și ca și
variabile de clasa si instanță Servlet lui. Mai multe informații despre programarea
multithreaded in Java este disponibil în tutorial Java de pe programare multi-
threaded .
Parametri:
cer - ServletRequest obiect care conține solicitarea clientului
res - ServletResponse obiect care conține răspunsul servlet lui
Aruncă:
ServletException - dacă apare o excepție care interferează cu funcționarea normală
servlet lui
java.io.IOException - dacă apare o excepție de intrare sau de ieșire
getServletInfo
java.lang.String getServletInfo ()
Returnează informații despre servlet, cum ar fi autorul, versiunea, și drepturile
de autor.
Șirul că această metodă întoarce trebuie să fie text simplu, și nu de marcare de
orice fel (cum ar fi HTML, XML, etc.).
Întoarce: un String informații servlet conține
distruge
void distruge ()
Numit de către containerul servlet pentru a indica un servlet care servlet este
scos din serviciu. Această metodă se numește o singură dată toate subiectele
din servlet de serviciu metodă au ieșit sau după o perioadă de timp a
trecut. După containerul servlet numește această metodă, nu va
apela service metoda nou pe acest servlet.
Această metodă oferă o oportunitate de a servlet curăța orice resurse care sunt
deținute (de exemplu, memorie, mânere de fișiere, fire) și asigurați-vă că orice
stat persistentă este sincronizat cu starea actuală servlet în memorie.
Un servlet nu poate fi executat direct de către server, ci de către un container web.
Pentru a răspunde unei cereri de la un client (de obicei un browser) către un anumit
servlet, serverul trimite mai departe cererea către container, care se ocupă de
instanțierea obiectului respectiv și de apelarea metodelor necesare. Exemple de
containere web care suportă servleți includ Apache Tomcat (acesta poate rula și ca
server de sine stătător, dar performanțele sale nu se compară cu cele ale unui server
web dedicat precum Apache), Jetty, GlasFish și Resin.
Servleții reprezintă o alternativă la tehnologiile non Java CGI sau ASP.NET.
Istoric: Sun Microsystems a publicat prima specificație completă, versiunea 1.0, în iunie
1997. Începând cu versiunea 2.3 specificațiile au fost dezvoltate cu ajutorul Java
Community Process, un mecanism care permite tuturor celor interesați să ia parte la
creerea specificațiilor tehnice în platformele Java. La data de 28 ianuarie 2012 ultima
specificație privind servleții are versiunea 3.0.
Bibliografie
1. http://docs.oracle.com/javaee/6/api/javax/servlet/Servlet.html
2. http://en.wikipedia.org/wiki/Java_servlet
3. http://ctvuct.ro:98/PUBLIC/Cursuri%20de%20programare/Curs%20JAVA/Curs%2011.p
df