Кіріспе

Jakarta EE динамикалық веб-беттер технологиясы

Jakarta Server Pages (JSP; бұрын JavaServer Pages) – бағдарламалық жасақтаманы әзірлеушілерге HTML, XML, SOAP немесе басқа құжат түрлеріне негізделген динамикалық веб-беттер құруға көмектесетін технологиялар жиынтығы. 1999 жылы Sun Microsystems компаниясы шығарған JSP, PHP және ASP сияқты, бірақ Java бағдарламалау тілін пайдаланады. Jakarta Server Pages-ті орнату және іске қосу үшін Apache Tomcat немесе Jetty сияқты сервлет контейнері бар үйлесімді веб-сервер қажет.

Шолу

Архитектуралық тұрғыдан алғанда, JSP – Джакарта Сервлеттерінің жоғары деңгейдегі абстракциясы болып табылады. JSP-лер орындалу кезінде сервлеттерге түрлендіріледі, сондықтан JSP – бұл сервлет; әрбір JSP сервлеті кэште сақталады және бастапқы JSP өзгертілгенге дейін қайта пайдаланылады. Jakarta Server Pages дербес түрде немесе серверлік модель-көрініс-бақылаушы (MVC) архитектурасының көрініс компоненті ретінде қолданылуы мүмкін, әдетте JavaBeans модель ретінде және Java сервлеттері (немесе Apache Struts сияқты құрылымдық бағдарлама) бақылаушы ретінде. Бұл 2-ші үлгідегі архитектураның бір түрі. JSP Java коды мен белгілі бір алдын ала анықталған әрекеттерді HTML сияқты статикалық веб-маркамен араластыруға мүмкіндік береді. Нәтижесіндегі бет серверде құрастырылып, орындалады, содан кейін құжат жіберіледі. Құрастырылған беттерде, сондай-ақ кез келген тәуелді Java кітапханаларында машиналық код емес, Java байт-коды болады. Кез келген басқа JAR немесе Java бағдарламасы сияқты, код Java виртуалды машинасының (JVM) ішінде орындалуы керек, ол сервердің операциялық жүйесімен өзара әрекеттеседі, абстрактілі және платформаға тәуелсіз ортаны қамтамасыз етеді. JSP әдетте HTML және XML құжаттарын жеткізу үшін қолданылады, бірақ OutputStream арқылы басқа да дерек түрлерін жеткізе алады. Веб-контейнер JSP үшін сұрау, жауап, сессия, қолданба, конфигурация, бет, pageContext, out және ерекше жағдай сияқты жасырын нысандарды жасайды. JSP Engine аударма кезеңінде осы нысандарды құрайды.

Директивалар, скрипттер және сөз тіркестері, декларация

JSP-лер скрипттік функциялар үшін бірнеше айырғыштарды пайдаланады. Ең қарапайымы – JSP скриптін қоршайтын <% %>. Скрипт – бұл Java кодының бір бөлігі, ол пайдаланушы бетті сұрағанда орындалады. Басқа көп қолданылатын айырғыштарға <%= %> өрнектері жатады, онда скрипт және айырғыштар өрнекті есептеу нәтижесімен алмастырылады, сондай-ақ директивалар, олар <%@ %> арқылы белгіленеді. Java коды бір скрипт блогында толық немесе жеке-дара болуы міндетті емес. Ол белгілеу мазмұнымен араласуы мүмкін, егер бүкіл бет синтаксистік тұрғыдан дұрыс болса. Мысалы, кез келген Java if/for/while блоктары бір скриптте ашылса, бет сәтті компиляциялануы үшін келесі скриптте дұрыс жабылуы керек. Бұл кодты араластыруға мүмкіндік береді және нашар бағдарламалау әдеттеріне әкелуі мүмкін. Java кодының бөлінген блогының (бірнеше скриптке созылған) ішіндегі мазмұн осы кодқа бағынады. If блогының ішіндегі мазмұн тек if шарты true деп бағаланғанда ғана нәтижеде көрінеді. Сол сияқты, цикл құрылымының ішіндегі мазмұн цикл денесі қанша рет орындалса, соғұрлым нәтижеде көп рет пайда болуы мүмкін.

useBean тегі

JSP useBean тегі Javabean-ға қатынау және құруға мүмкіндік береді. useBean тегі HTML тегіндей көрінгенімен, JavaBeans үшін барлық JSP тегтері XML синтаксисін қолданады. Сондықтан useBean тегі бар код үлкен-кіші әріптерге сезімтал. useBean тегінде бірнеше атрибуттар бар. id атрибуты бұршаққа кіру үшін қолданылатын атауды жариялайды. class атрибуты бұршақтың пакеті мен класын анықтайды. scope атрибуты бұршақты сақтауға жауапты объектіні анықтайды. Аумақтық мән Java бағдарламасының қалған бөлігіне пайдалану үшін дәннің қанша уақытқа қолжетімді екенін анықтайды. Аумағы келесі төрт мәннің бірі болуы мүмкін:

page ауқымы бұршақтың жасырын анықталған объектіде орналасуын білдіреді және ол тек ағымдағы бетке қолжетімді. Әдетте, барлық бұршақтардың ауқымы page болып табылады. request ауқымы бұршақты request объектісінде табуға болатындығын білдіреді. Бұл бұршаққа ағымдағы сұраныс объектісіне қол жеткізе алатын барлық басқа JSP және сервлеттер қол жеткізе алады. session ауқымы бұршақты session объектісінде табуға болатындығын білдіреді. Бұл бұршаққа ағымдағы session объектісіне қол жеткізе алатын барлық басқа JSP және сервлеттер қол жеткізе алады. application ауқымы бұршақты application объектісінде табуға болатындығын білдіреді. Бұл бұршаққа ағымдағы application объектісіне қол жеткізе алатын барлық басқа JSP және сервлеттер қол жеткізе алады.

getProperty және setProperty тегтері

useBean тегі арқылы bean құрылғаннан кейін, getProperty және setProperty тегтері bean-нің қасиеттерін алу және орнату үшін қолданылуы мүмкін. JSP-дегі getProperty тегі құрылған bean-нің қасиетін алуға арналған. JSP-дегі setProperty тегі bean-нің қасиеттерін орнатуға арналған. getProperty және setProperty тегтері үшін name атрибуты bean-нің атын көрсету үшін пайдаланылады. Сондықтан name атрибуты useBean тегінің id атрибутымен сәйкес болуы керек.

Көрініс тілі

JSP спецификациясының 2.0 нұсқасы Java объектілеріндегі деректерге және функцияларға қол жеткізуге арналған Expression Language (EL) қолдауын қосты. JSP 2.1 нұсқасында ол JavaServer Faces-та да қолданылатын Unified Expression Language-ке біріктірілді. JSP Expression Language ықшам синтаксис қолданады, бұл дамытушыға белгілі бір сұраныс объектісінен атрибуттар мен JavaBean қасиеттерін алуға мүмкіндік береді. EL қолданғанда кодтың басына доллар белгісі ("$") қойылуы керек. Доллар белгісінен кейін ашық жақша ("{") және жабық жақша ("}") келеді. Код одан кейін ашық және жабық жақшалардың арасына жазылады.

Қосымша тегтер

JSP синтаксисі құрылған функционалдықты шақыру үшін, JSP әрекеттері деп аталатын қосымша тегтерді қосады. Мұндай кітапханалардың бірі – JSTL.

Джакарта стандартты тегтер кітапханасы

Jakarta Standard Tag Library (JSTL) JSP-лерде орындалуы тиіс жиі кездесетін тапсырмаларды қолдайды. Мысалдарға итерация және шартты операторлар (Java-дағы "for" және "if" операторларымен тең келеді) жатады. Мұндай JSP файлдары көбінесе jspx файлдық кеңейтімді пайдаланады, бұл қолданба серверінің XML синтаксисін тексеруіне себеп болады. XML-де стандартты JSP синтаксисі <% %> жарамсыз болғандықтан, дамылшы JSP ұсынатын баламалы тегтерді қолдануы керек. Мысалы, жиі қолданылатын <%@ page %> директивасы <jsp:directive.page /> тегі түрінде жазылуы мүмкін, ал тегтер кітапханалары әдеттегі <%@ taglib %> тегінің орнына XML кеңістіктерін пайдаланып импортталады.

Компилятор

JavaServer Pages компиляторы – JSP-лерді талдап, оларды орындалатын Java Servlets-ке түрлендіретін бағдарлама. Мұндай бағдарлама әдетте қолданба серверіне енгізіліп, JSP-ге алғаш рет қол жеткенде автоматты түрде жұмыс істейді, бірақ жақсы өнімділік үшін беттер алдын ала компиляциялануы немесе қателерді тексеру үшін құрастыру процесінің бір бөлігі ретінде компиляциялануы мүмкін. Кейбір JSP контейнерлері JSP файлдарының өзгертілген уақытын қаншалықты жиі тексеруді конфигурациялауға мүмкіндік береді. Әдетте, бұл уақыт белгісі бағдарламалық құралды әзірлеу кезінде қысқа интервалға (мысалы, секундтарға) және орнатылған веб-қосымша үшін ұзақ интервалға (мысалы, минуттарға немесе тіпті ешқашан) орнатылады.

Сын

Джоэл Мурах пен Майкл Урбан, "Murach's Java Servlets and JSP" кітабының авторлары, Java кодын JSP-ге ендірудің көбінесе жаман тәжірибе екенін айтады. Одан да жақсы тәсіл – JSP-ге енгізілген артқы логиканы Java кодына көшіру болар еді. Осы сценарийде, Java коды өңдеуге жауапты, ал JSP HTML-ді көрсетуге жауапты болып, қызығушылықтардың айқын бөлінуін қамтамасыз етеді. 2000 жылы "Java Servlet Programming" кітабының авторы Джейсон Хантер JavaServer Pages-тағы бірқатар "мәселелерді" сипаттады. Дегенмен, ол JSP "Java платформасы үшін ең жақсы шешім" болмаса да, ол "Java емес шешімге ең ұқсас Java шешімі" екенін жазды, осымен ол Microsoft-тың Active Server Pages-ін меңзеді. Кейіннен ол өзінің сайтында JSP 2000 жылдан бері жақсарғанын, сондай-ақ оның Apache Velocity және Tea (үлгі тілі) сияқты бәсекелестерін атап өтті. Бүгінде бірнеше баламалар және ірі веб-қосымшалардағы JSP-ға бағытталған беттер техникалық қарыз ретінде қарастырылады.