Documente Academic
Documente Profesional
Documente Cultură
Tutorial Servelturi v2
Tutorial Servelturi v2
Vedere de ansamblu
Arhitectura servleturilor
Taskurile servleturilor
Citirea de date explicite trimise de clienti (browsere)
Citirea implicita a cererii(request) HTTP – cookieuri, tipuri media,scheme
de compresie samd..
Procesarea datelor si generarea de rezultate (procesul poate cere
comunicarea cu baza de date sau executarea unui apel RMI sau CORBA)
Trimiterea de date explicite (documente) clientilor (browsere)
Trimiterea de raspunsuri http implicite clientilor (browsere)
Pachetele de servleturi
Javax.servlet
Javax.servlet.http
Metoda init()
Metoda service()
Este metoda de serviciu principala care face task-ul curent
Containerul servlet (serverul web) apeleaza metoda service pentru a
gestiona cereri venite de la clienti(browsere) si pentru a scrie raspunsul
prelucrat inapoi la clienti
semnatura
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
}
metoda service() este apelata de container si metoda service invoca
metoda apropiata de tip doGet, doPost, doPut, doDelete etc
Metoda doGet()
o cerere GET rezultata dintr-un request normal GET pentru un URL dintr-
un formular HTML care nu are nici o alta metoda specificata ar trebui
gestionat(handled) de o metoda doGet()
Metoda doPost()
o cerere POST rezultata dintr-un form HTML care specifica POST ca
metoda ar trebui gestionat de metoda doPost()
Mertoda destroy()
este apelata o singura data la finalul ciclului de viata al unui servelt
ofera servletului sansa de a inchide conexiunile la baza de date, sa
opreasca thread-uri din background, sa scrie lista de cookiuri pe disc, sau
sa faca alte activitati de cleanup
Diagrama arhitecturii
Intai, cererea(request) HTTP venita de la servereste delegata
containerului servlet
Containerul servlet incarca servletul inainte de a invoca metoda service()
Containerul servletului gestioneaza mai multe cereri prin plasarea mai
multor thread-uri, fiecare thread executand metoda service() a unei
singure instante a servletului
Exemplu
Servleturile sunt clase Java cu servicii de cereri(request) HTTP si
implementeaza interfata javax.servlet.Servlet
Exemplu practic
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// Do required initialization
response.setContentType("text/html");
}
public void destroy() {
// do nothing.
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
Date de formulare (Form data)
Pot fi multe situatii cand este necesar sa trecem informatii din browser
catre serverul web si in final catre programul de backend
Browserul foloseste 2 metode pentru a trimite informatii catre serverul
web. Aceste metode sunt GET si POST
Metoda GET
o Trimite informatii codate puse la sfarsitul cererii
o Exemplu
http://www.test.com/hello?key1 = value1&key2 = value2
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
if (session.isNew()) {
session.setAttribute(userIDKey, userID);
} else {
visitCount = (Integer)session.getAttribute(visitCountKey);
visitCount = visitCount + 1;
userID = (String)session.getAttribute(userIDKey);
session.setAttribute(visitCountKey, visitCount);
response.setContentType("text/html");
String docType =
"transitional//en\">\n";
out.println(docType + "<html>\n" +
</tr>\n" +
"<tr>\n" +
" <td>id</td>\n" +
</tr>\n" +
"<tr>\n" +
</tr>\n" +
"<tr>\n" +
</tr>\n" +
"<tr>\n" +
"<tr>\n" +
</tr>\n" +
"</table>\n" +
"</body>
</html>"
);