JavaRush /Kurslar /All lectures for UZ purposes /Ko'rinishlarni aniqlash

Ko'rinishlarni aniqlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

Spring MVC ViewResolver va View interfeyslarini belgilaydi, ular modelarni brauzerda ko'rishga yordam beradi, sizni ma'lum bir ko'rinish texnologiyasiga bog'lamaydi. ViewResolver ko'rinish nomlari va haqiqiy ko'rinishlar orasidagi moslikni ta'minlaydi. View ma'lumotlarni ma'lum bir ko'rinish texnologiyasiga uzatishdan oldin tayyorlash bilan shug'ullanadi.

Quyidagi jadvalda ViewResolver iyerarxiyasi haqida batafsil ma'lumot berilgan:

Jadval 3. ViewResolver amalga oshirishlari
ViewResolver Tavsif

AbstractCachingViewResolver

AbstractCachingViewResolver ning subklasslari ko'rinishni keshga oladi. Keshlash ba'zi ko'rinish texnologiyalari uchun unumdorlikni oshiradi. Keshni cache xususiyatini false ga o'rnatib o'chirish mumkin. Agar sizga dastur ishlash jarayonida aynan bir ko'rinishni yangilash kerak bo'lsa (masalan, FreeMarker shabloni o'zgarganda), removeFromCache(String viewName, Locale loc) metodini ishlatishingiz mumkin.

UrlBasedViewResolver

ViewResolver interfeysining oddiy amalga oshirish, bu ko'rinishning mantiqiy nomlarini URL manzillarga bevosita aniqlashni ta'minlaydi. Bu sizning mantiqiy nomlaringiz oddiy shaklda ko'rinish resurslarining nomlari bilan mos keladigan hollarda muvofiqdir, ixtiyoriy moslik talab etilmasdan.

InternalResourceViewResolver

UrlBasedViewResolver ning qulay subklassi, InternalResourceView (asosan servlet va JSP) va JstlView hamda TilesView kabi subklasslarni qo'llab-quvvatlaydi. Ushbu resolver tomonidan yaratilgan barcha ko'rinishlar uchun ko'rinish sinfini setViewClass(..) orqali belgilash mumkin. Tafsilotlar uchun javadocga qarang. UrlBasedViewResolver.

FreeMarkerViewResolver

UrlBasedViewResolver ning qulay subklassi, FreeMarkerView va ularning moslashtirilgan subklasslarini qo'llab-quvvatlaydi.

ContentNegotiatingViewResolver

ViewResolver interfeysini amalga oshirgan, u fayl nomi yoki Accept sarlavhasi asosida ko'rinishni tan oladi.

BeanNameViewResolver

ViewResolver interfeysini amalga oshirgan, u ko'rinish nomini joriy dastur kontekstidagi bean nomi sifatida talqin qiladi. Bu juda moslashuvchan variant bo'lib, turli xil ko'rinish turlarini aralash va moslashtirishga imkon beradi. Har bir bunday View amalga oshirish, masalan, XML sinflarida yoki konfiguratsion sinflarda bean sifatida aniqlanishi mumkin.

Qayta ishlash

Bir nechta resolver beanlarini e'lon qilib va kerak bo'lganda order xususiyatini o'rnatib, resolverlar zanjiri yaratishingiz mumkin. E'tibor bering, buyurtma xususiyati qanchalik yuqori bo'lsa, resolver zanjirda shunchalik kech joylashadi.

ViewResolver kontrakti ko'rinish topib bo'lmasa, null qaytarishi mumkinligini belgilaydi. Ammo JSP va InternalResourceViewResolver bilan bog'liq holda JSP mavjudligini aniqlashning yagona usuli RequestDispatcher dan foydalanib dispetcherlik qilishdir. Shuning uchun InternalResourceViewResolver ni umumiy resolver tartibida har doim oxirgi bo'lib joylashishi kerak.

Ko'rinishni aniqlashni sozlash Spring konfiguratsiyasiga ViewResolver beanlarini qo'shish kabi oddiy. MVC Config view resolver va kontrolsiyalash algoritmasiz HTML shablonlarni vizualizatsiya qilish uchun foydali bo'lgan kontrolerlarga maxsus konfiguratsiyani API taqdim etadi.

Yo'naltirish

Ko'rinish nomidagi maxsus redirect: prefiksi yo'naltirishni bajarishga imkon beradi. UrlBasedViewResolver (va uning subklasslari) buni kerakli yo'naltirish buyrug'i sifatida tan oladi. Ko'rinish nomining qolgan qismi yo'naltirish URL manzili hisoblanadi.

Oxirgi natija xuddi kontrolor RedirectView qaytargan kabi, ammo endi o'zi kontroler mantiqiy ko'rinish nomlari bilan ishlay oladi. Mantiqiy ko'rinish nomi (masalan, redirect:/myapp/some/resource) joriy servlet kontekstidan nisbatan yo'naltiradi, redirect:https://myhost.com/some/arbitrary/path kabi nom esa mutlaq URL manzilga yo'naltiradi.

Kontroler metodida @ResponseStatus annotatsiyasi mavjud bo'lsa, uning qiymati RedirectView tomonidan o'rnatilgan javob holatidan ustun keladi.

Yo'nalish o'zgartirish

Shuningdek, siz UrlBasedViewResolver va subklasslaridan foydalangan holda, oxir-oqibat forward: prefiksidan foydalanishingiz mumkin. Bu InternalResourceView yaratadi, u RequestDispatcher.forward() ni bajaradi. Shuning uchun ushbu prefiks InternalResourceViewResolver va InternalResourceView (JSP uchun) foydalanayotganda foydasiz, lekin boshqa ko'rinish texnologiyasidan foydalanayotgan bo'lsangiz va servlet/JSP konteyner bilan resursni majburiy ravishda yo'naltirmoqchi bo'lsangiz foydali bo'lishi mumkin. Shuni yodda tutingki, buning o'rniga ko'plab ko'rinish resolverlarini zanjirlayishingiz ham mumkin.

Kontent muvofiqligi

ContentNegotiatingViewResolver ko'rinishlarni o'zi aniqlamaydi, balki bu ishni boshqa ko'rinish resolverlariga topshiradi va mijoz so'ragan ko'rinishga o'xshash ko'rinishni tanlaydi. Ko'rinish Accept sarlavhasi yoki so'rov parametri (masalan, "/path?format=pdf") orqali aniqlanishi mumkin.

ContentNegotiatingViewResolver so'rovni qayta ishlash uchun mos View ni tanlaydi va bu orqali so'rov ma'lumot turlarini, Content-Type bilan, har bir ViewResolvers ga bog'langan View ni taqqoslaydi. Mos Content-Type ga ega bo'lgan birinchi View mijozga qaytariladi. Agar ViewResolver zanjiri mos ko'rinishni taqdim eta olmasa, DefaultViews xususiyatida belgilangan ko'rinishlar ro'yxatidan foydalaniladi. Ushbu oxirgi variant joriy resursning mos ko'rinishini vizualizatsiya qila oladigan yagona Views uchun mos keladi, mantiqiy ko'rinish nomidan qat'i nazar. Accept sarlavhasi o'rnini bosuvchi belgilarni o'z ichiga olishi mumkin (masalan, text/*), bu holda Content-Type text/xml bilan mos keladigan View mos keladi.

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