10. Въведение в JavaServer Pages
-
Upload
igor-hester -
Category
Documents
-
view
72 -
download
0
description
Transcript of 10. Въведение в JavaServer Pages
![Page 1: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/1.jpg)
10. Въведение в JavaServer Pages
доц. д-р Станимир Стояновкатедра “Компютърни системи”
Лекционен курс “Езици и среди за програмиране в Интернет”
![Page 2: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/2.jpg)
Съдържание
10.1. Въведение10.2. JavaServer Pages & Servlets 10.3. Обслужване на JSPs10.4.Преглед на архитектурата 10.5. Елементи на JSP10. 6. Създаване на JSP страници10.7. JSP Приложения10.8. Пример10.9. Обобщение & предимства
![Page 3: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/3.jpg)
10.1. Въведение
● Използвайки сървлетната технология и развивайки се много бързо JavaServer Pages (JSP) технологията става един от най-съществените елементи в сървърното програмиране на Java.● JavaServer Pages е една спецификация
![Page 4: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/4.jpg)
Какво са JavaServer Pages? JavaServer Pages разделят презентацията на
генерирането на съдържанието Доставят прост и бърз начин за създаване на
динамични страници (HTML, XML, ...) С вграден Java код Разширяеми с компоненти и потребителски тагове
![Page 5: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/5.jpg)
10.2. JavaServer Pages & Servlets
JavaServer Pages използват сервлет технологията JSP контейнерите са сървлети Всяка JSP се компилира в runtime сървлет Съща производителност и преносимост
облагодетелствани от сървлет технологията Но леснотата за използване на дескриптивните
езици По-добрата възможност за web проектантите и
разработчиците
![Page 6: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/6.jpg)
Сървлети : Java компоненти, които разширяват HTTP Server Генерират динамично съдържание
• Управляеми от контейнер• Изходът може да бъде HTML, XML или друг тип
Зареждат се при искане По всяко време могат да бъдат премахнати Съпоставят се на URLs Съществени абстаркции - Request, Response, Servlet Context,
Sessions
![Page 7: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/7.jpg)
JSPs : Текстови документи съдържащи HTML, JSP tags, Java code “Inside-Out” сървлети - декларативни, ориентиран към
презентацията начин за създаване на сървлети. Предимства:
• По-лесни за използване (разделят представянето от кода)• По-лесни развойни средства (J2EE standard)
Използват :• Скриптове на сървъра (Server-Side Scripting)• Еталони (Templates)• Капсулиране на функционалността
![Page 8: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/8.jpg)
Servlets или JSPs ?
Използване JSP’s за генериране на отговори Използване сървлети за контролери (FrontController Design
Pattern) Използване сървлети за обслужване или генериране на двоично
съдържание (binary content) Пример
Показване на shopping cart => използване JSP технология Генериране на images или charts=> използване на
сървлети Обработка на заявки => двете технологии JSP и Servlet са
подходящи
![Page 9: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/9.jpg)
FrontController Design Pattern)
![Page 10: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/10.jpg)
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
![Page 11: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/11.jpg)
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
![Page 12: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/12.jpg)
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
![Page 13: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/13.jpg)
Когато една страница се изисква за първи път, тогава тя:● Се компилира автоматично от JSP-машината в един сървлет● След това се изпълнява.
JSP доставя различни възможности за комуникиране с:● Java класове● Сървлети● Аплети● Web сървъри.
![Page 14: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/14.jpg)
Така ние можем да декомпозираме функционалността на Web-приложенията на отделни компоненти в добре дефинирани публични интерфейси и да ги интегрираме в една страница.
![Page 15: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/15.jpg)
Този модел ни позволява ефективно разделение на дейностите:● Отделните разработчици могат да създава различни бизнес-
компонентите● Проектантът на страницата ще ги събере заедно в едно
приложение с малко на брой извиквания на методи При този модел за асемблирането на приложенията бизнес-
логиката е разделена от представянето на данните.
![Page 16: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/16.jpg)
10.4. Преглед на архитектурата
JSP е просто един текстови файл с HTML или XML съдържание, в което могат да се интегрират JSP елементи (директни връзки към Java код)
![Page 17: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/17.jpg)
Когато един потребител заяви една JSP, разположена върху сървъра, тогава:● Ако тя не е обработване преди това – страницата първо
се предава на JSP-машината● JSP-машината я компилира в един сървлет● Страницата се обработва● Резултатът се връща към потребителя
Жизнен цикъл
![Page 18: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/18.jpg)
Заявка
Web-сървър (сървлет-машина)
JSP Handler Servlet
Проверка – файл променян след последната компилация?
JSP (първичен
код)
Съществуващ
сървлет
Файл променен?
Създаване на първичен
файл
Компилиране на сървлет
Изпълнение на новия сървлет
Изпълнение на съществуващия сървлет
да
не
![Page 19: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/19.jpg)
JavaServer Pages се състоят от HTML страници със специални тагове, които позволяват включването на Java логика Scriptlets <% … %> Directives <%@ ... %> Expressions <%= … %> Declarations <%! … %> Other Tags - UseBean, setProperty ...
10.5. Елементи на JSP
![Page 20: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/20.jpg)
● Директиви - иинформация за страниците● Декларативи - общи декларации на променливи и
методи.● Скриплети - Java код, вграден в страницата● Изрази - форматират изразите като низ за включване в
изхода на страницата.
![Page 21: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/21.jpg)
A Simple JavaServer Page example<HTML><BODY><P>Hello! <BR>Today is: <%= new java.util.Date() %>
</BODY></HTML>
JSP – пример за израз
![Page 22: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/22.jpg)
JSP - използва JavaBean
<HTML><BODY><jsp:useBean class=“beans.nameBean” id=“namebean” scope=“page”>
Employees: <%= nameBean.showEmps() %></BODY></HTML>
![Page 23: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/23.jpg)
Потребителски 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 24: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/24.jpg)
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>
![Page 25: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/25.jpg)
10.5.1. Директиви
Една JSP директива е израз, който предоставя на JSP-машината информация за страницата - доставят глобална информация към страницата
Напр.:● Импортни данни● Информация за обработка на грешки● Дали страницата е част от една сесия.
![Page 26: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/26.jpg)
<%@ directive { attribute = “value” } %>
● Директивата може да има опционален брой атрибути● Всяка директива има XML еквивалент
Синтаксис на директивите
![Page 27: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/27.jpg)
● Page – информация за страницата● Include – файлове, които ще бъдат дословно включени● Taglib – URL на една библиотека от тагове, която ще се
използва в страницата.
Примерни директиви
![Page 28: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/28.jpg)
● language=“java” – дава информация на сървлета за използвания във файла език (обикновено Java).
● extends=“package.class” – дефинира родителския клас на генерирания сървлет.
● import=“package.*,package.class” – съдържа списък на пакетите и класовете, които искаме да импортираме (аналогична на първата секция на Java пеограмите)
● session=“true | false” – показва дали данните за сесията са налични за страницата (по подразбиране true)
● buffer=“none | 8kb | sizekb” – определя дали изходният стрийм е буфериран (по подразбиране 8kb)
Някои от основни атрибути:
![Page 29: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/29.jpg)
● 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 тип и
множество на символите.
![Page 30: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/30.jpg)
10.5.2. Декларации
JSP декларациите могат да се разглеждат като дефиниции на ниво класове (декларации на променливи за класове и методи), които ще се използват в страницата.
Синтаксис: <%! declaration >
![Page 31: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/31.jpg)
Увеличава броячът с 1
Пример:
<%! String var1 = “x”; int count = 0;
private void incrementCount ( ){ count++;}
%>
![Page 32: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/32.jpg)
10.5.3. Скриплети
● Дефинират се както обикновени блокове в Java, оградени с етикетите <% и %>
● Този код ще се помести в генерирания _jspService ( ) метод на сървлета.
● Кодът, дефиниран в скриплета има достъп до всяка декларирана променлива и компонент (JavaBean).
![Page 33: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/33.jpg)
Съществува едно множество от вътрешни обекти, които се доставят за скриплетите от сървлетната среда.
Примери:● request – потребителска заявка. Обикновено един подклас
на HttpServletRequest● response – JSP отговор. Подклас на HttpResponse
![Page 34: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/34.jpg)
● pageContext – сървърната среда, в която оперира страницата● session – Http session обект, свързан със заявката● application – сървлетен контекст, върнат от едно извикване на
getServletConfig( ).getContext( )● out - обектът, представляващ изходния стрийм● config – ServletConfig обектът на страницата● page – за самореференциране (път към самата себе си)● exception – подклас на Throwable, който се предава към URL на
страницата за грешки
![Page 35: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/35.jpg)
10.5.4. Изрази
● JSP изразите са едно добро средство за вграждане на стойности в нашия HTML код.
● Всяко нещо между етикетите <% и %> се оценява, конвертира в символен низ и след това се показва.
● Изразите не завършват с ; - понеже JSP машината извежда изразите с out.println( )
● Изразите ни позволяват да параметризираме HTML. ● Така напр. кодът ще даде някакви условия за цикли, използвайки
JSP скриплет, като е възможно директно след това може да се вмъкне HTML код.
● Отделните части на скриплета трябва да бъдат оградени в самостоятелни <% %>
.
![Page 36: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/36.jpg)
Стойнопст на брояча
<% for (int i = 0; i<10; i++){ %>
<BR>Counter value is <%= i %>
<% } %>
Пример:
![Page 37: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/37.jpg)
10. 6. Създаване на JSP страници
Едно голямо предимство за разработване на JSP е, че можем да кодираме HTML без окомплектоването й с Java код (както е при сървлетите).
За създаването на JSPs можем да използваме редактори за HTML.
![Page 38: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/38.jpg)
10.7. JSP приложения
JavaServer Pages технологията е разширение на сървлет технологията
Съдържат някои статични HTML (<BODY>) Съдържа някои JSP tags и Java code който създава динамично
съдържаниеt Може (опционално) да съдържа JavaScript
Когато JSP работи създава сървлети Спорно е дали JSPs са по-лесни за разработка в сравнение със
сървлетите Файловете имат разширения .jsp
![Page 39: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/39.jpg)
JSP Приложение
![Page 40: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/40.jpg)
10.8. Пример
Една JSP страница ще изпълнява следната функция: извежда латинската азбука 26 пъти, като всеки път променя началната буква
![Page 41: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/41.jpg)
<HTML>
<HEAD>
<TITLE> Demo of a JSP page </TITLE>
</HEAD>
![Page 42: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/42.jpg)
Кодът може да предизвика изклэчения
<BODY>
<! -- Set global information for the page -- >
<%@ page language = “java” %>
<! – Declare the character variable -- >
<%! Char c = 0; %>
![Page 43: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/43.jpg)
<! -- 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;
%>
![Page 44: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/44.jpg)
<! – Output the value of c.toString() to the HTML page -- ><% = c %>
<%
}
%>
<BR><%
}
%>
</BODY></HTML>
![Page 45: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/45.jpg)
10.9. Обобщение & предимства
Добра производителност
Независимост от платформата
Лесен развой
Развиряемост с JavaBeans и потребителски тагове
<xml>, <xml>,
<html>, <html>,
……..
![Page 46: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/46.jpg)
По-тънък клент Не е необходима памет и
дисково пространство за работа на JVM
Центарализирано инсталиране на runtime и кода Скалируем – понеже е
истинско решение за web server
Intranet възможен HTML формите се
съхраняват отделно различни хора могат да
работят по дизайна Библиотеки с готови тагове
• AWT и Swing не са налични– Лимитиран HTML
• Архитектурата е малко по-сложна– Application server – JSP container process
• Допълнителни езици– HTML и CSS– JavaScript– JSP tags
Предимства Недостатъци
![Page 47: 10. Въведение в JavaServer Pages](https://reader036.fdocuments.net/reader036/viewer/2022062300/56812be0550346895d90527d/html5/thumbnails/47.jpg)
Кога какво да използваме Java приложения когато:
Необходими контроли, подобни на Windows Няма web server Вътрешно приложение
Аплети когато: Има web server Необходимо централизирано разпределяне на кода Вътрешно приложение
JSPs когато: Комерсиални Web приложения (напр. E-commerce) Лесни клиенти и HTML изход