Middle
HttpServlet sınıfında HTTP isteği nasıl işlenir?
sobes.tech yapay zeka
AI'dan gelen yanıt
HttpServlet sınıfında HTTP isteği işleme, doGet, doPost, doPut, doDelete, doHead, doOptions, doTrace veya service metodlarından birini geçersiz kılmak suretiyle gerçekleştirilir.
İstek işleme yaşam döngüsü:
- Servlet konteyneri (örneğin, Tomcat) HTTP isteğini alır.
- Konteyner, isteğin URL'sine göre uygun servlet'i belirler.
- Eğer servlet henüz yüklenmemişse, konteyner bir örneğini oluşturur,
init()metodunu çağırır (tüm servlet ömrü boyunca sadece bir kez) ve havuza ekler. - Konteyner, isteği ve yanıtı kapsülleyen
HttpServletRequestveHttpServletResponsenesnelerini oluşturur ve yanıtı şekillendirmek için metodlar sağlar. - Konteyner, servlet'in
service(HttpServletRequest req, HttpServletResponse resp)metodunu çağırır. - Varsayılan
serviceuygulaması, HTTP metodunun türünü (GET, POST vb.) belirler ve uygundo<Method>metoduna (doGet,doPostvb.) devreder, isteği ve yanıt nesnelerini geçirir. - Geliştirici, isteğin belirli mantığını uygulamak için gerekli
do<Method>metodunu geçersiz kılar. do<Method>metodu, yanıtı oluşturarakHttpServletResponseiçine veri yazar.servicemetodunun tamamlanmasının ardından, konteyner oluşturulan yanıtı istemciye gönderir.- Konteyner, servlet'i boşaltmaya karar verdiğinde (örneğin, uygulama durdurulurken), kaynakları serbest bırakmak için
destroy()metodunu çağırır.
doGet metodunun geçersiz kılınmasına örnek:
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 {
// Yanıtın içerik tipi ve kodlamasını ayarla
response.setContentType("text/html;charset=UTF-8");
// Yanıtı yazmak için PrintWriter al
try (PrintWriter out = response.getWriter()) {
// HTML içeriği yaz
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Selam</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet'imden merhaba!</h1>");
out.println("</body>");
out.println("</html>");
}
}
}
Ana do<Method> metodları ve amaçları tablosu:
| Metod | Amaç |
|---|---|
doGet |
GET isteklerini işleme (veri alma, idempotent işlemler). |
doPost |
POST isteklerini işleme (veri gönderme, kaynak oluşturma). |
doPut |
PUT isteklerini işleme (kaynakları güncelleme). |
doDelete |
DELETE isteklerini işleme (kaynakları silme). |
doHead |
HEAD isteklerini işleme (yanıt başlıklarını alma). |
doOptions |
OPTIONS isteklerini işleme (mevcut metodlar hakkında bilgi alma). |
doTrace |
TRACE isteklerini işleme (hata ayıklama, isteğin yankısı). |
service metodunun geçersiz kılınması, isteklerin yönlendirilme mantığını tamamen yeniden tanımlamaya olanak tanır, ancak genellikle belirli do<Method> metodları geçersiz kılınır.