Sobes.tech
Middle

HttpServlet класында HTTP суроо иштетүү кандай жүргүзүлөт?

sobes.tech AI

AIден жооп

HTTP суроо-талаптын иштетилиши HttpServlet класында doGet, doPost, doPut, doDelete, doHead, doOptions, doTrace же service методдорунун бирин кайра жазуу аркылуу жүргүзүлөт.

Суроо-талап иштетүүнүн өмүр цикли:

  1. Servlet контейнери (мисалы, Tomcat) HTTP-суроону алат.
  2. Контейнер суроо-талап URLине негизделип тиешелүү сервлетти аныктайт.
  3. Эгер сервлет дагы жүктөлбөсө, контейнер аны түзүп, init() методун бир жолу чакырып, пулга коет.
  4. Контейнер HttpServletRequest жана HttpServletResponse объекттерин түзөт, алар суроо маалыматтарын камтыйт жана жооп түзүү үчүн методдорду камсыз кылат.
  5. Контейнер сервлеттин service(HttpServletRequest req, HttpServletResponse resp) методун чакырет.
  6. Стандарттык service ишке ашырылышында HTTP-методдун түрүн аныктайт (GET, POST ж.б.) жана тиешелүү do<Method> методуна өткөрөт (doGet, doPost ж.б.), суроо жана жооп объекттерин берүү менен.
  7. Өнүктүрүүчү do<Method> методун кайра жазып, суроо үчүн өзгөчө логиканы ишке ашырат.
  8. do<Method> методу жооп түзүп, маалыматты HttpServletResponseка жазат.
  9. service методу аяктагандан кийин, контейнер түзүлгөн жоопту кардарга жиберет.
  10. Контейнер сервлетти жүктөн чыгарууга чечим кабыл алганда (мисалы, колдонмону токтотуу учурунда), ал destroy() методун чакырып, ресурстарды бошотот.

doGet методун кайра жазуу мисалы:

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 {
        // Жооптун мазмун түрү жана кодировкасын орнотуу
        response.setContentType("text/html;charset=UTF-8");

        // Жоопту жазуу үчүн PrintWriter алуу
        try (PrintWriter out = response.getWriter()) {
            // HTML белгилерин жоопко жазуу
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Кош келиңиз</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Менин сервлетимден салам!</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }
}

do<Method> методторунун негизги функциялары жана максаты:

Метод Максаты
doGet GET-талаптарды иштетүү (маалымат алуу, идемпотенттүү операциялар).
doPost POST-талаптарды иштетүү (маалыматтарды жөнөтүү жана иштетүү, ресурстарды түзүү).
doPut PUT-талаптарды иштетүү (ресурстарды жаңылоо).
doDelete DELETE-талаптарды иштетүү (ресурстарды өчүрүү).
doHead HEAD-талаптарды иштетүү (жооптун гана башталыштарын алуу).
doOptions OPTIONS-талаптарды иштетүү (жарактуу ыкмалар тууралуу маалымат алуу).
doTrace TRACE-талаптарды иштетүү (отладка, суроо-талапты эхо).

service методун кайра жазуу суроо-талапты маршрутизациялоонун логикасын толугу менен өзгөртүүгө мүмкүндүк берет, бирок көбүнчө do<Method> методдору кайра жазылат.