Кіріспе

Jakarta EE бағдарламалау тілі сабағы

Jakarta Servlet, бұрын Java Servlet – сервердің мүмкіндіктерін кеңейтетін Java бағдарламалық компоненті. Сервлеттер көптеген сұранымдарға жауап бере алса да, олар көбінесе веб-серверлерде веб-қосымшаларды хостингтеу үшін веб-контейнерлерді іске асырады, соның салдарынан серверлік сервлет веб-API ретінде қарастырылады. Мұндай веб-сервлеттер PHP және ASP.NET сияқты басқа динамикалық веб-контент технологияларының Java нұсқасы болып табылады.

Кіріспе

Jakarta Servlet — Jakarta EE-дегі Java класы, ол Jakarta Servlet API-ге сәйкес келеді, бұл Java-ның сұранысқа жауап беретін кластарын іске асыру стандарты. Сервлеттер, қағида бойынша, кез келген клиент-сервер протоколы арқылы байланыса алады, бірақ олар көбінесе HTTP-мен қолданылады. Принцип бойынша, кез келген сервлеттер класты кеңейте алады; алайда, нақты айтқанда, барлық сервлеттер класты кеңейтеді. Осылайша "servlet" жиі "HTTP servlet" дегеннің қысқартуы ретінде қолданылады. Осылайша, сервлетті Java платформасын пайдалана отырып, веб-серверге динамикалық мазмұн қосу үшін пайдалануға болады. Шығарылған мазмұн әдетте HTML болып табылады, бірақ XML және көбінесе JSON сияқты басқа деректер де болуы мүмкін. Jakarta Servlet API веб-қызметтер үшін екі стандартты Java технологиясымен толықтырылды: AJAX, JSON және REST қызметтері үшін пайдалы Jakarta RESTful Web Services (JAX RS 2.0) және SOAP веб-қызметтері үшін пайдалы Jakarta XML Web Services (JAX WS). Сервлет – бұл сұрауды қабылдайтын және осы сұраудың негізінде жауап жасайтын объект. Servlet негізгі пакеті Java объектілерін, сервлет сұраныстарын және жауаптарын, сондай-ақ сервлеттің конфигурациялық параметрлері мен орындалу ортасын көрсететін объектілерді анықтайды. Java пакеті иерархиясында қамтылған Servlet API веб-контейнер мен сервлеттің күтілетін өзара әрекеттесуін анықтайды. Конференцияда жарияланғаннан екі ай өткен соң, JavaSoft веб-сайтында алғашқы жариялы іске асыру қолжеткізілді. Бұл Java Web Server (JWS; кейін Jeeves коднамымен белгілі болған) альфа нұсқасы болды, ол 1997 жылдың 5 маусымында өнім ретінде шығарылды. java.net блогында Sun компаниясының тәжірибелі қызметкері және GlassFish жетекшісі Джим Дрисколл сервлет технологиясының тарихын баяндайды. Джеймс Гослинг Java-ның алғашқы күндерінде сервлеттер туралы ойлады, бірақ бұл идея 1996 жылдың желтоқсанында Sun JWS-ті шығарғанға дейін өнімге айналмады. Бұл қазіргі Jakarta EE спецификацияға айналмаған кезде болды. Servlet1 спецификациясын Pavni Diwanji Sun Microsystems компаниясында жұмыс істеген кезде жасады, ал 1.0 нұсқасы 1997 жылдың маусымында аяқталды. 2.2 нұсқасынан бастап, спецификация Java Community Process аясында әзірленді. + Servlet API тарихы Servlet API нұсқасы Шығарылған күні Спецификация Платформа Маңызды өзгерістер Jakarta Servlet 6.0 2022 жылдың 31 мамыры 6.0 Jakarta EE 10 Ескірген мүмкіндіктерді алып тастау және қажетті жақсартуларды енгізу Jakarta Servlet 5.0 2020 жылдың 9 қазаны 5.0 Jakarta EE 9 API пакеттен Jakarta Servlet 4.0.3 2019 жылдың 10 қыркүйегі 4.0 Jakarta EE 8 "Java" тауарлық белгісінен Jakarta Servlet 4.0 2017 жыл қыркүйек JSR 369 Java EE 8 HTTP/2 Java Servlet 3.1 2013 жылдың мамыры JSR 340 Java EE 7 Блоктаусыз I/O, HTTP протоколын жаңарту механизмі (WebSocket) Java Servlet 3.0 2009 жылдың желтоқсаны JSR 315 Java EE 6, Java SE 6 Қосылу мүмкіндігі, Дамытудың қарапайымдығы, Асинхронды сервлет, Қауіпсіздік, Файл жүктеу Java Servlet 2.5 2005 жылдың қыркүйегі JSR 154 Java EE 5, Java SE 5 Java SE 5 талап етеді, түсіндірмелерді қолдайды Java Servlet 2.4 2003 жылдың қарашасы JSR 154 J2EE 1.4, J2SE 1.3 web.xml XML схемасын қолданады Java Servlet 2.3 2001 жылдың тамызы JSR 53 J2EE 1.3, J2SE 1.2 Сүзгі қосылды Java Servlet 2.2 1999 жылдың тамызы JSR 902, JSR 903 J2EE 1.2, J2SE 1.2 J2EE құрамына кірді, war файлдарында тәуелсіз веб-қосымшалар енгізілді Java Servlet 2.1 1998 жылдың қарашасы 2.1a Белгісіз Бірінші ресми спецификация, RequestDispatcher, ServletContext қосылды Java Servlet 2.0 1997 жылдың желтоқсаны JDK 1.1 1998 жылдың сәуірінің бөлігі Java Servlet Development Kit 2.0 Java Servlet 1.0 1996 жылдың желтоқсаны 1997 жылдың маусымының бөлігі Java Servlet Development Kit (JSDK) 1.0

Сервлеттің өмірлік циклі

Сервлеттің өмірлік циклында үш әдіс орталық рөл атқарады. Бұл – init, service және destroy. Олар әр сервлеттің құрамында жүзеге асырылады және сервер оларды белгілі бір уақытта шақырады. Сервлеттің өмірлік циклының инициализация кезеңінде веб-контейнер сервлеттің мысалын инициализациялайды, javax.servlet.ServletConfig интерфейсін іске асыратын объектіні init әдісіне жібереді. Бұл конфигурациялық объекті сервлетке веб-қосымшадан атау-мәнді инициализация параметрлеріне қол жеткізуге мүмкіндік береді. Инициализациядан кейін сервлеттің мысалы клиенттік сұраныстарды өңдей алады. Әр сұраныс өз жеке жібінде өңделеді. Веб-контейнер әр сұраныс үшін сервлеттің service әдісін шақырады. Service әдісі сұраныстың түрін анықтайды және оны өңдеу үшін тиісті әдіске жібереді. Сервлеттің әзірлеушісі осы әдістерді іске асыруын қамтамасыз етуі керек. Егер сервлетте іске асырылмаған әдіс үшін сұрау түскен жағдайда, ата-ана кластың әдісі шақырылады, бұл әдетте сұрау жасаушыға қате хабарламаны қайтарумен аяқталады. Соңында, веб-контейнер сервлетті қызметтен шығаратын destroy әдісін шақырады. Init әдісі сияқты, destroy әдісі де сервлеттің өмірлік циклында бір рет ғана шақырылады. Келесісінде осы әдістердің әдеттегі қолданылу сценарийі келтірілген. Егер пайдаланушы URL-ді ашуға сұраныс жасаса, браузер осы URL үшін HTTP сұранысын жасайды. Бұл сұраныс тиісті серверге жіберіледі. Веб-сервер HTTP сұранысын қабылдайды және оны сервлет контейнеріне жібереді. Контейнер бұл сұранысты нақты сервлетке байланыстырады. Сервлет динамикалық түрде алынып, контейнердің адрестік кеңістігіне жүктеледі. Контейнер сервлеттің init әдісін шақырады. Бұл әдіс сервлет алғаш рет жадқа жүктелген кезде ғана шақырылады. Сервлетті конфигурациялау үшін оған инициализация параметрлерін беруге болады. Контейнер сервлеттің service әдісін шақырады. Бұл әдіс HTTP сұранысын өңдеу үшін шақырылады. Сервлет HTTP сұранысында келген деректерді оқи алады. Сервлет клиентке HTTP жауабын да құрастыруы мүмкін. Сервлет контейнердің адрестік кеңістігінде қалады және клиенттерден келген басқа HTTP сұраныстарын өңдеуге дайын болады. Service әдісі әр HTTP сұранысы үшін шақырылады. Контейнер кейбір уақытта сервлетті жадынан шығарып тастауы мүмкін. Бұл шешімді қабылдау алгоритмдері әр контейнерге тән. Контейнер сервлеттің destroy әдісін шақырады, осылай сервлетке бөлінген файл дескрипторлары сияқты ресурстарды босату үшін. Маңызды деректер тұрақты сақтау орынына сақталуы мүмкін. Сервлетке және оның объектілеріне бөлінген жад қоқыс жинауға жіберіледі.

Контейнерлік серверлер

Servlet технологиясының сипаттамасы көптеген өнімдерде іске асырылды. Контейнер веб-бетінде орындалулар тізімін қараңыз. SIP сервлеттеріне арналған сияқты, басқа сервлет контейнерлерінің түрлері де бар, мысалы, SailFin.