10. Въведение в javaserver pages
DESCRIPTION
10. Въведение в JavaServer Pages. Лекционен курс “ Езици и среди за програмиране в Интернет ”. доц. д-р Станимир Стоянов катедра “ Компютърни системи ”. Съдържание. 10 .1. Въведение 10 .2. JavaServer Pages & Servlets 10 .3. Обслужване на JSPs 10.4.Преглед на архитектурата - PowerPoint PPT PresentationTRANSCRIPT
10. Въведение в JavaServer Pages
доц. д-р Станимир Стояновкатедра “Компютърни системи”
Лекционен курс “Езици и среди за програмиране в Интернет”
Съдържание
10.1. Въведение10.2. JavaServer Pages & Servlets 10.3. Обслужване на JSPs10.4.Преглед на архитектурата 10.5. Елементи на JSP10. 6. Създаване на JSP страници10.7. JSP Приложения10.8. Пример10.9. Обобщение & предимства
10.1. Въведение
● Използвайки сървлетната технология и развивайки се много бързо JavaServer Pages (JSP) технологията става един от най-съществените елементи в сървърното програмиране на Java.● JavaServer Pages е една спецификация
Какво са JavaServer Pages? JavaServer Pages разделят презентацията на
генерирането на съдържанието Доставят прост и бърз начин за създаване на
динамични страници (HTML, XML, ...) С вграден Java код Разширяеми с компоненти и потребителски тагове
10.2. JavaServer Pages & Servlets
JavaServer Pages използват сервлет технологията JSP контейнерите са сървлети Всяка JSP се компилира в runtime сървлет Съща производителност и преносимост
облагодетелствани от сървлет технологията Но леснотата за използване на дескриптивните
езици По-добрата възможност за web проектантите и
разработчиците
Сървлети : Java компоненти, които разширяват HTTP Server Генерират динамично съдържание
• Управляеми от контейнер• Изходът може да бъде HTML, XML или друг тип
Зареждат се при искане По всяко време могат да бъдат премахнати Съпоставят се на URLs Съществени абстаркции - Request, Response, Servlet Context,
Sessions
JSPs : Текстови документи съдържащи HTML, JSP tags, Java code “Inside-Out” сървлети - декларативни, ориентиран към
презентацията начин за създаване на сървлети. Предимства:
• По-лесни за използване (разделят представянето от кода)• По-лесни развойни средства (J2EE standard)
Използват :• Скриптове на сървъра (Server-Side Scripting)• Еталони (Templates)• Капсулиране на функционалността
Servlets или JSPs ?
Използване JSP’s за генериране на отговори Използване сървлети за контролери (FrontController Design
Pattern) Използване сървлети за обслужване или генериране на двоично
съдържание (binary content) Пример
Показване на shopping cart => използване JSP технология Генериране на images или charts=> използване на
сървлети Обработка на заявки => двете технологии JSP и Servlet са
подходящи
FrontController Design Pattern)
10.3. Обслужване на JSPs
JavaCompiler
Servlet Runner
JSPTranslator
JSP SourceHello.jsp
Generated file Hello.java
Servlet class
Hello
http://localhost:8080/Hello.jsp
Outputof Hello HTML /XML
JDBC
JSP runtime
JSP Runtime
Database
JSP Pages
Servlets
Enterprise JavaBeans
Business Components
for Java
EIS TierWeb Tier Business TierClient Tier
Java Standalone
Runtime
Browser
JavaApplicati
on
Pure HTML
Applet
Servlet Runtime
Database
JSP Pages
Servlets
Enterprise JavaBeans
Business Components
for Java
EIS TierWeb Tier Business TierClient Tier
Java Standalone
Runtime
Browser
JavaApplicati
on
Pure HTML
Applet
Когато една страница се изисква за първи път, тогава тя:● Се компилира автоматично от JSP-машината в един сървлет● След това се изпълнява.
JSP доставя различни възможности за комуникиране с:● Java класове● Сървлети● Аплети● Web сървъри.
Така ние можем да декомпозираме функционалността на Web-приложенията на отделни компоненти в добре дефинирани публични интерфейси и да ги интегрираме в една страница.
Този модел ни позволява ефективно разделение на дейностите:● Отделните разработчици могат да създава различни бизнес-
компонентите● Проектантът на страницата ще ги събере заедно в едно
приложение с малко на брой извиквания на методи При този модел за асемблирането на приложенията бизнес-
логиката е разделена от представянето на данните.
10.4. Преглед на архитектурата
JSP е просто един текстови файл с HTML или XML съдържание, в което могат да се интегрират JSP елементи (директни връзки към Java код)
Когато един потребител заяви една JSP, разположена върху сървъра, тогава:● Ако тя не е обработване преди това – страницата първо
се предава на JSP-машината● JSP-машината я компилира в един сървлет● Страницата се обработва● Резултатът се връща към потребителя
Жизнен цикъл
Заявка
Web-сървър (сървлет-машина)
JSP Handler Servlet
Проверка – файл променян след последната компилация?
JSP (първичен
код)
Съществуващ
сървлет
Файл променен?
Създаване на първичен
файл
Компилиране на сървлет
Изпълнение на новия сървлет
Изпълнение на съществуващия сървлет
да
не
JavaServer Pages се състоят от HTML страници със специални тагове, които позволяват включването на Java логика Scriptlets <% … %> Directives <%@ ... %> Expressions <%= … %> Declarations <%! … %> Other Tags - UseBean, setProperty ...
10.5. Елементи на JSP
● Директиви - иинформация за страниците● Декларативи - общи декларации на променливи и
методи.● Скриплети - Java код, вграден в страницата● Изрази - форматират изразите като низ за включване в
изхода на страницата.
A Simple JavaServer Page example<HTML><BODY><P>Hello! <BR>Today is: <%= new java.util.Date() %>
</BODY></HTML>
JSP – пример за израз
JSP - използва JavaBean
<HTML><BODY><jsp:useBean class=“beans.nameBean” id=“namebean” scope=“page”>
Employees: <%= nameBean.showEmps() %></BODY></HTML>
Потребителски JSP тагове
Custom Tag Libraries with JSP 1.1<HTML><BODY><%@ taglib uri=“/myowntags.tld” prefix=“mytags” %>
<P> Today’s Date is:<mytags:ShowDate format=“mm/dd/yy”>
</BODY></HTML>
Page Elements
Standard Tags ‘Use Bean’ Session
Management Alternate
Languages Custom Tags
...<BODY><%@ page language="java" import="com.acme.app.*, java.util.*" %>
<jsp:useBean id="hist" scope="session" class="com.acme.app.histBean" />
<% Iterator itOrders = hist.getOrderList().iterator(); while (itOrders.hasNext()){ Order odr = (Order)itOrders.next(); %>
<TR> <TD>Autrags-Nr.: </TD> <TD> <%= odr.getRenderer("odrNum").disp()%> </TD> <TD>Liefer-Datum:</TD> <TD> <%= odr.getRenderer("dvDt").disp()%> </TD> </TR> <% } %> </BODY></HTML>
10.5.1. Директиви
Една JSP директива е израз, който предоставя на JSP-машината информация за страницата - доставят глобална информация към страницата
Напр.:● Импортни данни● Информация за обработка на грешки● Дали страницата е част от една сесия.
<%@ directive { attribute = “value” } %>
● Директивата може да има опционален брой атрибути● Всяка директива има XML еквивалент
Синтаксис на директивите
● Page – информация за страницата● Include – файлове, които ще бъдат дословно включени● Taglib – URL на една библиотека от тагове, която ще се
използва в страницата.
Примерни директиви
● language=“java” – дава информация на сървлета за използвания във файла език (обикновено Java).
● extends=“package.class” – дефинира родителския клас на генерирания сървлет.
● import=“package.*,package.class” – съдържа списък на пакетите и класовете, които искаме да импортираме (аналогична на първата секция на Java пеограмите)
● session=“true | false” – показва дали данните за сесията са налични за страницата (по подразбиране true)
● buffer=“none | 8kb | sizekb” – определя дали изходният стрийм е буфериран (по подразбиране 8kb)
Някои от основни атрибути:
● autoFlush =“true | false” – ако true, извежда съдържанието на буфера когато е пълен, вместо да причинява изключение
● isThreadSafe=“true | false” – никово осигурен или не● isErrorPage=“true | false” – маркира страницата като страница
за грешки● errorPage=“pathToErrorPage” – относителен път до JSP, която
ще обработва необработени грешки ● info=“text” – страницата достъпна посредством метода
Servlet.getServletInfo()● contentType=“text/htm;charset=ISO-8859-1” - mime тип и
множество на символите.
10.5.2. Декларации
JSP декларациите могат да се разглеждат като дефиниции на ниво класове (декларации на променливи за класове и методи), които ще се използват в страницата.
Синтаксис: <%! declaration >
Увеличава броячът с 1
Пример:
<%! String var1 = “x”; int count = 0;
private void incrementCount ( ){ count++;}
%>
10.5.3. Скриплети
● Дефинират се както обикновени блокове в Java, оградени с етикетите <% и %>
● Този код ще се помести в генерирания _jspService ( ) метод на сървлета.
● Кодът, дефиниран в скриплета има достъп до всяка декларирана променлива и компонент (JavaBean).
Съществува едно множество от вътрешни обекти, които се доставят за скриплетите от сървлетната среда.
Примери:● request – потребителска заявка. Обикновено един подклас
на HttpServletRequest● response – JSP отговор. Подклас на HttpResponse
● pageContext – сървърната среда, в която оперира страницата● session – Http session обект, свързан със заявката● application – сървлетен контекст, върнат от едно извикване на
getServletConfig( ).getContext( )● out - обектът, представляващ изходния стрийм● config – ServletConfig обектът на страницата● page – за самореференциране (път към самата себе си)● exception – подклас на Throwable, който се предава към URL на
страницата за грешки
10.5.4. Изрази
● JSP изразите са едно добро средство за вграждане на стойности в нашия HTML код.
● Всяко нещо между етикетите <% и %> се оценява, конвертира в символен низ и след това се показва.
● Изразите не завършват с ; - понеже JSP машината извежда изразите с out.println( )
● Изразите ни позволяват да параметризираме HTML. ● Така напр. кодът ще даде някакви условия за цикли, използвайки
JSP скриплет, като е възможно директно след това може да се вмъкне HTML код.
● Отделните части на скриплета трябва да бъдат оградени в самостоятелни <% %>
.
Стойнопст на брояча
<% for (int i = 0; i<10; i++){ %>
<BR>Counter value is <%= i %>
<% } %>
Пример:
10. 6. Създаване на JSP страници
Едно голямо предимство за разработване на JSP е, че можем да кодираме HTML без окомплектоването й с Java код (както е при сървлетите).
За създаването на JSPs можем да използваме редактори за HTML.
10.7. JSP приложения
JavaServer Pages технологията е разширение на сървлет технологията
Съдържат някои статични HTML (<BODY>) Съдържа някои JSP tags и Java code който създава динамично
съдържаниеt Може (опционално) да съдържа JavaScript
Когато JSP работи създава сървлети Спорно е дали JSPs са по-лесни за разработка в сравнение със
сървлетите Файловете имат разширения .jsp
JSP Приложение
10.8. Пример
Една JSP страница ще изпълнява следната функция: извежда латинската азбука 26 пъти, като всеки път променя началната буква
<HTML>
<HEAD>
<TITLE> Demo of a JSP page </TITLE>
</HEAD>
Кодът може да предизвика изклэчения
<BODY>
<! -- Set global information for the page -- >
<%@ page language = “java” %>
<! – Declare the character variable -- >
<%! Char c = 0; %>
<! -- Scriplet – Java code -- ><%
for (int i=0;i<26;i++){
for (int j=0;j<26;j++){
// Output capital letters of the alphabet, and change starting letterc = (char) (0x41 + (26 – i + j) % 26;
%>
<! – Output the value of c.toString() to the HTML page -- ><% = c %>
<%
}
%>
<BR><%
}
%>
</BODY></HTML>
10.9. Обобщение & предимства
Добра производителност
Независимост от платформата
Лесен развой
Развиряемост с JavaBeans и потребителски тагове
<xml>, <xml>,
<html>, <html>,
……..
По-тънък клент Не е необходима памет и
дисково пространство за работа на JVM
Центарализирано инсталиране на runtime и кода Скалируем – понеже е
истинско решение за web server
Intranet възможен HTML формите се
съхраняват отделно различни хора могат да
работят по дизайна Библиотеки с готови тагове
• AWT и Swing не са налични– Лимитиран HTML
• Архитектурата е малко по-сложна– Application server – JSP container process
• Допълнителни езици– HTML и CSS– JavaScript– JSP tags
Предимства Недостатъци
Кога какво да използваме Java приложения когато:
Необходими контроли, подобни на Windows Няма web server Вътрешно приложение
Аплети когато: Има web server Необходимо централизирано разпределяне на кода Вътрешно приложение
JSPs когато: Комерсиални Web приложения (напр. E-commerce) Лесни клиенти и HTML изход