Documente Academic
Documente Profesional
Documente Cultură
Servleturile sunt tehnologie Java care raspund programarii CGI. Servlet-urile sunt
programe care ruleaza pe server WEB, fiind pozitionate intre cererile care vin de la
browser sau de la un client HTTP si bazele de date sau aplicatii de pe serverul de HTTP.
Un servlet reprezint o component web , gestionat de un container ,care genereaz
coninut dinamic. Servlet-urile sunt clase java, ce ofer independen de platform i sunt
incrcate i executate dinamic de ctre server. Servlet-urile comunic cu clienii pe baza
paradigmei cerere raspuns. Acest model cerere raspuns se bazeaz de obicei pe
protocolul Hypertext Transport Protocol (HTTP).
1. Pot citi datele trimise de useri: aceste date sunt, de obicei, introduse intr-un formular
WEB sau pot proveni dintr-un applet Java sau de la un program client de HTTP.
2. Pot formata rezultatele intr-un document: in cele mai multe cazuri, aceasta implica
inserarea informatiei intr-o pagina HTML.
Servlet-urile nu sunt restrictionate numai la WEB sau aplicatii server care manipuleaza
cereri HTTP; de asemenea pot fi folosite si pentru alte tipuri de servere. De exemplu,
servlet-urile pot fi inserate in servere de email sau FTP.
Avantajele servlet-urilor
1.Eficienta
In programarea CGI, pentru fiecare cerere HTTP se incepe un nou proces. In cazul
servlet-urilor, masina virtuala de java ramane in executie si fiecare cerere este rezolvata
printr-un thread, nu printr-un proces al sistemul de operare ca in cazul CGI. In CGI,
rezolvarea a N cereri simultane pentru acelasi program se realizeaza prin incarcarea
codului programului CGI de N ori. In cazul servlet-urilor for exista N thread-uri, dar o
singura copie a clasei servlet.
Cand un program CGI a terminat manipularea unei cereri, programul se termina. Servlet-
urile raman in memorie chiar si dupa ce raspunsul a fost complet.
2. Putere
Servlet-urile pot comunica direct cu serverul WEB. Mai multe servlet-uri pot imparti
date, facand mult mai usoara conectarea cu baza de date.
3. Portabilitate
Servlet-urile sunt scrise in Java si pot rula pe servere ca Apache, Microsoft Internet
Information Server (IIS), IBM WebSphere, or StarNine WebStar, fara vreo schimabare a codului.
Servlet-urile sunt acum parte din Java 2 Platform, Enterprise Edition (J2EE;
http://java.sun.com/j2ee/)
Instalare si Setup
1. Instalare JDK
Apache Tomcat : este serverul oficial care implementeaza servlet 2.2 si JSP 1.1. Poate
fi folosit ca un server de sine statator pentru a testa servlet-uri si pagini JSP sau poate fi
integrat in serverul WEB Apache. Tomcat ul ca si Apache-ul este gratuit. Mai multe
informatii puteti gasi la adresa:
http://jakarta.apache.org/.
JavaServer Web Development Kit (JSWDK): JSWDK este serverul oficial pentru
implementarea servlet-urilor 2.1 si JSP 1.0. Este folosit ca un server de sine statator
pentru a testa servlet-uri sau pagini JSP. Acest server este gratuit si mai multe informatii
se pot gasi la adresa: http://java.sun.com/products/servlet/download.html .
Alte servere sunt: Allaire JRun, New Atlantas ServletExec, LiteWebServer (LWS)
from Gefion Software, Suns Java Web Server
S e r v e r u l p o a t e f i o b t i n u t d e l a a d r e s a http://jakarta.apache.org/builds/jakarta-
tomcat-4.0/release/.
Daca nu exista nici un server care deja foloseste portul 80, se poate configura ca
Tomcat-ul sa asculte pe portul HTTP 80 si nu pe portul 8080. Facand aceasta schimbare,
in loc de a folosi URL de forma http://localhos:8080/ se poate folosi http://localhost/
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="80 . . . />
set JAVA_HOME=C:\j2sdk1.4.0
Dupa realizarea operatiilor de mai sus, trebuie creat un director pentru aplicatia
dezvoltata, de exemplu webapps\test. Apoi se creeza subdirectorul numit WEB-INF si
aici se plaseaza fisierul descriptor al aplicatiei, numit web.xml care contine informatii
despre aplicatie. In subdirectorul WEB-INF se creeaza directorul numit classes. aici se
pot plasa servleturile sau alte clasele care sunt utilizate in aplicatie.
Dupa obtinerea software-ului necesar, Compilatorul Java (javac) trebuie sa stie unde se
afla fisierele servlet-urilor si JSP cand le compileaza. Fisierele clasa necesare sunt de
obicei in subdirectorul lib al directorului unde unde s-a instalat serverul, cu clasele servlet
in servlet.jar si clasele JSP in jsp.jar, jspengine.jar, sau jasper.jar. Exista mai multe
modalitati de a informa compilatorul unde se gasesc aceste clase.
Unix (C Shell)
Se adauga $CLASSPATH la sfarsitul liniei setenv daca CLASSPATH a fost deja setat si
se doreste sa adaugam altceva, fara sa inlocuim. Acesta se aduga in fisierul .cshrc .
Windows
set CLASSPATH=.;dir\servlet.jar;dir\jspengine.jar
Exemplu1:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
//se foloseste "request" pentru a citi headerele HTTP (cookie-urile) si datele dintr-un
//formular HTML (de exemplu datele userului).
}
Exemplul de mai sus pune in evidenta folosirea cererilor tip GET. Cererile tip GET sunt
cereri tipice ale browserului pentru pagini WEB. Browserul genereaza acest request
cand userul tipareste un URL in bara de adrese sau cand face submit la un formular
HTML care nu specifica nici o metoda. De asemenea servleturile pot manipula cereri
POST, care sunt generate cand cineva face submit la un formular in care este specificata
metoda method = post
Clasa HttpServletRequest are metode care manipuleaza informatia sosita la server cum ar
fi cea dintr-un formular HTML. Clasa HttpServletResponse specifica informatia care
pleaca de la server (tipul continutului etc.) si mai mult produce un PrintWriter folosit
pentru a trimite informatia a client.
Pachetele importate au fost necesare pentru a obtine clasa PrintWriter (java.io), HttpServlet
(javax.servlet), HttpServletRequest si HttpServletResponse (javax.servlet.http).
Clasa HttpServlet nu este singurul punct de star pentru servlet-uri, deoarece servlet-urile
ar putea extinde servere de mail, FTP etc. Aceste servlet-uri extind o clasa derivata din
GenericServlet, clasa parinte a clasei HttpServlet. In practica, servlet-urile sunt utilizate
pentru servere care comunica prin HTTP (adica servere WEB).
Exemplu2:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
HttpServletResponse response)
install_dir/webapps/directorul_tau/WEB-INF/classes.
De asemenea se pot folosi fisiere HTML care trebuiesc puse corespunzator in locatii
pentru a le face accesibile serverului. Aceste locatii sunt diferite de la un server la altul,
dar pentru Tomcat 4.0 sau5.0 pot fi plasate in directorul:
install_dir/webapps/directorul_tau/fisier.html
Cele mai multe servleturi genereaza HTML, nu textca in exemplu precedent. pentru a
construi HTML sunt necesari urmatorii pasi:
response.setContentType("text/html");
Exemplu3:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
HttpServletResponse response)
out.println("<HTML>\n" +
"<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" +
"<BODY>\n" +
"<H1>Hello WWW</H1>\n" +
"</BODY></HTML>");
Exemplu4: ServletUtilities.java
package firstservlets;
import javax.servlet.*;
import javax.servlet.http.*;
"Transitional//EN\">";
return(DOCTYPE + "\n" +
"<HTML>\n" +
package firstservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
HttpServletResponse response)
response.setContentType("text/html");
out.println(ServletUtilities.headWithTitle("Hello WWW") +
"<BODY>\n" +
"<H1>Hello WWW</H1>\n" +
"</BODY></HTML>");
Linia DOCTYPE informeaza validatorii de HTML care versiune de HTML este folosita
pentru a sti ce specificatie sa verifice pentru documentul HTML.
Acesti validatori sunt servicii cate ajuta la evidentierea erorilor de sintaxa din documentul
HTML. Exista 2 validatoare on-line, unul la World Wide Web Consortium
(http://validator.w3.org/) si altul la Web Design Group
(http://www.htmlhelp.com/tools/validator/).
Manipularea cererilor facute de useri
Una dintre motivatiile pentru crearea paginilor WEB dinamice este ca rezultatul sa se bazeze pe
datele introduse de user. De exemplu intr-un URL de forma
http://localhost/path?user=Mihai&student=yes&bursier=no, partea dupa semnul
intrebarii este cunoscuta ca date formular sau date interogare si este folosita pentru
aduce informatia dintr-o pagina WEB la un program de pe server. Datele formular pot fi
atasate la sfarsitul URL dupa semnul intrebarii pentru cereri GET, sau pot fi trmise la
server intr-o linie separata, pentru cererile POST.
Citirea datelor formular din servlet-uri: se poate face simplu prin apelarea metodei
getParameter din clasa HttpServletRequest, furnizand numele parametrului ca
argument metodei. Metoda getParameter se foloseste in acelasi mod atat pentru date
trimise prin get, cat si pentru cele trimise prin post. Servletul stie ce metoda pentru cerere
a fost folosita. Valoarea returnata este de tipul String corespunzatoare valorii din URL a
primei aparitii a numelui parametrului. Stringul este gol daca parametrul nu are nici o
valoare si null daca nu exista un astfel de parametru. Daca parametrul are mai multe
valori se apeleaza metoda getParameterValues care returneaza un vector de stringuri.
Exemplu4:
user.html
<HTML>
<HEAD>
<TITLE>Introduceti</TITLE>
</HEAD>
<BODY>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
Hello.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
res.setContentType("text/html");
out.println("<HTML>");
out.println("<BODY>");
out.println("</BODY></HTML>");