Middle
HttpServlet sinifində HTTP sorğusu necə işlənir?
sobes.tech Süni İntellekt
AI-dan cavab
HttpServlet sinifində HTTP sorğusunun işlənməsi doGet, doPost, doPut, doDelete, doHead, doOptions və ya service metodlarından birinin yenidən yazılması ilə həyata keçirilir.
Sorğu işləmə həyat dövrü:
- Servlet konteyneri (məsələn, Tomcat) HTTP sorğusunu alır.
- Konteyner sorğu URL-ə əsasən müvafiq servlet-i müəyyən edir.
- Əgər servlet hələ yüklənməyibsə, konteyner onun nümunəsini yaradır,
init()metodunu çağırır (servlet-in bütün həyat dövrü boyunca bir dəfə) və onu havuzda saxlayır. - Konteyner
HttpServletRequestvəHttpServletResponseobyektlərini yaradır, sorğu məlumatlarını inkapsulyasiya edir və cavabın formalaşdırılması üçün metodlar təqdim edir. - Konteyner servlet-in
service(HttpServletRequest req, HttpServletResponse resp)metodunu çağırır. - Əsasən
servicemetodunda HTTP metodunun (GET, POST və s.) növü müəyyən edilir və müvafiqdo<Method>metoduna (doGet,doPostvə s.) sorğu və cavab obyektləri ilə ötürülür. - Tərtibçi
do<Method>metodunu yenidən yazır və sorğuya xüsusi işləmə loqikasını həyata keçirir. do<Method>metodu cavabı formalaşdırır vəHttpServletResponse-ə məlumat yazır.servicemetodunun işləməsi bitdikdən sonra konteyner formalaşdırılmış cavabı müştəriyə göndərir.- Konteyner servlet-i yükləməkdən imtina etdikdə (məsələn, tətbiq dayandırıldıqda), o, resursların azad olunması üçün
destroy()metodunu çağırır.
doGet metodunun yenidən yazılması nümunəsi:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Cavabın məzmun tipi və kodlaşdırmasını təyin et
response.setContentType("text/html;charset=UTF-8");
// Cavaba yazmaq üçün PrintWriter əldə et
try (PrintWriter out = response.getWriter()) {
// HTML kodunu cavaba yaz
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Xoş gəlmisiniz</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servletimdən salam!</h1>");
out.println("</body>");
out.println("</html>");
}
}
}
do<Method> metodlarının əsas funksiyalarını və məqsədlərini göstərən cədvəl:
| Metod | Təyinatı |
|---|---|
doGet |
GET sorğularını işləyir (məlumatların alınması, idempotent əməliyyatlar). |
doPost |
POST sorğularını işləyir (məlumatların göndərilməsi və emalı, resursların yaradılması). |
doPut |
PUT sorğularını işləyir (resursların yenilənməsi). |
doDelete |
DELETE sorğularını işləyir (resursların silinməsi). |
doHead |
HEAD sorğularını işləyir (yalnız cavab başlıqlarını alma). |
doOptions |
OPTIONS sorğularını işləyir (mövcud metodlar haqqında məlumat alma). |
doTrace |
TRACE sorğularını işləyir (dəstək və sorğu ekosunu yoxlama). |
service metodunun yenidən yazılması sorğu yönləndirmə loqikasını tamamilə dəyişməyə imkan verir, lakin adətən do<Method> metodları yenidən yazılır.