Сервлеттин жашоо циклин башкарган сервлет контейнери кандай? Канча ыкма чакырылат жана кайсы учурларда?
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ж.б. методдорго багытталат.// 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 суроолорду колдойт"); } } // `HttpServlet`теги doXXX методунун мисалы 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 методдору параллелдүү болушу мүмкүн.