Folosirea
Formularelor HTML
- tema 2 ISW
–
Cătrună Ştefan
Grupa 453 D
Free online version of Core Servlets & JSP,
1st Edition
A
Debugging Web Server
- Chapter 16:
Using HTML Forms -
Folosirea Formularelor HTML
In
acest capitol se dezbat formularele HTML ca interfete pentru servlet-uri sau
alte programe ce se ruleaza pe un server. Aceste formulare ofera o metoda simpla
si de incredere pentru a colecta date de la utilizator si de a le transmite la
servlet. Capitolul urmator va aborda folosirea apleturilor ca interfete de
intrare. Folosirea apleturilor cu acest scop necesita un efort mai intens si
niste limitari de securitate. Totusi, permite o interfata cu utilizatorul mult
mai bogata si mai atractiva si poate suporta o comunicare cu reteaua mult mai
eficienta si mai flexibila.
Pentru
a folosi formularele, va trebui sa stiti unde sa puneti fisierele HTML pentru
ca acestea sa fie accesibile serverului Web. Localizarea fisierelor difera de
la server la server, dar la JSWDK si Tomcat, fisierele HTML trebuie puse in install_dir/webpages/path/file.html si
apoi trebuie accesate la adresa
http://localhost/path/file.html (localhost trebuie
inlocuit cu numele real daca nu se lucreaza local).
16.1 Cum transmit Formularele HTML datele
Formularele
HTML va permit crearea unei mari varietati de controale cu scopul de a colecta
intrarile dintr-o pagina Web. Fiecare din controale are de obicei un nume si o
valoare, numele fiind specificat in pagina HTML, iar valoarea poate fi fie
specificata in pagina HTML, fie de catre utilizator. Intregul formular este
asociat cu un URL al unui program care va procesa datele, si cand utilizatorul
va valida formularul (de obicei prin apasarea unui buton), numele si valorile
controalelor sunt trimise URL-ului desemnat sub forma unui sir de caractere:
Name1=Value1&Name2=Value2...NameN=ValueN
Sirul de caractere
poate fi trimis catre programul desemnat pe doua cai. Prima este folosind
metoda HTTP GET, prin adaugarea
sirului de nume si valori la sfarsitul URL-ului dupa semnul intrebarii. Cea dea
doua metoda este HTTP POST. Aceasta
metoda trimite la server mai intai cateva date de cerere POST si o linie goala,
si dupa aceea este trimis pe urmatoarea linie sirul de caractere ce contine
numele si valorile din formular.
De exemplu, codul HTML din Afisarea 16.1
si Figura 16-1 descriu un formular simplu cu doua campuri text. Elementele HTML
care formeaza acest formular sunt discutate amanuntit pe parcursul acestui
capitol, dar pentru inceput, trebuie avute in vedere cateva aspecte. In primul
rand, observati ca unul din campurile text are numele firstName si
celalalt are numele lastName. In al doilea rand, trebuie avut in vedere
ca controalele interfetei cu utilizatorul sunt considerate elemente de nivel
text, asa ca trebuie sa folositi o formatare HTML specifica. In cele din urma,
trebuie notat ca formularul a mentionat ca adresa http://localhost:8088/Some-Program sa fie URL-ul caruia datele vor fi transmise.
Figura
16–1 : Forma initiala a GetForm.html.
Inainte ca
formularul sa fie validat, am pornit un server de ecou numit EchoServer pe
portul 8088 a statiei locale de lucru. Serverul de ecou, aratat in Sectiunea
16.12, este un nimi server Web folosit pentru depanare. Indiferent ce URL este
specificat si indiferent ce date sunt transmise, serverul va returna mereu o
pagina Web ce contine toate informatiile HTTP trimise de browser. Cum este
aratat in Figura 16–2, cand formularul este validat cu textul „Joe”
in primul camp de text si cu „Hacker” in cel
de-al doilea,browserul va face o cerere catre adresa http://localhost:8088/Some-Program?firstName=Joe&lastName=Hacker.
Figura
16–2 : cerere HTTP trimisa de Netscape
4.7 la validarea GetForm.html.
Afisarea
16.2 contine cod HTML iar Figura 16-3 arata varianta pentru care s-a folosit
metoda POST in loc de GET.
Figura
16–3 : Rezultate intiale ale PostForm.html.
Cum
se arata in Figura 16-4, validarea formularului avand ca valori ale campurilor
text Joe si Hacker are ca rezultat trimiterea liniei catre browser „firstName=Joe&lastName=Hacker” dupa cererile HTTP si o
linie goala.
Figura
16–4 : cerere HTTP trimisa de Netscape
4.7 la validarea PostForm.html.
Aceasta este
ideea generala in lucrul cu formulare HTML: controalele din interfata cu
utilizatorul strang date de la utilizator, fiecare control are un nume si o
valoare, si un sir de caractere ce contine toate perechile nume/valoare sunt
trimise la server cand formularul a fost validat. Extragerea numelor si a
valorilor pe server revine servlet-urilor: acest aspect a fost descris in
capitolul 3.
16.12 Serverul de depanare
Aceasta sectiune prezinta un mini server
Web care este folositor cand dorim sa intelegem modul in care formularele HTML
lucreaza. Mini serverul a fost folosit pentru multe din exemplele din capitolele
anterioare. Modul lui de functionare este urmatorul: citeste datagramele HTTP
trimise de browser, apoi returneaza o pagina Web cu liniile primite de la
browser incadrate intre etichetele <pre>.
Acest server este de asemenea extrem de folositor pentru a depana servlet-uri.
Cand ceva nu functioneaza, primul lucru care trebuie facut este verificarea
modului de colectare a datelor si apoi verificara modului in care acestea sunt
procesate. Se porneste EchoServer-ul pe portul 8088 pe statia locala de lucru,
apoi se specifica tuturor formularelor calea catre server. http://localhost:8088/ va v-a arata modul in care sunt colectate datele, si daca ele au formatul
pe care-l doreati.
EchoServer
Afisarea
16.9 prezinta codul serverului. De obicei se ruleaza din linie de comanda,
specificand si portul pe care sa asculte, sau acceptand portul standard 8088.
Serverul accepta apoi in mod repetat cereri HTTP de la clienti si impacheteaza
toate datele primite intr-o pagina Web care este returnata clientului.