Middle
Ինչպես է կատարվում HTTP հարցման մշակումը HttpServlet դասում?
sobes.tech AI
Պատասխան AI-ից
HTTP-պահանջի մշակումը HttpServlet դասում կատարվում է doGet, doPost, doPut, doDelete, doHead, doOptions, doTrace կամ service մեթոդներից մեկի վերագրումով:
Հարցման մշակման ցիկլը՝
- Սերվլետների կոնտեյները (օրինակ, Tomcat) ստանում է HTTP-հարցումը:
- Կոնտեյները որոշում է համապատասխան սերվլետը հարցման URL-ով:
- Եթե սերվլետը դեռ չի բեռնված, կոնտեյները այն ստեղծում է, կանչում
init()մեթոդը (մեկ անգամ ողջ կյանքի ընթացքում) և տեղադրում է պուլում: - Կոնտեյները ստեղծում է
HttpServletRequestևHttpServletResponseօբյեկտները, որոնք պարունակում են հարցման տվյալները և տրամադրում մեթոդներ պատասխան ձևավորելու համար: - Կոնտեյները կանչում է սերվլետի
service(HttpServletRequest req, HttpServletResponse resp)մեթոդը: - Ստանդարտ
service-ի իրականացման ժամանակ, որոշում է HTTP մեթոդի տեսակն (GET, POST և այլն) և փոխանցում համապատասխանdo<Method>մեթոդին՝ հարցման և պատասխանների օբյեկտները փոխանցելով: - Ծրագրավորողը վերագրում է անհրաժեշտ
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 markup-ը գրել պատասխանին
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> մեթոդները: