Middle
HttpServlet класында HTTP суроо иштетүү кандай жүргүзүлөт?
sobes.tech AI
AIден жооп
HTTP суроо-талаптын иштетилиши HttpServlet класында doGet, doPost, doPut, doDelete, doHead, doOptions, doTrace же service методдорунун бирин кайра жазуу аркылуу жүргүзүлөт.
Суроо-талап иштетүүнүн өмүр цикли:
- Servlet контейнери (мисалы, Tomcat) HTTP-суроону алат.
- Контейнер суроо-талап URLине негизделип тиешелүү сервлетти аныктайт.
- Эгер сервлет дагы жүктөлбөсө, контейнер аны түзүп,
init()методун бир жолу чакырып, пулга коет. - Контейнер
HttpServletRequestжанаHttpServletResponseобъекттерин түзөт, алар суроо маалыматтарын камтыйт жана жооп түзүү үчүн методдорду камсыз кылат. - Контейнер сервлеттин
service(HttpServletRequest req, HttpServletResponse resp)методун чакырет. - Стандарттык
serviceишке ашырылышында HTTP-методдун түрүн аныктайт (GET, POST ж.б.) жана тиешелүүdo<Method>методуна өткөрөт (doGet,doPostж.б.), суроо жана жооп объекттерин берүү менен. - Өнүктүрүүчү
do<Method>методун кайра жазып, суроо үчүн өзгөчө логиканы ишке ашырат. do<Method>методу жооп түзүп, маалыматтыHttpServletResponseка жазат.serviceметоду аяктагандан кийин, контейнер түзүлгөн жоопту кардарга жиберет.- Контейнер сервлетти жүктөн чыгарууга чечим кабыл алганда (мисалы, колдонмону токтотуу учурунда), ал
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> методдору кайра жазылат.