Tema 5 PAO

6

Click here to load reader

description

info

Transcript of Tema 5 PAO

Page 1: Tema 5 PAO

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

Page 2: Tema 5 PAO

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”.

Page 3: Tema 5 PAO

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.

Page 4: Tema 5 PAO

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.

Page 5: Tema 5 PAO

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

Page 6: Tema 5 PAO

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