Кіріспе

JSP Model 2 – Java веб-қосымшаларын жобалауда қолданылатын күрделі дизайн үлгісі, ол мазмұнды көрсетуді мазмұнды алу және өңдеу логикасынан бөліп тұрады. Model 2 логика мен көрсетуді ажыратуға бағытталғандықтан, ол көбінесе модель-көрініс-басқарушы (MVC) парадигмасымен байланысты. Model 2 дизайны MVC "моделінің" нақты пішінін анықтамағанмен, көптеген жарияланымдар MVC моделі кодын қамтитын формалды қабатты ұсынады. Мысалы, Java BluePrints бастапқыда MVC моделін қаптау үшін EJB пайдалануды ұсынды. Model 2 қолданбасында клиенттік браузерден келетін сұраныстар контроллерге жіберіледі. Контроллер дисплейге қажетті мазмұнды алу үшін қажетті логиканы орындайды. Содан кейін ол мазмұнды сұранысқа (әдетте JavaBean немесе POJO түрінде) қосып, сұранысты қай көрініске жіберу керектігін анықтайды. Көрініс содан кейін контроллерден алынған мазмұнды көрсетеді. Model 2 орташа және ірі көлемді қосымшалар үшін ұсынылады.

Тарих

1998 жылы Sun Microsystems JavaServer Pages спецификациясының 0.92 нұсқасын алдын ала жариялады. Бұл сипаттамада Sun JSP беттерін пайдаланудың екі әдісін ұсынды. Бірінші модель (құжаттағы ретіне байланысты "модель 1" деп аталады) – бұл қарапайым модель, онда JSP беттері дербес, байланыссыз элементтер болды. Логика беттің ішінде орналасуы мүмкін, ал беттер арасындағы навигация көбінесе гиперсілтемелер арқылы жүзеге асырылды. Бұл сол кездегі шаблон технологиясының кең таралған қолданылуына сәйкес келді. ColdFusion және Active Server Pages осы модельді іске асырған заманауи технологиялардың мысалдары болып табылады. Құжатта айтылған екінші модель (рет бойынша "модель 2" деп аталады) – сервлет технологиясын JSP технологиясымен біріктіретін жетілдірілген әдіс болды. Нақты айырмашылық – сервлет сұранысты қабылдап, көрсетуге арналған мазмұнды сұраныс атрибутына (әдетте JavaBean арқылы бейнеленеді) орналастырып, содан кейін JSP-ні қажетті шығыс форматында мазмұнды көрсету үшін шақырады. Бұл модель алдыңғы модельден соның арқасында ерекшеленді, JSP технологиясы таза шаблондық қозғалтқыш ретінде қолданылды. Барлық логика сервлетке бөлініп, JSP-ге берілген мазмұнның шығысын көрсету жауапкершілігі жүктелді. 1999 жылдың желтоқсан айында JavaWorld Govind Seshadri-дің "JavaServer Pages Model 2 архитектурасын түсіну" атты мақаласын жариялады. Бұл мақалада Говинд "Model 2" терминін қолдануда екі маңызды қадамды жасады. Бірінші қадам – "Model 2" терминін екі мүмкін нұсқаның бірі емес, архитектуралық үлгі ретінде ресмилендіру болды. Екінші қадам – Model 2 веб-базалық бағдарламалық құралдар үшін MVC архитектурасын ұсынады деген мәлімдеме болды. Говинд "Model 2" архитектурасы логиканы JSP-ден бөліп, оны сервлетке орналастырғандықтан, екі бөлікті MVC архитектурасында "Көрініс" (View) және "Бақылаушы" (Controller) ретінде қарастыруға болады деп сенді. Говинд MVC архитектурасының "Модель" бөлігін ашық қалдырды, талаптарға кез келген дерек құрылымы жауап бере алады деген ұсыныспен. Мақалада келтірілген нақты мысал – пайдаланушының сессиясында сақталған Вектор тізімі. 2000 жылдың наурыз айында Apache Struts жобасы жарық көрді. Бұл жоба Көрініс (View) және Бақылаушы (Controller) арасындағы бөліністі ресмилендірді және "Model 2" үлгісін іске асыруды талап етті. Struts шығарылғаннан бері бірнеше бәсекелес фреймворктар пайда болды. Бұл фреймворктердің көпшілігі "Model 2" және "MVC" бағдарламаларын іске асырамыз деп мәлімдейді. Нәтижесінде, екі термин девелоперлердің санасында синонимге айналды. Бұл "MVC Model 2" немесе қысқаша "MVC2" терминінің пайда болуына әкелді.

Қате түсініктер

Жалпы қате түсінік – 2-үлгіні іске асыру үшін формальданған MVC үлгісі қажет деген сенім. Алайда, Java BluePrints осы түсіндірмеге қарсы ерекше ескертеді: J2EE платформасындағы веб-деңгей технологиясы туралы әдебиеттерде "Модель 1" және "Модель 2" терминдері түсіндірмесіз жиі қолданылады. Бұл терминология JSP спецификациясының алғашқы нұсқаларынан туындаған, онда JSP беттерінің екі негізгі қолданылу жолы сипатталған. Терминдер спецификация құжатынан жоғалып кеткенімен, олар әлі де кеңінен қолданылып келеді. "Модель 1" және "Модель 2" клиенттік деңгейден келетін сұрауларды жіберу және көріністерді таңдау үшін контроллер сервлетінің бар немесе жоқ екендігін ғана көрсетеді. Сонымен қатар, "MVC2" термині көптеген адамдарды Model 2 – бұл MVC үлгісінің келесі буыны деген жаңылыс пікірге әкелді. Шындығында, MVC2 – "MVC Модель 2" терминінің ғана қысқартылған түрі. "MVC2" терминіне байланысты туған шатасу "Модель 1" кодына қатысты қосымша шатасуға әкелді, нәтижесінде жоқ терминді – "MVC1" кеңінен қолдану пайда болды.