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

Preview:

DESCRIPTION

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

Citation preview

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 изход

Recommended