1 / 47

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

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

igor-hester
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Съдържание 10.1. Въведение 10.2. JavaServer Pages & Servlets 10.3. Обслужване на JSPs 10.4.Преглед на архитектурата 10.5. Елементи на JSP 10. 6. Създаване на JSP страници 10.7. JSP Приложения 10.8. Пример 10.9. Обобщение & предимства

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

  4. Какво са JavaServer Pages? • JavaServer Pagesразделят презентацията на генерирането на съдържанието • Доставят прост и бърз начин за създаване на динамични страници (HTML, XML, ...) • С вграден Java код • Разширяеми с компоненти и потребителски тагове

  5. 10.2. JavaServer Pages & Servlets • JavaServer Pages използват сервлет технологията • JSP контейнерите са сървлети • Всяка JSP се компилира в runtime сървлет • Съща производителност и преносимост • облагодетелствани от сървлет технологията • Но леснотата за използване на дескриптивните езици • По-добрата възможност за web проектантите иразработчиците

  6. Сървлети : • Java компоненти, които разширяват HTTP Server • Генерират динамично съдържание • Управляеми от контейнер • Изходът може да бъде HTML, XML или друг тип • Зареждат се при искане • По всяко време могат да бъдат премахнати • Съпоставят се на URLs • Съществени абстаркции - Request, Response, Servlet Context, Sessions

  7. JSPs : • Текстови документи съдържащи HTML, JSP tags, Java code • “Inside-Out” сървлети - декларативни, ориентиран към презентацията начин за създаване на сървлети. • Предимства: • По-лесни за използване (разделят представянето от кода) • По-лесни развойни средства (J2EE standard) • Използват : • Скриптове на сървъра (Server-Side Scripting) • Еталони (Templates) • Капсулиране на функционалността

  8. Servlets или JSPs ? • Използване JSP’s за генериране на отговори • Използване сървлети за контролери (FrontController Design Pattern) • Използване сървлети за обслужване или генериране на двоично съдържание (binary content) • Пример • Показване на shopping cart => използване JSP технология • Генериране на images или charts=> използване на сървлети • Обработка на заявки => двете технологии JSP и Servlet са подходящи

  9. FrontController Design Pattern)

  10. 10.3. Обслужване на JSPs http://localhost:8080/Hello.jsp Java JSP Servlet Compiler Translator Runner JDBC Outputof Hello HTML /XML JSP SourceHello.jsp Generated file Hello.java Servlet class Hello JSP runtime

  11. Database JSP Runtime Web Tier EIS Tier Client Tier Business Tier Java StandaloneRuntime JSP Pages Enterprise JavaBeans JavaApplication Browser Business Componentsfor Java Servlets Pure HTML Applet

  12. Database Servlet Runtime Web Tier EIS Tier Client Tier Business Tier Java StandaloneRuntime JSP Pages Enterprise JavaBeans JavaApplication Browser Business Componentsfor Java Servlets Pure HTML Applet

  13. Когато една страница се изисква за първи път, тогава тя: • Се компилира автоматично от JSP-машината в един сървлет • След това се изпълнява. • JSP доставя различни възможности за комуникиране с: • Java класове • Сървлети • Аплети • Web сървъри.

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

  15. Този модел ни позволява ефективно разделение на дейностите: • Отделните разработчици могат да създава различни бизнес-компонентите • Проектантът на страницата ще ги събере заедно в едно приложение с малко на брой извиквания на методи • При този модел за асемблирането на приложенията бизнес-логиката е разделена от представянето на данните.

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

  17. Жизнен цикъл Когато един потребител заяви една JSP, разположена върху сървъра, тогава: • Ако тя не е обработване преди това – страницата първо се предава на JSP-машината • JSP-машината я компилира в един сървлет • Страницата се обработва • Резултатът се връща към потребителя

  18. Заявка да не Web-сървър (сървлет-машина) Проверка – файл променян след последната компилация? JSP (първичен код) Съществуващ сървлет JSP Handler Servlet Изпълнение на съществуващия сървлет Файл променен? Създаване на първичен файл Изпълнение на новия сървлет Компилиране на сървлет

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

  20. Директиви - иинформация за страниците • Декларативи - общи декларации на променливи и методи. • Скриплети - Java код, вграден в страницата • Изрази - форматират изразите като низ за включване в изхода на страницата.

  21. JSP – пример за израз A Simple JavaServer Page example <HTML> <BODY> <P>Hello! <BR> Today is:<%= new java.util.Date() %> </BODY> </HTML>

  22. JSP - използва JavaBean <HTML> <BODY> <jsp:useBean class=“beans.nameBean” id=“namebean” scope=“page”> Employees: <%=nameBean.showEmps() %> </BODY> </HTML>

  23. Потребителски JSP тагове <HTML> <BODY> <%@ taglib uri=“/myowntags.tld” prefix=“mytags” %> <P> Today’s Date is: <mytags:ShowDate format=“mm/dd/yy”> </BODY> </HTML> Custom Tag Libraries with JSP 1.1

  24. Page Elements ...<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> • Standard Tags • ‘Use Bean’ • Session Management • Alternate Languages • Custom Tags

  25. 10.5.1. Директиви Една JSP директива е израз, който предоставя на JSP-машината информация за страницата - доставят глобална информация към страницата Напр.: • Импортни данни • Информация за обработка на грешки • Дали страницата е част от една сесия.

  26. Синтаксис на директивите <%@ directive { attribute = “value” } %> • Директивата може да има опционален брой атрибути • Всяка директива има XML еквивалент

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

  28. Някои от основни атрибути: • language=“java” – дава информация на сървлета за използвания във файла език (обикновено Java). • extends=“package.class” – дефинира родителския клас на генерирания сървлет. • import=“package.*,package.class” – съдържа списък на пакетите и класовете, които искаме да импортираме (аналогична на първата секция на Java пеограмите) • session=“true | false”– показва дали данните за сесията са налични за страницата (по подразбиране true) • buffer=“none | 8kb | sizekb” – определя дали изходният стрийм е буфериран (по подразбиране 8kb)

  29. 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 тип и множество на символите.

  30. 10.5.2. Декларации JSP декларациите могат да се разглеждат като дефиниции на ниво класове (декларации на променливи за класове и методи), които ще се използват в страницата. Синтаксис:<%!declaration >

  31. Увеличава броячът с 1 Пример: <%! String var1 = “x”; int count = 0; private void incrementCount ( ) { count++; } %>

  32. 10.5.3. Скриплети • Дефинират се както обикновени блокове в Java, оградени с етикетите <% и %> • Този код ще се помести в генерирания _jspService ( ) метод на сървлета. • Кодът, дефиниран в скриплета има достъп до всяка декларирана променлива и компонент (JavaBean).

  33. Съществува едно множество от вътрешни обекти, които се доставят за скриплетите от сървлетната среда. Примери: • request – потребителска заявка. Обикновено един подклас на HttpServletRequest • response – JSP отговор. Подклас на HttpResponse

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

  35. 10.5.4. Изрази • JSP изразите са едно добро средство за вграждане на стойности в нашия HTML код. • Всяко нещо между етикетите <% и %> се оценява, конвертира в символен низ и след това се показва. • Изразите не завършват с ; - понеже JSP машината извежда изразите с out.println( ) • Изразите ни позволяват да параметризираме HTML. • Така напр. кодът ще даде някакви условия за цикли, използвайки JSP скриплет, като е възможно директно след това може да се вмъкне HTML код. • Отделните части на скриплета трябва да бъдат оградени в самостоятелни <% %> .

  36. Стойнопст на брояча Пример: <% for (int i = 0; i<10; i++) { %> <BR> Counter value is <%= i %> <% } %>

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

  38. 10.7. JSP приложения • JavaServer Pages технологията е разширение на сървлет технологията • Съдържат някои статични HTML (<BODY>) • Съдържа някои JSP tags и Java code който създава динамично съдържаниеt • Може (опционално) да съдържа JavaScript • Когато JSP работи създава сървлети • Спорно е дали JSPs са по-лесни за разработка в сравнение със сървлетите • Файловете имат разширения .jsp

  39. JSP Приложение

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

  41. <HTML> <HEAD> <TITLE> Demo of a JSP page </TITLE> </HEAD>

  42. Кодът може да предизвика изклэчения <BODY> <! -- Set global information for the page -- > <%@ page language = “java” %> <! – Declare the character variable -- > <%! Char c = 0; %>

  43. <! -- 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 letter c = (char) (0x41 + (26 – i + j) % 26; %>

  44. <! – Output the value of c.toString() to the HTML page -- > <% = c %> <% } %> <BR> <% } %> </BODY> </HTML>

  45. 10.9. Обобщение & предимства • Добра производителност • Независимост от платформата • Лесен развой • Развиряемост с JavaBeans и потребителски тагове <xml>, <html>, ….

  46. Предимства Недостатъци • AWT и Swing не са налични • Лимитиран HTML • Архитектурата е малко по-сложна • Application server • JSP container process • Допълнителни езици • HTML и CSS • JavaScript • JSP tags • По-тънък клент • Не е необходима памет и дисково пространство за работа на JVM • Центарализирано инсталиране на runtime и кода • Скалируем – понеже е истинско решение за web server • Intranet възможен • HTML формите се съхраняват отделно • различни хора могат да работят по дизайна • Библиотеки с готови тагове

  47. Кога какво да използваме • Java приложения когато: • Необходими контроли, подобни на Windows • Няма web server • Вътрешно приложение • Аплети когато: • Има web server • Необходимо централизирано разпределяне на кода • Вътрешно приложение • JSPs когато: • Комерсиални Web приложения (напр. E-commerce) • Лесни клиенти и HTML изход

More Related