Documente Academic
Documente Profesional
Documente Cultură
Obiective
- Apelarea unui servlet dintr-un formular HTML
- Citirea parametrilor intr-un servlet
- Gestionarea parametrilor lipsa sau eronati
- Filtrarea caracterelor speciale in servleti
- void setAttribute (String name, Object o): creaza un atribut cu numele name si-i
asociaza obiectul o
- void removeAttribute (String name): sterge atributul specificat in cerere;
- String getParameter (String name): returneaza parametrul asociat numelui specificat
sau null;
- String getLocalName() : returneaza numele masinii care a primit cererea;
- int getLocalPort(): retuneaza portul masinii care a primit cererea;
- String getProtocol() : returneaza numele si versiunea protocolului folosit;
- String getServerName() : numele serverului care a trimis cererea;
- int getServerPort(): portul serverului care a trimis cererea;
Interfata ServletResponse:
- PrintWriter getWriter(): obiectul prin care se expediaza continutul raspunsului la client;
Servleturile sunt apelate fie explicit printr-o referinta URL, fie sunt incorporate intr-un
document HTML si apelate dintr-o aplicatie Web.
Pentru a apela un servlet in cadrul unei pagini HTML trebuie inclus URL-ul servletului
astfel:
<HTML>
<HEAD><TITLE>Three Parameters Form</TITLE></HEAD>
<BODY BGCOLOR="#FDF5E6">
<H1 ALIGN="CENTER">Introduceti valori pentru cei 3 parametri</H1>
<FORM ACTION="three-params">
Primul parametru: <INPUT TYPE="TEXT" NAME="param1"><BR>
Al doilea parametru: <INPUT TYPE="TEXT" NAME="param2"><BR>
Al treilea parametru: <INPUT TYPE="TEXT" NAME="param3"><BR>
<CENTER><INPUT TYPE="SUBMIT"></CENTER>
</FORM>
</BODY>
</HTML>
Dintr-un formular HTML se pot apela ambele metode ale unui servlet (GET/POST). Daca
nu se specifica metoda, predefinit se apeleaza GET.
Parametrii se pot specifica in URL unui servlet astfel:
http://serverhost:port/webapp/servletname?paramname=paramvalue
2. Citirea parametrilor intr-un servlet.
Intr-un servlet se pot citi datele trimise dintr-o pagina HTML prin intermediul parametrilor.
Astfel, obiectul de tip cerere (request) primit ca parametru al metodelor GET sau POST
poate obtine numele si valorile parametrilor transmisi de client.
Principala metoda ar fi request.getParameter("name"), care returneaza prima valoare
decodificata din URL-ul servletului. Metoda functioneaza la fel atat pentru GET cat si pentru
POST. Metoda returneaza null daca nu exista nici un parametru cu numele dat.
3
Pentru a obtine enumerare sau lista de asocieri (hash map) a tuturor parametrilor se
folosesc metodele request.getParameterNames() sau request.getParameterMap().
Un exemplu de formular care transmite o valoare si de servlet care-l citeste si-l afiseaza:
@WebServlet("/show-params")
public class ShowParameters extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
String title = "Citirea tuturor parametrilor din Request";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +
}
3. Validarea parametrilor intr-un servlet.
Atunci cand se citesc parametrii transmisi trebuiesc gestionate valorile lipsa si cele
incorecte. Valorile lipsa pot proveni din inexistenta in cerere a unui anumit parametru sau cand
valoarea parametrului este vida. O astfel de situatie se poate gestiona prin codul:
param = request.getParameter(name);
if ((param == null) || (param.trim().equals(""))) {
doSomethingForMissingValues(...);
} else {
doSomethingWithParameter(param);
}
Poate sa apara posibilitatea ca parametrul sa fie valid, valoarea sa nu fie vida, dar sa fie intrun format incorrect. In general, toate aceste situatii se pot gestiona, in general prin inlocuirea
valorilor lipsa cu valori predefinite la nivel de aplicatie sau prin re-afisarea formularului. Acest
lucru se poate face prin diverse moduri:
- exista un singur servlet care prezinta formularul, proceseaza datele si prezinta
rezultatele;
- un servlet prezinta formularul, iar al doilea proceseaza datele si prezinta rezultatele;
- un fisier HTML / JSP prezinta formularul, iar un servlet / pagina JSP proceseaza datele
si prezinta rezultatele;
5
Astfel se filtreaza caracterele speciale din cadrul unui sir introdus de utilizator si trimis
de clientul browser.
4. Exercitii.
1) Scrieti un servlet care sa afiseze informatiile disponibile prin apelarea metodelor din
GenericServlet, HTTPServlet, ServletContext, ServletConfig si ServletRequest. Folositi
urmatoarele metode: log("Log servlet informatii"), getServletName(),request.getLocalName(),
request.getLocalPort(),request.getProtocol(),request.getServerName(),request.getServerPort(),
serverContext.getServletContextName(),serverContext.getContextPath(),
serverContext.getMajorVersion(),serverContext.getMinorVersion(),
serverContext.getServerInfo().
2) Creati un servlet care sa citeasca si sa afiseze trei parametri dati in URL-ul servletului.
3) Creati un formular html care sa apeleze acelasi servlet cu trei parametri, folosind metoda
GET.
6
4) Creati un formular html care sa permita introducerea numelui si prenumelui unei persoane.
Acest formular apeleaza un servlet care afiseaza tabelar numele si valoarea parametrilor
transmisi de formularul html. In servlet nu se stie apriori numele parametrilor transmisi.
5) Faceti acelasi lucru dar apeland metoda POST.
6) Creati un form HTML care sa permita introducerea unei portiuni de cod in browser. (ex:
<TEXTAREA ROWS="6" COLS="40" NAME="code"></TEXTAREA>). Creati servletul
care sa citeasca si sa afiseze codul introdus in formular.
7) Creati o varianta a problemei 6) in care se filtreaza caracterele speciale.
8) Creati o un formular HTML prin care se introduc numele, prenumele si emailul unei
persoane. Creati un servlet care sa afiseze numele parametrilor si a valorilor acestora. Daca o
valoare nu este introdusa atunci se va afisa o valoare predefinita (ex: email lipsa).
9) Modificati servletul anterior astfel incat sa se filtreze valorile introduse.
10) Creati un servlet sa permita introducerea valorilor de la problema 8 (nume, prenume,
email). Valorile introduse vor fi validate astfel:
- daca o valoare nu este completata, atunci se va fisa un mesaj corespunzator pentru campul
respectiv, avand culoarea rosie (ex: Trebuie introdus numele) si se va reafisa formularul pentru
completarea valorilor lipsa;
- daca toate valorile sunt completate atunci se vor afisa parametrii si numele lor.
Obs: se apeleaza metoda response.SendRedirect()
11) Creati un fomular index.html din care se pot apela toate exercitiile laboratorului.