Personal tools

Aplikacje WWW

From Studia Informatyczne

Spis treści

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

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.

Sylabus

Autor

  • Maciej Zakrzewicz — Politechnika Poznańska

Wymagania wstępne

  • Sieci komputerowe
  • Bazy danych
  • Programowanie obiektowe (język Java)

Zawartość

  • Kurs 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ęść kursu 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ęść kursu (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ęść kursu (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ęść kursu (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ęść kursu (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ęść kursu (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ęść kursu (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ęść kursu (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.

Literatura

  • H.M. Deitel, P.J. Deitel, T,R. Nieto, Internet & World Wide Web. How to program, Deitel & Associates Inc., 2001
  • D. C. Naik, Internet Standards and Protocols, Microsoft Press, 1998

Moduły

Wykłady

  1. Wprowadzenie (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  2. Interfejs użytkownika I (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  3. Interfejs użytkownika II (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  4. HTTP (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  5. Logika prezentacji I (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  6. Logika prezentacji II (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  7. Logika prezentacji III (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  8. Logika biznesowa (M. Morzy), Flash, Test, WIKI, PDF-kolor, PDF-czb
  9. Współpraca aplikacji WWW z bazami danych (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  10. Infrastruktura aplikacji WWW I (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  11. Infrastruktura aplikacji WWW II (M. Wojciechowski), Flash, Test, WIKI, PDF-kolor, PDF-czb
  12. Serwery HTTP (M. Zakrzewicz), Flash, Test, WIKI, PDF-kolor, PDF-czb
  13. Bezpieczeństwo (M. Zakrzewicz), Flash, WIKI, PDF-kolor, PDF-czb

Laboratoria

  1. HTML+CSS (M.Masewicz), WIKI, PDF
  2. XML+XSL (M.Masewicz), WIKI, PDF
  3. JavaScript (P.Boiński), WIKI, PDF
  4. Serwlety Java (M.Masewicz), WIKI, PDF, PLIKI
  5. ASP.NET (M.Wojciechowski), WIKI, PDF, PLIKI
  6. PHP (M.Masewicz), WIKI, PDF, PLIKI
  7. JSP (P.Boiński), WIKI, PDF
  8. JSTL (P.Boiński), WIKI, PDF
  9. Serwlety Java + bazy danych (M.Masewicz), WIKI, PDF, PLIKI
  10. PHP + bazy danych (M.Masewicz), WIKI, PDF, PLIKI
  11. Struts (M.Masewicz), WIKI, PDF, PLIKI
  12. JSF (M.Masewicz), WIKI, PDF, PLIKI
  13. Administrowanie serwerem aplikacji (M.Morzy), WIKI, PDF