C.V.

 
 

       8 Tehnici de programare folosite


       8.1 Protocol cu\fara stari

       Http est un protocol fara stari. Un client face o conexiune si cere anumite resurse sau informatii; dupa ce clientul a inchis conexiunea server-ul nu-si mai aminteste nimic despre client, considerand cererea urmatoare de la acelasi client ca fiind la nici o legatura cu cererile anterioare.
       Un protocol "are stari" daca raspunsul la o anumita cerere depinde nu numai de cererea curenta dar si de cele anterioare. Pentru a implementa tranzactii flexibile in situatia unor multiple cereri si raspunsuri sunt necesare doua facilitati:
· Sesiunea - server-ul trebuie sa fie in stare sa recunoasca faptul ca multiple cereri de la un singur client, pe aceeasi conexiune, formeaza o singura "sesiune" de lucru; in acest mod o aplicatie online sau un magazin virtual bazat pe un cos de cumparaturi poate face distinctie intre utilizatori\clienti.
· Stare - server-ul trebuie sa fie capabil sa-si aminteasca date legate de o cerere anterioara; sa asocieze stari cu fiecare sesiune de lucru.
       Servlet-urile sunt parti ale aplicatiilor web; notiunea de aplicatie web este construita pe "sesiune". Servlet-urile corespunzatoare unei aplicatii folosesc aceasta sesiune si starile sale pentru a schimba informatii, pentru a colabora cu alte servlet-uri, pentru a accesa resurse, a furniza starile pentru evenimente, etc. Pentru urmarirea sesiunilor de lucru sau dezvoltat patru abordari: rescrierea URL, campuri ascunse, cookies(prajituri - probabil ca denumirea vine de la mesajele ascunse in prajituri, de origine chinezeasca), utilizarea SSL (Secure Socket Layer). Toate se bazeaza pe un mijloc simplu: utilizarea unui token(simbol) care sa fie schimbat intre client si server.

       8.2 Rescrierea URL

       In aceasta tehnica token-ul este inclus in fiecare URL. In fiecare pagina generata dinamic server-ul include un parametru suplimentar, o informatie de cale suplimentara. Atunci cand clientul trimite cereri prin aceste pagini generate dinamic (foloseste unul dintre hiperlink-urile generate in pagina) token-ul este retransmis server-ului, permitand containerului pentru servlet-uri sa urmareasca sesiunea utilizatorului.
       Atunci cand este folosita metoda Get pentru transmiterea parametrilor se va vedea un URL de forma:
http://www.myserver.com/servlet/usrmenu;jsessionid=123456789

       8.3 Cookies

       Prajiturile au fost initial introduse de Nescape si aceasta tehnica a fost standardizata in RFC 2109. O prajitura (cookie) este un mic fragment de text trimis de server clientului, stocat pe masina acestuia, si returnat de catre client pentru toate cererile catre server.
       Browserele pot sa accepte sau sa respinga o prajitura prin configurare. Respingerea prajiturilor are ca motiv ingrijorarile legate de securitate ale utilizatorilor. Pentru a putea urmari in continuare sesiunea atunci cand browserele nu permit cookies se foloseste suplimentar tehnica rescrierii URL.

       8.4 Implementare

       Tehnica rescrierii URL este foarte simplu de implementat folosind tehnologia java ea fiind realizata prin comanda res.encodeURL:
        String url1 = res.encodeURL("/adi/servlet/prcos");
Pentru urmarirea sesiunii folosind prajituri se foloseste comanda:
	HttpSession ses = req.getSession();	
Pentru a determina sau seta starile unei sesiuni se folosesc metodele:
	String pretmi=(String)ses.getAttribute("pretm"); 
si
	ses.setAttribute("pretm",pretmi);


       8.5 Contextul

       Diferit de sesiune, specifica unui client, unei aplicatii web care ruleaza intr-o Masina Virtuala Java ii corespunde notiunea de context pentru servlet-uri. Cu ajutorul contextului se mentin stari de la nivelul aplicatiei (parametrii aplicatiei).
Parametrii aplicatiei se dau in descriptorul de dezvoltare web.hml asociat aplicatiei web. In cadrul aplicatiei web denumita adi pentru servlet-ul execm parametrul imagini este dat ca mai jos:
<servlet>
  <servlet-name>execm</servlet-name>
  <servlet-class>execm</servlet-class>
  <init-param>
      <param-name>imagini</param-name>
      <param-value>d:\tom403\webapps\adi\imagini\alimente</param-value>
  </init-param>
</servlet>


       8.6 Colaborarea intre servlet-uri

       Pentru colaborarea intre servlet-uri se foloseste tehnica delegarii cererii. Astfel un servlet\JSP poate sa transmita parametrii primiti catre un alt servlet\JSP pentru alte procesari si generari de raspuns.

       8.7 Conectarea la baza de date

       Pentru conectarea la baza de date am folosit comenzile de conectare aflate in clasa java.sql. Pentru crearea conexiunii am folosit metoda init() care se apeleaza la initializarea servlet-ului:
  public void init(ServletConfig conf)throws ServletException {
  super.init(conf);     

  String Driver = getServletConfig().getInitParameter("driver");
  String DataBase = getServletConfig().getInitParameter("database");            
  String User = getServletConfig().getInitParameter("username");
  String Pass = getServletConfig().getInitParameter("password");
 
  try{
     Class.forName(Driver).newInstance();   
     con = DriverManager.getConnection(DataBase,User,Pass);
   }catch(Exception e) {
     System.err.println(e);
   }
} System.err.println(e);
       }

….

ses.setAttribute("connexion",con);
    
	…..
       Parametrii Driver, DataBase, User si Pass sunt preluati din contextul aplicatiei adi ei specificandu-se in fisierul web.hml, pentru servlet-ul getcat.java:
      <servlet>
         <servlet-name>getcat</servlet-name>
         <servlet-class>getcat</servlet-class>
         <init-param>
            <param-name>driver</param-name>
            <param-value>org.gjt.mm.mysql.Driver</param-value>
         </init-param>
         <init-param>
 	 <param-name>database</param-name>
 	 <param-value>jdbc:mysql://localhost/proiect</param-value>
         </init-param>
         <init-param>
 	 <param-name>username</param-name>
 	 <param-value>proiect</param-value>
         </init-param>
         <init-param>
 	 <param-name>password</param-name>
 	 <param-value>adrian</param-value>
        </init-param>
     </servlet>
       Servlet-ul "getcat" sta la baza aplicatiei pentru partea de client. El este cel care initiaza conexiunea la baza de date celelalte servlet-uri luand conexiunea din sesiunea aplicatiei:
	Connection con = (Connection)ses.getAttribute("connexion");
       Pentru partea de administrare a magazinului servlet-ul "login" este cel care initiaza conexiunea la baza de date Mysql si o transmite celorlate servlet-uri folosind sesiunea.


 
 
C.V.
 
Hosted by www.Geocities.ws

1