Ինչպես է սերվլետների կոնտեյները կառավարում սերվլետի կյանքի ցիկլը: Որ մեթոդները կանչվում են և երբ:
sobes.tech AI
Պատասխան AI-ից
Կոնտեյները կառավարում է սերվլետի կյանքի ցիկլը՝ օգտագործելով հետևյալ մեթոդների շարք. init, service, destroy.
-
Սերվլետի դասի բեռնում: Երբ կոնտեյները ստանում է առաջին հարցումը սերվլետին կամ ծրագրի մեկնարկին (եթե այն կարգավորված է):
-
Սերվլետի օրինակ ստեղծում: Կոնտեյները ստեղծում է սերվլետի դասի մեկ օրինակ ամբողջ ծրագրի համար:
-
init()մեթոդի կանչում: Կոնտեյները մեկ անգամ կանչում էinit(ServletConfig config)մեթոդը օրինակ ստեղծելուց հետո: Այս մեթոդում կարելի է կատարել ինիցիալիզացիա, բեռնել ռեսուրսներ և ստանալ սերվլետի կոնֆիգուրացիա: Այս մեթոդը չպետք է կրկնվի, մինչև սերվլետը ոչնչացվի և նորից ստեղծվի:// java public void init(ServletConfig config) throws ServletException { // Սերվլետի ինիցիալիզացիա this.config = config; // Ինիցիալիզացիոն պարամետրերի ստացում String param = config.getInitParameter("someParam"); } -
service()մեթոդի կանչում: Ամեն ներգնա հարցման համար կոնտեյները կանչում էservice(ServletRequest request, ServletResponse response)մեթոդը: Այս մեթոդը մշակել է հարցումը և ստեղծում պատասխան: Սովորաբար, այն ուղղորդում էHttpServlet-ի հատուկ մեթոդներին (doGet,doPostև այլն):serviceմեթոդը բազմամեղանոց է, և կոնտեյները կարող է միաժամանակ կանչել այն մի քանի հարցումների համար:// java public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // Հարցման տիպի ստուգում և համապատասխան մեթոդի կանչում if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) { // ուղղորդում `HttpServlet`-ին super.service(request, response); } else { // այլ տիպի հարցումների մշակումը throw new ServletException("Նպաստվում են միայն HTTP հարցումներ"); } } // օրինակ `doXXX` մեթոդի `HttpServlet`-ում protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // GET հարցման մշակումը response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>Բարև</h1>"); } -
destroy()մեթոդի կանչում: Կոնտեյները մեկ անգամ կանչում էdestroy()մեթոդը նախքան սերվլետի օրինակն ոչնչացնելը: Դա տեղի է ունենում ծրագրի կանգառի ժամանակ կամ երբ սերվլետը հեռացվում է կոնտեյներից: Այս մեթոդում ազատվում են ռեսուրսները (օրինակ, փակվում են կապերը տվյալների բազայի կամ ֆայլերի հետ):destroy-ի կանչից հետո կոնտեյները կարող է կատարել աղբամուտի հավաքում սերվլետի օրինակով:// java public void destroy() { // Ռեսուրսների ազատում // Օրինակ, կապերի փակում }
Կայքի ցիկլը կարելի է ներկայացնել աղյուսակում:
| Մեթոդ | Կոչվում է | Նպատակը |
|---|---|---|
init() |
Միայն մեկ անգամ սերվլետի օրինակ ստեղծելուց հետո | Ինիցիալիզացիա, ռեսուրսների բեռնում |
service() |
Ամեն ներգնա հարցման համար | Հարցման մշակումը, պատասխան ստեղծելը |
destroy() |
Միայն մեկ անգամ սերվլետի օրինակ ոչնչացնելուց առաջ | Ռեսուրսների ազատում, աշխատանքը ավարտել |
Կոնտեյները ապահովում է, որ init-ը կանչվի service-ից առաջ, իսկ destroy-ըվերջինservice-ից հետո: service` մեթոդները կարող են գործարկել միաժամանակ։