photo
APLIKACJE WWW
Celem wykładu jest przedstawienie architektur aplikacji internetowych oraz metod implementacji ich modułów. Omówione będą podstawowe składniki architektury WWW: warstwa cienkiego klienta, warstwa aplikacji, warstwa bazy danych, protokół HTTP, przeglądarka WWW, serwer HTTP, serwer aplikacji. Zostaną przedstawione podstawowe technologie implementacji interfejsu użytkownika, m.in. HTML, CSS, JavaScript, Java Applets, XML+XSL, technologie implementacji logiki prezentacji, m.in. CGI, serwlety Java, JavaServer Pages, PHP, Active Server Pages, technologie implementacji logiki biznesowej, m.in. JavaBeans, biblioteki znaczników JSP. Omówione będą zastosowania architektury Model-View-Controller w kontekście implementacji aplikacji WWW wraz z dostępnymi rozwiązaniami technologicznymi, m.in. Struts, JavaServer Faces. Przedstawione zostaną zagrożenia bezpieczeństwa aplikacji WWW oraz metody ochrony przed nimi.

Zawartość:
  • wykład rozpoczyna się wprowadzeniem do architektury WWW i problematyki aplikacji WWW (2h). Omawiana jest historia rozwoju technologii WWW. Następnie przedstawiane są składniki podstawowej architektury WWW: klient HTTP, serwer HTTP, protokół HTTP. W dalszej części wykładu definiowane są pojęcia aplikacji WWW, serwera aplikacji oraz komponentowe modele aplikacji WWW. Na zakończenie przedstawiamy podstawowe własności języka HTML.
  • Drugą część wykładu stanowią dwa moduły (5h) poświęcone interfejsowi użytkownika aplikacji WWW. W pierwszej kolejności omówione będą arkusze stylów CSS i ich wykorzystanie do formatowania dokumentów HTML. Następnie w podstawowym zakresie przedstawiony będzie język XML z uwzględnieniem ogólnej struktury dokumentu, opisu struktury za pomocą DTD i przestrzeni nazw. Kolejne zagadnienie to język XHTML, będący wersją HTML dostosowaną do reguł języka XML. Przedstawiony będzie język XSL służący do transformowania i formatowania dokumentów XML. Omówione zostaną zarówno część XSL dotycząca transformacji dokumentów (XSLT), jak i część dotycząca opisu sposobu formatowania (XSL-FO). W dalszej części wykładu zaprezentujemy znaczniki języka HTML służące do konstruowania formularzy oraz omówimy popularny język skryptowy JavaScript, a w szczególności podstawy języka (deklaracje zmiennych, wyrażenia, operatory języka, struktury kontrolne i instrukcje, w tym pętle i instrukcje warunkowe) oraz model DOM (ang. Document Object Model) definiujący interakcję między skryptem JavaScript i obiektami zawartymi w dokumencie HTML. Przedstawione zostaną również metody walidacji danych wprowadzanych przez użytkownika do formularzy HTML oraz metody manipulowania zawartością okna i dokumentu. Prezentację języka JavaScript zamknie omówienie metod pracy z łańcuchami znaków i datami oraz biblioteką oferującą bogaty zestaw funkcji matematycznych. Wykład zakończy prezentacja możliwości tworzenia interfejsu użytkownika za pomocą apletów języka Java.
  • Trzecią część wykładu (2h) stanowi przegląd własności funkcjonalnych serwerów HTTP na przykładzie serwera Apache. W ramach wykładu omówimy wewnętrzną architekturę serwera Apache, jego podstawowe parametry konfiguracyjne, strukturę i zastosowania dziennika serwera, mechanizmy odwzorowania logicznych ścieżek dostępu w ścieżki fizyczne, dyrektywy blokowe oraz funkcje ochrony dostępu do dokumentów znajdujących się po stronie serwera Apache.
  • Czwarta część wykładu (8h) skupia się na technologiach implementacji logiki prezentacji. Rozpoczyna się od przedstawienia klasyfikacji metod konstrukcji logiki prezentacji oraz omówienia dwóch przykładowych technologii implementacji serwletów: technologii CGI i technologii serwletów Java. Wykład obejmie architekturę i sposoby implementacji programów CGI, architekturę serwletów Java, sposoby implementacji serwletów Java, obsługę nagłówków HTTP, zmiennych Cookies i sesji HTTPSession. Następnie omówimy najważniejsze technologie szablonów (server pages) wykorzystywanych w aplikacjach WWW. Rozpoczniemy od krótkiego omówienia starszych technologii Server Side Includes (SSI) oraz Active Server Pages (ASP), a następnie bardziej szczegółowo — następcy ASP, czyli ASP.NET, oraz PHP. W dalszej części modułu zostaną przedstawione metody tworzenia logiki prezentacji aplikacji internetowej przy wykorzystaniu technologii szablonów rozwijanych dla języka Java. Podstawową technologią szablonów dla języka Java jest technologia JSP (ang. Java Server Pages), w ramach wykładu przedstawione zostaną cykl życia aplikacji JSP oraz podstawowe składowe technologii: deklaracje, dyrektywy i skryptlety. Dodatkowo zaprezentowany zostanie język EL (ang. Expression Language), który ułatwia tworzenie złożonych aplikacji JSP. W ostaniej części wykładu zostaną przedstawione komplementarne technologie szablonów dla języka Java: Velocity, WebMacro i FreeMarker.
  • Piąta część wykładu (2h) obejmuje zagadnienia tworzenia logiki biznesowej przy wykorzystaniu komponentów JavaBean i bibliotek znaczników JSP. Na początku zaprezentowana zostanie koncepcja komponentów JavaBean wraz z ich specyfikacją. Następnie omówione zostaną zagadnienia związane z wykorzystaniem komponentów JavaBean na stronach JSP. W szczególności omówione zostaną wzorce projektowe wykorzystujące komponenty JavaBean do komunikacji między poszczególnymi warstwami aplikacji internetowej. Druga część wykładu poświęcona będzie technologii bibliotek znaczników JSP – podstawowemu narzędziu służącemu do tworzenia dużych i złożonych aplikacji JSP. Koncepcja i implementacja mechanizmu bibliotek znaczników zostaną przedstawione na podstawie JSTL (ang. Java Standard Tag Library), standardowej biblioteki znaczników. Przykłady zilustrują sposób wykorzystania kilku rodzajów znaczników, m.in. znaczników podstawowych, formatujących, przetwarzających XML oraz obsługujących połączenie z bazą danych. Na koniec przedstawiona zostanie metoda tworzenia własnych znaczników JSP.
  • Szósta część wykładu (2h) przedstawia mechanizmy dostępu do baz danych w najpopularniejszych technologiach do tworzenia aplikacji WWW: Java EE, ASP.NET i PHP. W kontekście technologii Java EE przedstawione będą podstawy JDBC, charakterystyczny dla aplikacji Java EE mechanizm uzyskiwania połączeń z bazą danych poprzez źródła danych oraz wprowadzenie do technologii odwzorowania obiektowo-relacyjnego (O/RM) i standardu Java Persistence.
  • Siódma część wykładu (5h) omawia typową funkcjonalność wymaganą w aplikacjach internetowych, powtarzającą się niezależnie od konkretnych zastosowań i określaną mianem infrastruktury. Po ogólnym wprowadzeniu przedstawiona będzie architektura Web Forms dla ASP.NET oraz architektura Model-View-Controller i jej popularna implementacja dla platformy Java EE – Struts. Następnie omówiona zostanie technologia JavaServer Faces (JSF), ułatwiająca tworzenie aplikacji Java EE poprzez dostarczenie infrastruktury dla stanowego, komponentowego interfejsu użytkownika.
  • Ósmą część wykładu (2h) stanowi przegląd własności funkcjonalnych serwerów HTTP na przykładzie serwera Apache. W ramach wykładu omówimy wewnętrzną architekturę serwera Apache, jego podstawowe parametry konfiguracyjne, strukturę i zastosowania dziennika serwera, mechanizmy odwzorowania logicznych ścieżek dostępu w ścieżki fizyczne, dyrektywy blokowe oraz funkcje ochrony dostępu do dokumentów znajdujących się po stronie serwera Apache.
  • Dziewiąta, ostatnia część wykładu (2h) omawia najważniejsze metody atakowania aplikacji WWW oraz mechanizmy ochrony przed nimi. Poruszone zostaną następujące rodzaje zagrożeń: kradzież kodu źródłowego aplikacji JSP, atak na pola ukryte HTML, atak na zmienne Cookies, atak typu Path Traversal, atak typu SQL Injection, przejęcie sesji, atak typu Cross-Site Scripting i atak typu Denial of Service.
MATERIAŁY

© 2016 Maciej Zakrzewicz