În acest articol, într-o formă concisă, sunt prezentate fundamentele structurii servletului. De obicei, acest tip de material este suficient pentru a obține o idee despre tehnologia Servlets Java.
Servlet Sarcini
- Citirea datelor explicite trimise de aplicația client (formulare de date, câmpuri)
- Citirea datelor implicite trimise de aplicația client (de exemplu, antetele de cerere)
- Construirea rezultatului prelucrării datelor primite.
- Trimiterea de date explicite către client (de exemplu, datele HTML care vor fi afișate pe pagină).
- Trimiterea datelor implicite către client (coduri de stare, anteturi de răspuns).
Astfel, clientul accesează servletul folosind cereri HTTP care conțin atât datele formularului, cât și anteturile necesare. Servletul generează un răspuns care conține date din surse diferite, folosind diverse tehnologii pentru aceasta. Răspunsul serverului în sine este aceeași solicitare HTTP.
Cele mai simple servlete
Să luăm în considerare exemplele servlet și caracteristicile acestora.
Servlet care generează text simplu
Luați în considerare următorul exemplu:
Să analizăm acest cod de mai sus.
- @Webservlet ("/ adresa") - o adnotare care conține calea relativă la servlet, mai multe detalii sunt scrise mai jos.
- doGet este metoda responsabilă pentru gestionarea cererilor GET. Pentru solicitările POST, se folosește metoda doPost
- HttpServletRequest - conține tot ce a fost primit de la client
- HttpServletResponse - folosit pentru a trimite date către client. Metoda getWriter este folosită în principal pentru a obține PrintWriter care direcționează datele către client.
În serverul nostru de testare, gazda este doar localhost, vedeți numele proiectului în lista de proiecte și calea din adnotare este calea relativă specificată în adnotarea @Webservlet.
Servlet care generează codul paginii HTML
Rezultatul servletului anterior este doar un text care nu conține etichete HTML. Pentru a genera pe deplin o pagină utilizând HTML, trebuie să includem etichetele necesare în corpul de răspuns și să setăm și antetul de răspuns ca "text / html".
Copiați clasa anterioară și adăugați modificările:
Ieșirea servletului:
Utilizarea clasei de ajutor
Plasarea întregii logici în servlet este justificată doar pentru proiectele foarte simple, iar pentru mai mult sau mai puțin gravă este necesar să se folosească clase auxiliare, ghidate de următoarele principii.
- Tot codul Java se află într-un singur loc. În Eclipe, este src /<имя пакета>.
- Amintiți-vă principiile POR. Dacă este folosit de multe ori funcțional, duceți-l la clasa de ajutor.
Un exemplu simplu
Următoarea este un exemplu de utilizare a unei clase auxiliare pentru a genera antetul paginii din exemplul anterior. Firește, generarea de coduri HTML pure în cadrul aplicațiilor reale este o sarcină ingrată, este mai bine să folosiți JSP. Dar încercăm să vedem principiile construirii servlet-urilor și, până acum, vom folosi cea mai simplă versiune. Se presupune că generarea antetului paginii este o funcție frecvent utilizată care apare în toate servlet-urile proiectului care generează cod HTML. Prin urmare, va fi extrem de util să luați această logică dincolo de servlets la clasa auxiliară:
Utilizarea acestei clase în servlet arată astfel:
În browser vom vedea pagina colectată:
Ciclul de viață al servletului
Fiecare servlet implementează un anumit set de metode care determină ciclul său de viață:
- init - această metodă este denumită prima dată când servletul este încărcat. Asta nu este cu fiecare cerere.
- serviciu - este numit într-un fir nou pentru fiecare cerere. Gestionează doGet, doPost, etc. Nu suprascrie această metodă!
- doGet, doPost, nu. - sunt numite atunci când, respectiv, GET, POST și alte cereri. Înlocuiți aceste metode pentru a procesa cererile de tipul solicitat.
- distrugere - se numește atunci când serverul șterge obiectul servlet. Nu este chemat după fiecare cerere.
De ce nu redefiniți serviciul
Această metodă nu numește doar doGet, ci prelucrează automat cererile HEAD, OPTIONS, TRACE. Puteți procesa diverse interogări utilizând metodele potrivite (doPut, doTrace, etc.).
Codul sursă pentru proiectul Eclipse poate fi descărcat de pe linkul de mai jos.