Джакарта Сервлет - Википедия - Jakarta Servlet

Джакарта Сервлет
Түпнұсқа автор (лар)Павни Диуанжи
ӘзірлеушілерEclipse Foundation
Бастапқы шығарылымЖелтоқсан 1996; 24 жыл бұрын (1996-12)
Тұрақты шығарылым
5.0 / 2020 жылдың 7 қыркүйегі; 3 ай бұрын (2020-09-07)
Репозиторий Мұны Wikidata-да өңдеңіз
ЖазылғанJava
ПлатформаДжакарта 9
Өлшемі2,56 МБ
ТүріБағдарламалық жасақтама компоненті үшін Web API
ЛицензияEclipse Public License
Веб-сайтДжакарта.ее/ сипаттамалары/ сервлет/5.0/
А. Өмірі JSP файл

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

Кіріспе

Джакарта сервлеті а өңдейді немесе сақтайды Java сыныбы жылы Джакарта ол Джакарта Сервлет API сәйкес келеді,[1] сұраныстарға жауап беретін Java сыныптарын енгізу стандарты. Сервлеттер негізінен кез-келген адаммен сөйлесе алады клиент-сервер хаттама, бірақ олар көбінесе бірге қолданылады HTTP. Осылайша, «сервлет» көбінесе «HTTP сервлет» үшін стенография ретінде қолданылады.[2] Осылайша, а бағдарламалық жасақтама жасаушы қосу үшін сервлетті қолдануы мүмкін динамикалық мазмұн а веб-сервер пайдаланып Java платформасы. Жасалған мазмұн әдетте HTML сияқты басқа деректер болуы мүмкін XML және көбінесе JSON. Сервлет күтіп ұстай алады мемлекет жылы сессия пайдалану арқылы көптеген серверлік транзакциялардағы айнымалылар HTTP cookies файлдары, немесе URL мекенжайын салыстыру.

Джакарта сервлет API-сі белгілі бір дәрежеде веб-қызметтерге арналған екі стандартты Java технологиясымен ауыстырылды:

Сервлетті орналастыру және іске қосу үшін, а веб-контейнер қолданылуы керек. Веб-контейнер (сервлет контейнері деп те аталады), негізінен сервлеттермен өзара әрекеттесетін веб-сервердің құрамдас бөлігі болып табылады. Веб-контейнер сервлеттердің өмірлік циклын басқаруға, белгілі бір сервлетке URL мекен-жайын салыстыруға және URL сұраушысының дұрыс қол жеткізу құқықтарына ие болуына жауап береді.

Сервлет API, құрамында Java пакеті иерархия javax.servlet, веб-контейнер мен сервлеттің күтілетін өзара әрекеттесуін анықтайды.[2]

A Сервлет болып табылады объект ол сұрауды алады және сол сұрау негізінде жауап береді. Серветтің негізгі пакеті сервлеттің сұраныстары мен жауаптарын ұсынатын Java нысандарын, сондай-ақ сервлеттің конфигурация параметрлері мен орындау ортасын бейнелейтін объектілерді анықтайды. Пакет javax.servlet.http анықтайды HTTP - веб-сервер мен клиент арасындағы бірнеше сұраныстар мен жауаптарды бақылайтын сеансты басқару нысандарын қоса, жалпы сервлет элементтерінің арнайы ішкі сыныптары. Сервлет а. Пакетке оралуы мүмкін WAR файлы сияқты веб-қосымша.

Сервлеттерді автоматты түрде жасауға болады Джакарта серверінің беттері (JSP) арқылы Джакарта Server Pages компиляторы. Сервлеттер мен JSP арасындағы айырмашылық, сервлеттер әдетте HTML кодын Java кодына енгізеді, ал JSPs Java кодын HTML-ге енгізеді. Сервлеттерді HTML жасау үшін тікелей пайдалану (төмендегі мысалда көрсетілгендей) сирек кездессе де, Джакарта ЕЭ-де MVC веб-шеңберінің жоғары деңгейі (JSF ) сервлет технологиясын әлі де болса төменгі деңгейдегі сұраныс / жауап өңдеу үшін сервлет технологиясын қолданады FacesServlet. Серплеттерді JSP-мен бірге «» деп аталатын үлгіде пайдалану біршама ескі қолдану болып табылады.2-модель «, бұл дәмі болып табылады модель - көрініс - контроллер.

Servlet-тің қазіргі нұсқасы - 4.0.[3]

Тарих

Java Servlet API алғаш рет ашылу салтанатында жарияланды JavaOne 1996 жылдың мамырындағы конференция.[4][5] Конференциядағы хабарландырулардан екі айға жуық уақыт өткен соң, JavaSoft веб-сайтында алғашқы көпшілікке қол жетімді болды. Бұл Java веб-серверінің (JWS) бірінші альфасы болды, содан кейін оның код атымен белгілі болды Дживес)[6] ол 1997 жылдың 5 маусымында өнім ретінде жіберіледі.[7]

Оның блогында java.net, Күн ардагері және Шыны балық жетекші Джим Дрисколл сервлет технологиясының тарихын егжей-тегжейлі баяндайды.[8] Джеймс Гослинг алғашқы күндері сервлеттер туралы алғашқы ой Java, бірақ тұжырымдама Sun JWS жеткізген 1996 жылдың желтоқсанына дейін өнім бола алмады.[9][10][11] Бұл қазіргі кездегіден бұрын болған Джакарта спецификация бойынша жасалған.

Servlet1 спецификациясын Павни Диуанджи жасаған[12][13] ол жұмыс істеген кезде Sun Microsystems 1.0 нұсқасымен 1997 жылдың маусымында аяқталды. 2.2 нұсқасынан бастап спецификация сәйкес жасалды Java қауымдастық процесі.

Servlet API тарихы
Servlet API нұсқасыБосатылғанТехникалық сипаттамаПлатформаМаңызды өзгерістер
Джакарта Сервлет 5.0.0 M112 маусым, 20205.0Джакарта 9API бумадан жылжытылды javax.servlet дейін джакарта.сервлет
Джакарта сервлет 4.0.313 тамыз 20194.0Джакарта EE 8«Java» сауда белгісінен өзгертілді
Java Servlet 4.0Қыркүйек 2017JSR 369Java EE 8HTTP / 2
Java Servlet 3.1Мамыр 2013JSR 340Java EE 7Бөгетсіз енгізу-шығару, HTTP хаттамасын жаңарту механизмі (WebSocket )[14]
Java Servlet 3.0Желтоқсан 2009JSR 315Java EE 6, Java SE 6Қосылу мүмкіндігі, әзірлеу жеңілдігі, Async Servlet, қауіпсіздік, файл жүктеу
Java Servlet 2.5Қыркүйек 2005JSR 154Java EE 5, Java SE 5Java SE 5 қажет, аннотацияны қолдайды
Java Servlet 2.4Қараша 2003JSR 154J2EE 1.4, J2SE 1.3web.xml XML схемасын қолданады
Java Servlet 2.3Тамыз 200153J2EE 1.3, J2SE 1.2Қосу Сүзгі
Java Servlet 2.21999 ж. ТамызJSR 902, JSR 903J2EE 1.2, J2SE 1.2.War файлдарына тәуелсіз веб-қосымшаларды енгізген J2EE құрамына кіреді
Java Servlet 2.1Қараша 19982.1аАнықталмағанБірінші ресми сипаттама қосылды Диспетчерді сұрау, ServletContext
Java Servlet 2.0Желтоқсан 1997ЖоқJDK 1.1Java Servlet Development Kit 2.0 сәуірінің бөлігі[15]
Java Servlet 1.0Желтоқсан 1996Жоқ1997 жылғы маусымның бөлігі Java Servlet Development Kit (JSDK) 1.0[9]

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

Сервлеттің өмірлік циклында үш әдіс басты болып табылады. Бұлар ішінде(), қызмет (), және жою ().Оларды әр сервлет жүзеге асырады және сервер белгілі бір уақытта шақырады.

  • Сервлет инициализациясы кезеңінде өміршеңдік кезең, веб-контейнер сервлет данасын шақыру арқылы инициализациялайды ішінде() жүзеге асыратын объектіні өткізу әдісі javax.servlet.ServletConfig интерфейс. Бұл конфигурация нысаны сервлеттің қол жеткізуіне мүмкіндік береді атауы веб-қосымшадан инициализация параметрлері.
  • Инициализациядан кейін сервлет данасы клиенттің сұраныстарына қызмет ете алады. Әрқайсысы сұрау өзінің жеке жіпінде қызмет көрсетіледі. Веб-контейнер қызмет () әрбір сұраныс үшін сервлеттің әдісі. The қызмет () әдіс сұраныстың түрін анықтайды және оны сұранысты өңдеу үшін сәйкес әдіске жібереді. Сервлетті жасаушы осы әдістер үшін іске асыруды қамтамасыз етуі керек. Егер сервлет жүзеге асырмаған әдіске сұраныс жасалса, ата-аналық сынып әдісі шақырылады, әдетте қате сұраушыға қайтарылады.
  • Соңында, веб-контейнер жою () сервлетті қызмет көрсетуден шығаратын әдіс. The жою () сияқты әдіс ішінде(), сервлеттің өмірлік циклында тек бір рет аталады.

Төменде осы әдістердің әдеттегі қолданушы сценарийі келтірілген.

  1. Пайдаланушы а-ға кіруді сұрайды делік URL мекен-жайы.
    • Содан кейін шолғыш осы URL үшін HTTP сұрауын жасайды.
    • Содан кейін бұл сұраныс тиісті серверге жіберіледі.
  2. HTTP сұрауын веб-сервер қабылдайды және сервлет контейнеріне жібереді.
    • Контейнер бұл сұранысты белгілі бір сервлетпен салыстырады.
    • Сервлет динамикалық түрде алынады және контейнердің мекенжай кеңістігіне жүктеледі.
  3. Контейнер қоңырау шалады ішінде() сервлеттің әдісі.
    • Бұл әдіс сервлет жадқа алғаш жүктелгенде ғана шақырылады.
    • Сервлетке инициализация параметрлерін өзі конфигурациялауы үшін жіберуге болады.
  4. Контейнер қоңырау шалады қызмет () сервлеттің әдісі.
    • Бұл әдіс HTTP сұранысын өңдеуге арналған.
    • Сервлет HTTP сұрауында берілген деректерді оқи алады.
    • Сервлет клиент үшін HTTP жауабын да құра алады.
  5. Сервлет контейнердің мекенжай кеңістігінде қалады және клиенттерден алынған кез келген басқа HTTP сұраныстарын өңдеуге қол жетімді.
    • The қызмет () әдісі әрбір HTTP сұранысы үшін шақырылады.
  6. Контейнер белгілі бір уақытта сервлетті жадынан шығаруға шешім қабылдауы мүмкін.
    • Бұл шешім қабылданатын алгоритмдер әр контейнерге тән.
  7. Контейнер сервлетті шақырады жою () сервлетке бөлінген кез-келген ресурстардан бас тарту әдісі; маңызды деректер тұрақты дүкенге сақталуы мүмкін.
  8. Сервлетке және оның объектілеріне арналған жадты қоқыс жинауға болады.

Мысал

Келесі мысал сервлет оның неше рет басып шығарады қызмет () әдісі деп аталды.

Ескертіп қой HttpServlet болып табылады GenericServlet, жүзеге асыру Сервлет интерфейс.

The қызмет () әдісі HttpServlet сынып әдіске сұраныстарды жібереді doGet (), doPost (), doPut (), doDelete (), және тағы басқа; HTTP сұранысына сәйкес. Төмендегі мысалда қызмет () жоққа шығарылған және HTTP сұранысының қай әдісі қызмет ететінін ажыратпайды.

импорт java.io.IOException;импорт javax.servlet.ServletConfig;импорт javax.servlet.ServletException;импорт javax.servlet.http.HttpServlet;импорт javax.servlet.http.HttpServletRequest;импорт javax.servlet.http.HttpServletResponse;қоғамдық сынып ServletLifeCycleErmal ұзарады HttpServlet {    жеке Бүтін sharedCounter;    @Override    қоғамдық жарамсыз ішінде(ақтық ServletConfig конфигурация) лақтырады ServletException {        тамаша.ішінде(конфигурация);        getServletContext().журнал(«init () деп аталады»);        sharedCounter = 0;    }    @Override    қорғалған жарамсыз қызмет(ақтық HttpServletRequest сұрау, ақтық HttpServletResponse жауап) лақтырады ServletException, IOException {        getServletContext().журнал(«қызмет ()»);        int localCounter;        синхрондалған (sharedCounter) {              sharedCounter++;              localCounter = sharedCounter;        }        жауап.getWriter().жазу(«Санақты көбейту» + localCounter);  // жергілікті айнымалыға қол жеткізу    }    @Override    қоғамдық жарамсыз жою() {        getServletContext().журнал(«жою () деп аталады»);    }}

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

Servlet технологиясының спецификациясы көптеген өнімдерде енгізілген. Бойынша орындалу тізімін қараңыз веб-контейнер бет.

Әдебиеттер тізімі

  1. ^ «Servlet (Java (TM) EE 7 спецификациясы API)». oracle.com. Алынған 2018-07-25.
  2. ^ а б «Servlet Essentials - 1 тарау». novocode.com. Архивтелген түпнұсқа 2017-12-18.
  3. ^ https://jcp.org/kz/jsr/detail?id=369
  4. ^ Фридман, Мэтт (26.06.1996). «JavaOne конференциясының есебі». JavaWorld.
  5. ^ Диуанжи, Павани; Коннелли, Дэйв; Уогл, Прасад (1996 ж. 29 мамыр). «Java сервері және сервлеттері». Серверлер және сервер кеңейтімдері (PDF). JavaOne 1996. Мұрағатталды (PDF) түпнұсқасынан 2000-08-16 жж. Алынған 2020-02-01.
  6. ^ Чанг, Фил Инже (1 шілде 1997). «Сұхбат: Java веб-сервері командасы сізге арық адамды ұсынады». JavaWorld. Алынған 2018-07-25.
  7. ^ Чанг, Фил Инже (1 маусым 1997). «Java веб-сервері жеткізіледі!». JavaWorld. Алынған 2018-07-25.
  8. ^ «Сервлет тарихы | community.oracle.com». Weblogs.java.net. 2005-12-10. Алынған 2013-06-14.
  9. ^ а б Хантер, Джейсон (наурыз 2000). «Servlet Timeline». Java Servlet бағдарламалаудан тыс. Java туралы O'Reilly конференциясы. O'Reilly Media.
  10. ^ «Java веб-сервері». Javasoft. Sun Microsystems. Мұрағатталды түпнұсқадан 1998-01-11. Алынған 2020-02-01.
  11. ^ «Java веб-сервері (tm)». Sun Microsystems. Мұрағатталды түпнұсқасынан 2002-02-06 ж. Алынған 2020-02-01.
  12. ^ «Павни Диуанжи». Отбасылық онлайн қауіпсіздік институты. Алынған 12 қараша 2016.
  13. ^ АҚШ патенті 5928323, Гослинг, Джеймс А.; Павни Диуанжи және Дэвид В.Коннелли, «Аппарат және серверлік бағдарламалық жасақтама объектілерімен ақпаратты динамикалық генерациялау әдісі», 1999-07-27 жарияланған, 1999-07-27 шығарылған, Sun Microsystems 
  14. ^ «Servlet 3.1-де қандай жаңалықтар бар? - Java EE 7 алға жылжу (Арун Гупта, Майлз ...)». oracle.com. Алынған 22 қараша 2016.
  15. ^ Кроуфорд, Уильям; Хантер, Джейсон (қараша 1998). «Кіріспе сөз». Java сервлет бағдарламалау (1-ші басылым). O'Reilly Media. б. ix – x. ISBN  978-1-56592-391-1. Біз 1997 жылдың желтоқсанында Java Web Server 1.1 бөлігі ретінде енгізілген және 1998 жылдың сәуірінде Java Servlet Development Kit 2.0 шығарылымымен түсіндірілген Servlet API 2.0 нұсқасын қарастырамыз.

Сыртқы сілтемелер