Middle
Kā tiek apstrādāta HTTP pieprasījums HttpServlet klasē?
sobes.tech AI
Atbilde no AI
HTTP pieprasījuma apstrāde HttpServlet klasē tiek veikta, pārrakstot vienu no doGet, doPost, doPut, doDelete, doHead, doOptions, doTrace vai service metodiem.
Pieprasījuma apstrādes cikls:
- Servleta konteineris (piemēram, Tomcat) saņem HTTP pieprasījumu.
- Konteineris nosaka atbilstošo servletu pēc pieprasījuma URL.
- Ja servlets vēl nav ielādēts, tas tiek izveidots, izsaucot
init()metodi (vienu reizi visas servleta dzīves laikā) un ievieto to pīlā. - Konteineris izveido
HttpServletRequestunHttpServletResponseobjektus, kas ietver pieprasījuma datus un nodrošina metodes atbildes veidošanai. - Konteineris izsauc servleta
service(HttpServletRequest req, HttpServletResponse resp)metodi. - Pēc noklusējuma,
servicenosaka HTTP metodes tipu (GET, POST utt.) un nosūta apstrādi atbilstošajamdo<Method>metodei (doGet,doPostutt.), nododot pieprasījuma un atbildes objektus. - Izstrādātājs pārraksta nepieciešamo
do<Method>metodi, lai realizētu specifisku pieprasījuma apstrādes loģiku. do<Method>metode veido atbildi, ierakstot datusHttpServletResponse.- Pēc
servicemetodes pabeigšanas, konteineris nosūta izveidoto atbildi klientam. - Kad konteineris nolemj izkraut servletu (piemēram, pārtraucot lietojumprogrammu), tas izsauc
destroy()metodi resursu atbrīvošanai.
doGet pārrakstīšanas piemērs:
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 {
// Iestatīt satura tipu un kodējumu
response.setContentType("text/html;charset=UTF-8");
// Iegūt PrintWriter objektu atbildei rakstīt
try (PrintWriter out = response.getWriter()) {
// Rakstīt HTML marķējumu atbildē
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Sveiciens</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Sveiki no mana servleta!</h1>");
out.println("</body>");
out.println("</html>");
}
}
}
Galvenie do<Method> metodi un to mērķis tabulā:
| Metode | Mērķis |
|---|---|
doGet |
GET pieprasījumu apstrāde (datu saņemšana, idempotentās operācijas). |
doPost |
POST pieprasījumu apstrāde (datu sūtīšana apstrādei, resursu izveide). |
doPut |
PUT pieprasījumu apstrāde (resursu atjaunināšana). |
doDelete |
DELETE pieprasījumu apstrāde (resursu dzēšana). |
doHead |
HEAD pieprasījumu apstrāde (tikai atbildes galvenes). |
doOptions |
OPTIONS pieprasījumu apstrāde (pieejamo metožu informācijas saņemšana). |
doTrace |
TRACE pieprasījumu apstrāde (atkļūdošana, pieprasījuma atbilde). |
service metodes pārrakstīšana ļauj pilnībā pārveidot pieprasījumu maršrutizācijas loģiku, bet parasti pārraksta specifiskos do<Method> metodes.