Java server pages
JavaServer Pages (JSP) е технология, която помага на софтуерните разработчици да създават динамични Web-страници на основата на HTML, XML или други текстови формати. Създаден през 1999 г. от „Sun Microsystems“,[1] JSP прилича на PHP и ASP, но използва Java.
За внедряване и стартиране на JavaServer Pages е нужен уеб контейнер като Apache Tomcat или Jetty.
Обща схема
[редактиране | редактиране на кода]Архитектурно JSP може да представлява високо ниво на абстракция в Java сървлети. JSP се трансформират в сървлети по време на изпълнение; всеки JSP сървлет се кешира и се използва отново докато оригиналните JSP са променени.[2]
JSP може да се използва самостоятелно или от страна на сървъра като model–view–controller дизайн, обикновено с JavaBeans като модел и Java сървлет (или рамка, като Apache Struts) като контролер. Това е вид Model 2 архитектура.[3]
JSP позволява на код на Java и някои предварително определени действия да се редуват със статично уеб съдържание, като HTML, като получената страница се компилира и изпълнява в сървъра за да достави документ. Компилираните страници, както и всички зависими библиотеки на Java, съдържат двоичен код на Java вместо машинен код. Както и всяка друга програма на Java те трябва да бъдат изпълнени във виртуалната машина на Java (JVM), която взаимодейства с операционната система на хоста на сървъра, за да осигури абстрактна, независима от платформи среда.
JSP обикновено се използват за доставяне на HTML и XML документи, но с помощта на OutputStream те могат да предоставят и други видове данни.[4]
Web-контейнерът създава скрит JSP обект като заявка (request), отговор (response), сесия (session), приложение (application), настройки (config), страница (page), pagecontext, out и exception. JSP Engine създава тези обекти по време на превода между Java bytecode и машинен код.
Синтаксис
[редактиране | редактиране на кода]JSP използват няколко разделители като скриптови функции. Най-основният е <% ... %>, който обхваща JSP skriptlet. Скриптлетът е фрагмент от код на Java, който се изпълнява, когато потребителят подаде заявка за страницата. Други популярни разделители включват <%= ... %> за изразяване (expressions), където скриптлетът и разделителите се заменят с резултата от оценяването на изразяването и директивите, обозначаващи се с <%@ ... %>.[5]
Не е нужно Java кодът да бъде пълен или автономен в рамките на един скриптлет блок. Той може да се разпростира за маркиране на съдържание, при условие, че като цяло синтаксисът на страницата е правилен. Например, всички java , if/for/while блокове отворени в един скриптлет трябва да бъде правилно затворен в по-късен скриптлет на страницата за успешно компилиране.
Съдържание, което попадне на блок от код на java (обхващащи много скриптлетове) попадат под действието на този код. Съдържанието в If блок ще се показва в изхода, само когато If условието приема стойност True. По същия начин, съдържанието вътре в цикъл може да се появи няколко пъти в изхода, в зависимост от това, колко пъти се изпълнява тялото на цикъла.
Следното ще бъде валидно за цикъл в JSP страница: Резултатите, показани в уеб браузъра на потребителя ще бъде:
The value of „variable“ in the object „javabean“ is ${javabean.variable}.
Допълнителни тагове
[редактиране | редактиране на кода]JSP синтаксисът добавя допълнителни тагове, наречени JSP actions, за да се задейства вградената функционалност. Освен това технологията позволява създаване на потребителски JSP tag библиотеки, които действат като добавка към стандартния синтаксис JSP. Такава библиотека е JSTL поддържаща задачи като итерация и conditionals (еквивалент на „if“ и „else“ конструкции в Java.)
Критика
[редактиране | редактиране на кода]През 2000 г. Джейсън Хънтър, автор на книгата „java Сървлет за програмиране“, разкритикува JSP или увещаване и дори изискване от програмистът да смесва код на Java и HTML markup, макар и да признава, че това ще отблъсне хората от Active Server Pages на Microsoft. По-късно той добавя бележка към сайта си твърдящи че JSP са се подобрили от 2000 г., но също отбелязва и неговите конкуренти, Apache Velocity и Tea (език на шаблони).
Източници
[редактиране | редактиране на кода]- ↑ Mailing list archive: „Sun JSP 1.0 *not* available“
- ↑ The Life Cycle of a JSP Page (Sun documentation)
- ↑ Understanding JavaServer Pages Model 2 architecture (JavaWorld), архив на оригинала от 4 ноември 2013, https://web.archive.org/web/20131104190119/http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html, посетен на 17 януари 2017
- ↑ Forum thread (JavaRanch): OutputStream already obtained
- ↑ JSP 1.1 Syntax Reference