Интернет програмиране с JAVA
Java Server Pages (JSP) е технология за разработка на уеб страници, които поддържат динамично съдържание. Технологията представлява възможност за разработчиците да вмъкнат Java код в HTML страници чрез използване на специални тагове.
JavaServer Pages е вид Java сървлет, който е предназначен да изпълнява ролята на потребителски интерфейс за уеб приложения. Уеб разработчиците пишат JSP като текстови файлове, в които се комбинират HTML или XHTML код, XML елементи и вградени действия и команди на Java.
Използването на JSP, позволява събиране на информация от потребителите чрез уеб форми, представяне на записи от база данни или друг източник, създаване на динамични уеб страници.
JSP тагове могат да бъдат използвани за различни цели, като например извличане на информация от база данни или регистриране на предпочитанията на потребителите, достъп до JavaBeans компоненти, предаване на контрол между страници и споделяне на информация между заявки, страници и т.н.
Обикновено JSP енджина проверява дали вече съществува сървлет, съответстващ на текущото JSP, и дали датата на изменението на JSP страницата е по-стара от сървлета. Ако тя е по-стара от своя генериран, контейнерът приема, че JSP страницата не е променяна и че генерирания за нея сървлет все още отговаря на съдържанието и. Това прави процеса по-ефективен, отколкото при други скриптови езици (като PHP) и следователно по-бърз. В известен смисъл, JSP страницата е просто още един начин да се напише сървлет, без да се налага на човек да бъде способен да програмира на Java. С изключение на етапа на транслация от JSP страница към сървлет, през останалата част от съществуването си тя се обработва точно като обикновен сървлет.
JSP жизнения цикъл може да се дефинира като целият процес от създаването на страницата до унищожаването и, процес който е подобен на жизнения цикъл на сървлета с допълнителна стъпка, трансформацията от JSP в сървлет. Етапите, през които минава JSP страницата са следните:
Четирите основни фази на JSP жизнен цикъл са много сходни с този на сървлета и те са, както следва:
Скриплета може да съдържа произволен брой JAVA декларации, променливи, методи или изрази, които са валидни в скриптовите езици:
<% code fragment %>
Всеки текст, HTML таг или JSP елемент трябва да са извън scriptlet таговете:
<html>
<head>
<title>Hello Java</title>
</head>
<body>
Hello Java!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
Посредством тях се декларират един или повече променливи или методи, които да са достъпни за използване по-късно във файла JSP. Синтаксисът на декларацията е следния
<%! declaration; [ declaration; ]+ ... %>
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
Елементът за JSP израз съдържа код, характерен за скриптовите езици, които се обработва и изходът му се конвертира в стринг. Тъй като стойността на израза се превръща в низ, може да се използва израз в рамките на един ред от текст, независимо дали е или не е маркиран с HTML таг, във JSP файл. Елементът за израз може да съдържа всеки текст, който е валиден според езиковата спецификация на Java, но не може да се използва точка и запетая, за да се сложи край на израза. Синтаксисът е следният:
<%= expression %>
<html>
<head>
<title>JSP Expression</title>
</head>
<body>
<p>
Today is date: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
JSP директивата засяга цялостната структура на класа на сървлета. Тя обикновено има следния вид:
<%@ directive attribute="value" %>
Има три типа директиви:
<%@ page ... %>
- дефинира инструкции към контейнера, които се отнасят за текущата JSP
<%@ include ... %>
- включване на файл в процеса на трансформация от JSP в сървлет;
<%@ include ... %>
- за декларация на библиотека с дефинирани тагове от
потребителя, използвани на конкретната страница.
JSP поддържа девет обекта, които автоматично се дефинират и се наричат имплицитни. Това са:
JSP действията използват конструкции в XML синтаксис, за да контролират поведението на сървлет енджина. Позволяват събития като например динамично вмъкване на файл, повторно използване на JavaBeans компоненти, препращане на потребителя към друга страница, или генериране на HTML за Java плъгина. Синтаксисът на елемента за действие е следният:
<jsp:action_name attribute ="value" />
Елементите за действие са основно предварително дефинирани функции и има следните JSP действия:
jsp:include
- включва файл в момента, в който страницата бъде заявена:jsp:useBean
– намира съществуващ или подава заявка за създаване на JavaBean компонент;jsp:setProperty
– задава характеристика на JavaBean компонент;jsp:getProperty
– вмъква характеристика на JavaBean компонент в генерирания отговор;jsp:forward
– пренасочва клиента към друга страница;jsp:plugin
– генерира браузър-специфичен код, който създава OBJECT или EMBED тага за Java плъгина;jsp:element
– динамично създава XML елементи;jsp:attribute
– определя атрибут на динамично създаден XML елемент;jsp:body
– дефинира тяло (body) на динамично създаден XML елемент;jsp:text
– използва се за шаблонни записи на текст в JSP страници или документи.JSP осигурява пълните възможности на Java да бъдат вградени в уеб приложение. Може да се използват всички API-и конструкции на Java в JSP програмирането, включително проверки на условия, цикли и други.
Започва като обикновен скриплет, но всеки ред, на който е затворен с HTML текст, включен между таговете.
<%! int day = 3; %>
<html>
<head>
<title>IF...ELSE Example</title>
</head>
<body>
<% if (day == 1 | day == 7) { %>
<p> Today is weekend</p>
<% } else { %>
<p> Today is not weekend</p>
<% }
%>
</body>
</html>
Пример за for цикъл:
<%! int fontSize; %>
<html>
<head>
<title>FOR LOOP Example</title>
</head>
<body>
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
<font color="green" size="<%= fontSize %>">
JSP Tutorial
</font>
<br />
<%}%>
</body>
</html>
<%! int fontSize; %>
<html>
<head>
<title>WHILE LOOP Example</title>
</head>
<body>
<%while ( fontSize <= 3){ %>
<font color="green" size="<%= fontSize %>">
JSP Tutorial
</font><br />
<%fontSize++;%>
<%}%>
</body>
</html>