JavaRush /Kurslar /All lectures for UZ purposes /Boshqa veb-freyvmvorklar

Boshqa veb-freyvmvorklar

All lectures for UZ purposes
Daraja, Dars
Mavjud

Spring Framework'ning asosiy afzalliklaridan biri bu tanlash imkoniyati. Umuman olganda, Spring sizni biror aniq arxitektura, texnologiya yoki metodologiyani ishlatishga majburlamaydi (biroq u ba'zi tavsiyalar beradi albatta). Dasturchi yoki uning dasturchilar jamoasiga eng mos keluvchi arxitektura, texnologiya yoki metodologiyani tanlash erkinligi, ayniqsa, veb-sohada ko'rinadi, chunki Spring o'zining veb-freyvmvorklarini (Spring MVC va Spring WebFlux) taklif qiladi, lekin shu bilan birga mashhur veb-uchinchi tomon freyvmvorklariga integratsiyani qo'llab-quvvatlaydi.

Umumiy konfiguratsiya

Har bir qo'llab-quvvatlanadigan veb-freyvmvorkni integratsiyasining xususiyatlariga sho'ng'ishdan oldin, keling avval Spring'ning umumiy konfiguratsiyasini ko'rib chiqaylik, bu hech qanday bitta veb-freyvmvorkiga xos emas. (Bu bo'lim Spring'ning o'z veb-freyvmvorki variantlariga ham teng darajada tatbiq etiladi).

Spring'ning yengil arizalar modeli qo'llab-quvvatlaydigan kontseptsiya (boshqa so'z yo'qligi sababli) ko'p darajali arxitekturadir. Esda tuting, "klassik" ko'p darajali arxitekturada veb-daraja ko'plab kirish nuqtalaridan biridir. U server tomondagi ilovaga kirish punktlaridan biri sifatida xizmat qiladi va vakolatlarni xizmat obyektlariga (fasadlar) uzatadi, bu xizmat darajasida aniqlangan biznes-foydalanish ssenariyalari bilan shug'ullanadi, texnologiyadan mustaqil. Spring'da bu xizmat obyektlari, boshqa har qanday biznes obyektlar, ma'lumotlarga kirish obyektlari va h.k. "biznes-kontekst"da alohida mavjud bo'lib, bu veb-daraja yoki taqdimot darajasidagi obyektlarni o'z ichiga olmaydi (tarmoq obyektlari, masalan Spring MVC kontrollerlari odatda alohida "taqdimot darajasi konteksti"da konfigurlanadi). Bu bo'lim Spring konteynerini (WebApplicationContext) qanday konfigurlash mumkinligini batafsil bayon qiladi, bu sizning ilovangizdagi barcha "biznes-binler"ni o'z ichiga oladi.

O'ziga xoslikka o'tib, barchangiz qilishingiz kerak narsa bu ContextLoaderListenerni Java EE-servlet web.xml faylida e'lon qilish va bir qism contextConfigLocation qo'shish, bu qanday Spring konfiguratsion XML fayllari yuklanishi kerakligini aniqlaydi.

Quyidagi <listener/> konfiguratsiyasini ko'rib chiqing:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Keyin quyidagi <context-param/> konfiguratsiyasini ko'rib chiqing:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>

Agar siz contextConfigLocation kontekst parametrini ko'rsatmasangiz, ContextLoaderListener yuklash uchun /WEB-INF/applicationContext.xml faylini qidiradi. Fayllarni yuklagandan so'ng, Spring konteksiya fayllarini yuklab bo'lgach, u bitta yoki bir nechta WebApplicationContext ob'ektni yaratadi, bin definitsiyalari asosida, va uni veb-ilovaning ServletContext ichida saqlaydi.

Barcha Java web-freyvmvorklar Servlet API asosida qurilgan, shuning uchun siz quyidagi kod parchasini foydalanib, ContextLoaderListener tomonidan yaratilgan "biznes-kontekstga" kirish imkoniyatiga ega bo'lishingiz mumkin.

Quyidagi misol WebApplicationContextni qanday olish mumkinligini ko'rsatadi:

WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);

WebApplicationContextUtils sinfi qulaylik uchun mo'ljallangan, shuning uchun siz ServletContext atribut nomini eslab qolishingiz shart emas. Uning getWebApplicationContext() metodi null qaytaradi, agar WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE kalit ostidagi ob'yekt mavjud bo'lmasa. Ilovangizda NullPointerExceptions olishdan qochish uchun getRequiredWebApplicationContext() metodini ishlatgan ma'qul. Bu metod ApplicationContext yo'q bo'lsa, istisno qilishga olib keladi.

WebApplicationContextga havola olgandan keyin, siz ularning ismi yoki turi bo'yicha binlarni olishingiz mumkin. Ko'pchilik dasturchilar bularni ism bo'yicha olishadi va keyinchalik ularni bajarilgan interfayslardan biriga olib kelishadi.

Yaxshiyamki, bu bo'limda aytilgan ko'pchilik freyvmvorklar binlarni topish uchun osonroq usullarga ega. Ular faqat Spring konteyneridan binlarni olishni osonlashtiradi, balki ularning kontrollerlarida qo'shilishlarni ham ishlatish imkonini beradi. Veb-freyvmvorkning har bir bo'limida integratsiya jarayonlari haqida batafsilroq maslahatlar berilgan.

JSF

JavaServer Faces (JSF) - bu JCP jarayonida ishlab chiqilgan standart komponentli, voqeaga asoslangan foydalanuvchi veb-interfeysi freyvmvorki. U Java EE umumiy spetsifikatsiyasining rasmiy qismi hisoblanadi, ammo Mojarra yoki MyFaces'ni Tomcat'ga qo'shish orqali alohida ishlatish mumkin.

JSF'ning oxirgi versiyalari ilova serverlaridagi CDI infratuzilmasi bilan yaqin aloqador bo'lganiga e'tibor bering va JSF'ning ba'zi yangi xususiyatlari faqat shunday muhitda ishlaydi. Spring'da JSF'ni qo'llab-quvvatlash faol ravishda rivojlanmayapti va asosan eski JSF asosidagi dasturlarni modernizatsiya qilishda migratsiya maqsadlarida qo'llaniladi.

Spring va JSF'ni integratsiyaning kalit elementi bu JSF spesifikatsiyasining ELResolver mexanizmi hisoblanadi.

5.2.1. Spring Binlarni Tanlovchi

SpringBeanFacesELResolver - bu JSF bilan mos ELResolver amalga oshirishi bo'lib, JSF va JSP'da ishlatiladigan standart birlashgan ifoda tili (Unified EL) bilan integratsiyalashadi. U vakolatlarni dastlab Spring "biznes-konteksti" WebApplicationContext'ga berib, keyin JSF asosiy moddasining odatiy tanlovchisiga beradi.

Konfiguratsiya nuqtai nazaridan, SpringBeanFacesELResolverni JSF spesifikatsiyasining faces-context.xml faylida quyidagi misolda ko'rsatilganidek aniqlashingiz mumkin:

<faces-config>
    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
        ...
    </application>
</faces-config>

5.2.2. FacesContextUtilsni Ishlatish

Maxsus ELResolver faces-config.xml fayldagi binlar xususiyatlarini ko'rsatishda juda yaxshi ishlaydi, lekin ba'zan binani aniq olish talab qilinishi mumkin. FacesContextUtils sinfi bu vazifani osonlashtiradi. U WebApplicationContextUtilsga o'xshaydi, lekin u ServletContext emas, balki FacesContextni parametr sifatida oladi.

Quyidagi misolda FacesContextUtilsni qanday ishlatish ko'rsatilgan:

ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());

Apache Struts 2.x

Struts freyvmvorki Kreyg Makklaxan tomonidan o'ylab topilgan bo'lib, bu Apache Software Foundation asosidagi ochiq manba loyihasi hisoblanadi. O'sha paytda u JSP/Servlet dasturlash paradigmasini ancha soddalashtirib, va o'sha paytdagi ko'pgina dasturchilarni o'ziga jalb qildi, ular esa o'zlariga xos freyvmvorklarni ishlatardi. U dasturlash modelini osonlashtirib, dastlabki kodni ochiq manbali qilib chiqarib (demakki, bepul bo'lgan), va keng jamoaga ega bo'lib, loyihaning rivojlanishiga va Java'da veb-dasturchilar orasida mashhurlik qozonishiga olib keldi.

Original Struts 1.x'ning vorisi sifatida, Struts 2.x va Spring bilan birga keladigan Struts plaginiga e'tibor bering, u Spring bilan biriktirilgan integratsiya uchun mo'ljallangan.

Apache Tapestry 5.x

Tapestry "dinamik, ishonchli, kengaytiriladigan web-dasturlarni yaratish uchun komponentli freyvmvork"dir.

Spring o'zining kuchli veb-darasiga ega bo'lsa-da, Java korporativ dasturini Tapestry bilan foydalanuvchi veb-interfeysi uchun va Spring konteyner bilan pastki darajalar uchun kombinatsiyalab yaratish qator noyob afzalliklarni beradi.

Mavzuni chuqurroq o'rganish uchun, Tapestry uchun Spring integratsiya moduli bilan maxsus ma'lumotga qarang.

Qo'shimcha manbalar

Quyidagi havolalar ushbu bobda tasvirlangan turli xil veb-freyvmvorklarga bag'ishlangan qo'shimcha manbalarga olib boradi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION