10. Въведение в javaserver pages

47
10. Въведение в JavaServer Pages доц. д-р Станимир Стоянов катедра “Компютърни системи” Лекционен курс “Езици и среди за програмиране в Интернет”

Upload: igor-hester

Post on 30-Dec-2015

54 views

Category:

Documents


0 download

DESCRIPTION

10. Въведение в JavaServer Pages. Лекционен курс “ Езици и среди за програмиране в Интернет ”. доц. д-р Станимир Стоянов катедра “ Компютърни системи ”. Съдържание. 10 .1. Въведение 10 .2. JavaServer Pages & Servlets 10 .3. Обслужване на JSPs 10.4.Преглед на архитектурата - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 10.  Въведение в  JavaServer Pages

10. Въведение в JavaServer Pages

доц. д-р Станимир Стояновкатедра “Компютърни системи”

Лекционен курс “Езици и среди за програмиране в Интернет”

Page 2: 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. Обобщение & предимства

Page 3: 10.  Въведение в  JavaServer Pages

10.1. Въведение

● Използвайки сървлетната технология и развивайки се много бързо JavaServer Pages (JSP) технологията става един от най-съществените елементи в сървърното програмиране на Java.● JavaServer Pages е една спецификация

Page 4: 10.  Въведение в  JavaServer Pages

Какво са JavaServer Pages? JavaServer Pages разделят презентацията на

генерирането на съдържанието Доставят прост и бърз начин за създаване на

динамични страници (HTML, XML, ...) С вграден Java код Разширяеми с компоненти и потребителски тагове

Page 5: 10.  Въведение в  JavaServer Pages

10.2. JavaServer Pages & Servlets

JavaServer Pages използват сервлет технологията JSP контейнерите са сървлети Всяка JSP се компилира в runtime сървлет Съща производителност и преносимост

облагодетелствани от сървлет технологията Но леснотата за използване на дескриптивните

езици По-добрата възможност за web проектантите и

разработчиците

Page 6: 10.  Въведение в  JavaServer Pages

Сървлети : Java компоненти, които разширяват HTTP Server Генерират динамично съдържание

• Управляеми от контейнер• Изходът може да бъде HTML, XML или друг тип

Зареждат се при искане По всяко време могат да бъдат премахнати Съпоставят се на URLs Съществени абстаркции - Request, Response, Servlet Context,

Sessions

Page 7: 10.  Въведение в  JavaServer Pages

JSPs : Текстови документи съдържащи HTML, JSP tags, Java code “Inside-Out” сървлети - декларативни, ориентиран към

презентацията начин за създаване на сървлети. Предимства:

• По-лесни за използване (разделят представянето от кода)• По-лесни развойни средства (J2EE standard)

Използват :• Скриптове на сървъра (Server-Side Scripting)• Еталони (Templates)• Капсулиране на функционалността

Page 8: 10.  Въведение в  JavaServer Pages

Servlets или JSPs ?

Използване JSP’s за генериране на отговори Използване сървлети за контролери (FrontController Design

Pattern) Използване сървлети за обслужване или генериране на двоично

съдържание (binary content) Пример

Показване на shopping cart => използване JSP технология Генериране на images или charts=> използване на

сървлети Обработка на заявки => двете технологии JSP и Servlet са

подходящи

Page 9: 10.  Въведение в  JavaServer Pages

FrontController Design Pattern)

Page 10: 10.  Въведение в  JavaServer Pages

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

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

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

Когато една страница се изисква за първи път, тогава тя:● Се компилира автоматично от JSP-машината в един сървлет● След това се изпълнява.

JSP доставя различни възможности за комуникиране с:● Java класове● Сървлети● Аплети● Web сървъри.

Page 14: 10.  Въведение в  JavaServer Pages

Така ние можем да декомпозираме функционалността на Web-приложенията на отделни компоненти в добре дефинирани публични интерфейси и да ги интегрираме в една страница.

Page 15: 10.  Въведение в  JavaServer Pages

Този модел ни позволява ефективно разделение на дейностите:● Отделните разработчици могат да създава различни бизнес-

компонентите● Проектантът на страницата ще ги събере заедно в едно

приложение с малко на брой извиквания на методи При този модел за асемблирането на приложенията бизнес-

логиката е разделена от представянето на данните.

Page 16: 10.  Въведение в  JavaServer Pages

10.4. Преглед на архитектурата

JSP е просто един текстови файл с HTML или XML съдържание, в което могат да се интегрират JSP елементи (директни връзки към Java код)

Page 17: 10.  Въведение в  JavaServer Pages

Когато един потребител заяви една JSP, разположена върху сървъра, тогава:● Ако тя не е обработване преди това – страницата първо

се предава на JSP-машината● JSP-машината я компилира в един сървлет● Страницата се обработва● Резултатът се връща към потребителя

Жизнен цикъл

Page 18: 10.  Въведение в  JavaServer Pages

Заявка

Web-сървър (сървлет-машина)

JSP Handler Servlet

Проверка – файл променян след последната компилация?

JSP (първичен

код)

Съществуващ

сървлет

Файл променен?

Създаване на първичен

файл

Компилиране на сървлет

Изпълнение на новия сървлет

Изпълнение на съществуващия сървлет

да

не

Page 19: 10.  Въведение в  JavaServer Pages

JavaServer Pages се състоят от HTML страници със специални тагове, които позволяват включването на Java логика Scriptlets <% … %> Directives <%@ ... %> Expressions <%= … %> Declarations <%! … %> Other Tags - UseBean, setProperty ...

10.5. Елементи на JSP

Page 20: 10.  Въведение в  JavaServer Pages

● Директиви - иинформация за страниците● Декларативи - общи декларации на променливи и

методи.● Скриплети - Java код, вграден в страницата● Изрази - форматират изразите като низ за включване в

изхода на страницата.

Page 21: 10.  Въведение в  JavaServer Pages

A Simple JavaServer Page example<HTML><BODY><P>Hello! <BR>Today is: <%= new java.util.Date() %>

</BODY></HTML>

JSP – пример за израз

Page 22: 10.  Въведение в  JavaServer Pages

JSP - използва JavaBean

<HTML><BODY><jsp:useBean class=“beans.nameBean” id=“namebean” scope=“page”>

Employees: <%= nameBean.showEmps() %></BODY></HTML>

Page 23: 10.  Въведение в  JavaServer Pages

Потребителски 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

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

10.5.1. Директиви

Една JSP директива е израз, който предоставя на JSP-машината информация за страницата - доставят глобална информация към страницата

Напр.:● Импортни данни● Информация за обработка на грешки● Дали страницата е част от една сесия.

Page 26: 10.  Въведение в  JavaServer Pages

<%@ directive { attribute = “value” } %>

● Директивата може да има опционален брой атрибути● Всяка директива има XML еквивалент

Синтаксис на директивите

Page 27: 10.  Въведение в  JavaServer Pages

● Page – информация за страницата● Include – файлове, които ще бъдат дословно включени● Taglib – URL на една библиотека от тагове, която ще се

използва в страницата.

Примерни директиви

Page 28: 10.  Въведение в  JavaServer Pages

● 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

● 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

10.5.2. Декларации

JSP декларациите могат да се разглеждат като дефиниции на ниво класове (декларации на променливи за класове и методи), които ще се използват в страницата.

Синтаксис: <%! declaration >

Page 31: 10.  Въведение в  JavaServer Pages

Увеличава броячът с 1

Пример:

<%! String var1 = “x”; int count = 0;

private void incrementCount ( ){ count++;}

%>

Page 32: 10.  Въведение в  JavaServer Pages

10.5.3. Скриплети

● Дефинират се както обикновени блокове в Java, оградени с етикетите <% и %>

● Този код ще се помести в генерирания _jspService ( ) метод на сървлета.

● Кодът, дефиниран в скриплета има достъп до всяка декларирана променлива и компонент (JavaBean).

Page 33: 10.  Въведение в  JavaServer Pages

Съществува едно множество от вътрешни обекти, които се доставят за скриплетите от сървлетната среда.

Примери:● request – потребителска заявка. Обикновено един подклас

на HttpServletRequest● response – JSP отговор. Подклас на HttpResponse

Page 34: 10.  Въведение в  JavaServer Pages

● pageContext – сървърната среда, в която оперира страницата● session – Http session обект, свързан със заявката● application – сървлетен контекст, върнат от едно извикване на

getServletConfig( ).getContext( )● out - обектът, представляващ изходния стрийм● config – ServletConfig обектът на страницата● page – за самореференциране (път към самата себе си)● exception – подклас на Throwable, който се предава към URL на

страницата за грешки

Page 35: 10.  Въведение в  JavaServer Pages

10.5.4. Изрази

● JSP изразите са едно добро средство за вграждане на стойности в нашия HTML код.

● Всяко нещо между етикетите <% и %> се оценява, конвертира в символен низ и след това се показва.

● Изразите не завършват с ; - понеже JSP машината извежда изразите с out.println( )

● Изразите ни позволяват да параметризираме HTML. ● Така напр. кодът ще даде някакви условия за цикли, използвайки

JSP скриплет, като е възможно директно след това може да се вмъкне HTML код.

● Отделните части на скриплета трябва да бъдат оградени в самостоятелни <% %>

.

Page 36: 10.  Въведение в  JavaServer Pages

Стойнопст на брояча

<% for (int i = 0; i<10; i++){ %>

<BR>Counter value is <%= i %>

<% } %>

Пример:

Page 37: 10.  Въведение в  JavaServer Pages

10. 6. Създаване на JSP страници

Едно голямо предимство за разработване на JSP е, че можем да кодираме HTML без окомплектоването й с Java код (както е при сървлетите).

За създаването на JSPs можем да използваме редактори за HTML.

Page 38: 10.  Въведение в  JavaServer Pages

10.7. JSP приложения

JavaServer Pages технологията е разширение на сървлет технологията

Съдържат някои статични HTML (<BODY>) Съдържа някои JSP tags и Java code който създава динамично

съдържаниеt Може (опционално) да съдържа JavaScript

Когато JSP работи създава сървлети Спорно е дали JSPs са по-лесни за разработка в сравнение със

сървлетите Файловете имат разширения .jsp

Page 39: 10.  Въведение в  JavaServer Pages

JSP Приложение

Page 40: 10.  Въведение в  JavaServer Pages

10.8. Пример

Една JSP страница ще изпълнява следната функция: извежда латинската азбука 26 пъти, като всеки път променя началната буква

Page 41: 10.  Въведение в  JavaServer Pages

<HTML>

<HEAD>

<TITLE> Demo of a JSP page </TITLE>

</HEAD>

Page 42: 10.  Въведение в  JavaServer Pages

Кодът може да предизвика изклэчения

<BODY>

<! -- Set global information for the page -- >

<%@ page language = “java” %>

<! – Declare the character variable -- >

<%! Char c = 0; %>

Page 43: 10.  Въведение в  JavaServer Pages

<! -- 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

<! – Output the value of c.toString() to the HTML page -- ><% = c %>

<%

}

%>

<BR><%

}

%>

</BODY></HTML>

Page 45: 10.  Въведение в  JavaServer Pages

10.9. Обобщение & предимства

Добра производителност

Независимост от платформата

Лесен развой

Развиряемост с JavaBeans и потребителски тагове

<xml>, <xml>,

<html>, <html>,

……..

Page 46: 10.  Въведение в  JavaServer Pages

По-тънък клент Не е необходима памет и

дисково пространство за работа на JVM

Центарализирано инсталиране на runtime и кода Скалируем – понеже е

истинско решение за web server

Intranet възможен HTML формите се

съхраняват отделно различни хора могат да

работят по дизайна Библиотеки с готови тагове

• AWT и Swing не са налични– Лимитиран HTML

• Архитектурата е малко по-сложна– Application server – JSP container process

• Допълнителни езици– HTML и CSS– JavaScript– JSP tags

Предимства Недостатъци

Page 47: 10.  Въведение в  JavaServer Pages

Кога какво да използваме Java приложения когато:

Необходими контроли, подобни на Windows Няма web server Вътрешно приложение

Аплети когато: Има web server Необходимо централизирано разпределяне на кода Вътрешно приложение

JSPs когато: Комерсиални Web приложения (напр. E-commerce) Лесни клиенти и HTML изход