Чӣ гуна контейнери сервлетҳо давраи ҳаёти сервлетро идора мекунад? Кадом усулҳо даъват мешаванд ва дар кадом лаҳзаҳо?
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)-ро даъват мекунад. Ин метод дархостро коркард мекунад ва ҷавобро тавлид мекунад. Одатан, он ба методҳои HTTP (doGet,doPostва ғайра) дар синфиHttpServletравона мекунад.// 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 метавонанд параллелӣ даъват шаванд.