MIMINF:Aplikacje WWW: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Janusz (dyskusja | edycje)
Nie podano opisu zmian
 
 
(Nie pokazano 5 wersji utworzonych przez jednego użytkownika)
Linia 5: Linia 5:
== Opis ==
== 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.
Techniki i narzędzia programistyczne w budowie aplikacji i serwisów WWW.


== Sylabus ==
== Sylabus ==
=== Autor ===
=== Autor ===
* Maciej Zakrzewicz — Politechnika Poznańska
* Krzysztof Ciebiera — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki, Instytut Informatyki


=== Wymagania wstępne ===
=== Wymagania wstępne ===
* Sieci komputerowe
* Sieci komputerowe
* Bazy danych
* Bazy danych
* Programowanie obiektowe (język Java)
* Programowanie obiektowe


=== Zawartość ===
=== 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.
*Protokół HTTP.
* 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.
*Języki HTML, xHTML i CSS.
* 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.
*SSL i inne protokoły kryptograficzne WWW.
* 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.
*XML i XML-RPC.
* 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.
*Javascript.
* 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.  
*Ajax czyli Asynchronous JavaScript and XML.
* 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.
*Bezpieczeństwo aplikacji internetowych.
* Ó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.
*Budowa pośredników internetowych.
* 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''.
*Scalable Vector Graphics (SVG)


=== Literatura ===
=== Literatura ===
* T. Bray i inni (red.), Extensible Markup Language (XML) 1.0 (Third Edition) http://www.w3.org
* H.M. Deitel, P.J. Deitel, T,R. Nieto, ''Internet & World Wide Web. How to program'', Deitel & Associates Inc., 2001
* H.M. Deitel, P.J. Deitel, T,R. Nieto, ''Internet & World Wide Web. How to program'', Deitel & Associates Inc., 2001
* T. Dierks, C. Allen, The TLS Protocol Version 1.0, RFC 2246.
* R. Fielding i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616.
* A. Le Hors, Ian Jacobs (red.), HTML 4.01 Specification, http://www.w3.org
* D. C. Naik, ''Internet Standards and Protocols'', Microsoft Press, 1998
* D. C. Naik, ''Internet Standards and Protocols'', Microsoft Press, 1998
<!--
== Moduły ==
===Wykłady===
# Wprowadzenie (M. Zakrzewicz), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w01.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w01.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w01.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w01.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w01.tresc-1.0czb.pdf|PDF-czb]]
# Interfejs użytkownika I (M. Wojciechowski), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w02.tresc-1.1/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w02.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w02.tresc-1.1-toc|WIKI]], [[media:AWWW-1st3.6-w02.tresc-1.1kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w02.tresc-1.1czb.pdf|PDF-czb]]
# Interfejs użytkownika II (M. Morzy), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w03.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w03.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w03.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w03.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w03.tresc-1.0czb.pdf|PDF-czb]]
# HTTP (M. Zakrzewicz),  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/AWWW-1st3.6/AWWW-1st3.6-w04.tresc-1.1/player.html Flash], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/AWWW-1st3.6/AWWW-1st3.6-w04.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w04.tresc-1.1-toc|WIKI]], [[media:AWWW-1st3.6-w04.tresc-1.1kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w04.tresc-1.1czb.pdf|PDF-czb]]
# Logika prezentacji I (M. Zakrzewicz), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w05.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w05.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w05.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w05.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w05.tresc-1.0czb.pdf|PDF-czb]]
# Logika prezentacji II (M. Wojciechowski), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w06.tresc-1.1/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w06.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w06.tresc-1.1-toc|WIKI]], [[media:AWWW-1st3.6-w06.tresc-1.1kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w06.tresc-1.1czb.pdf|PDF-czb]]
# Logika prezentacji III (M. Morzy), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w07.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w07.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w07.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w07.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w07.tresc-1.0czb.pdf|PDF-czb]]
# Logika biznesowa (M. Morzy), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w08.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w08.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w08.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w08.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w08.tresc-1.0czb.pdf|PDF-czb]]
# Współpraca aplikacji WWW z bazami danych (M. Wojciechowski), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w09.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w09.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w09.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w09.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w09.tresc-1.0czb.pdf|PDF-czb]]
# Infrastruktura aplikacji WWW I (M. Wojciechowski), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w10.tresc-1.1/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w10.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w10.tresc-1.1-toc|WIKI]], [[media:AWWW-1st3.6-w10.tresc-1.1kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w10.tresc-1.1czb.pdf|PDF-czb]]
# Infrastruktura aplikacji WWW II (M. Wojciechowski), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w11.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w11.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w11.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w11.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w11.tresc-1.0czb.pdf|PDF-czb]]
# Serwery HTTP (M. Zakrzewicz), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w12.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w12.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w12.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w12.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w12.tresc-1.0czb.pdf|PDF-czb]]
# Bezpieczeństwo (M. Zakrzewicz), [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w13.tresc-1.0/player.html Flash], [http://osilek.mimuw.edu.pl/external/AWWW-1st3.6/AWWW-1st3.6-w13.test-1.0/quizmaker.html Test], [[AWWW-1st3.6-w13.tresc-1.0-toc|WIKI]], [[media:AWWW-1st3.6-w13.tresc-1.0kolor.pdf|PDF-kolor]], [[media:AWWW-1st3.6-w13.tresc-1.0czb.pdf|PDF-czb]]
=== Laboratoria ===
# HTML+CSS (M.Masewicz),  [[AWWW-1st3.6-l01.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l01.tresc-1.0kolor.pdf|PDF]]
# XML+XSL (M.Masewicz), [[AWWW-1st3.6-l02.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l02.tresc-1.0kolor.pdf|PDF]]
# JavaScript (P.Boiński), [[AWWW-1st3.6-l03.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l03.tresc-1.0kolor.pdf|PDF]]
# Serwlety Java (M.Masewicz), [[AWWW-1st3.6-l04.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l04.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l04.pliki-1.0.zip|PLIKI]]
# ASP.NET (M.Wojciechowski), [[AWWW-1st3.6-l05.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l05.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l05.pliki-1.0.zip|PLIKI]]
# PHP (M.Masewicz), [[AWWW-1st3.6-l06.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l06.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l06.pliki-1.0.zip|PLIKI]]
# JSP (P.Boiński), [[AWWW-1st3.6-l07.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l07.tresc-1.0kolor.pdf|PDF]]
# JSTL (P.Boiński), [[AWWW-1st3.6-l08.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l08.tresc-1.0kolor.pdf|PDF]]
# Serwlety Java + bazy danych (M.Masewicz), [[AWWW-1st3.6-l09.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l09.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l09.pliki-1.0.zip|PLIKI]]
# PHP + bazy danych (M.Masewicz), [[AWWW-1st3.6-l10.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l10.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l10.pliki-1.0.zip|PLIKI]]
# Struts  (M.Masewicz), [[AWWW-1st3.6-l11.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l11.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l11.pliki-1.0.zip|PLIKI]]
# JSF (M.Masewicz), [[AWWW-1st3.6-l12.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l12.tresc-1.0kolor.pdf|PDF]], [[media:AWWW-1st3.6-l11.pliki-1.0.zip|PLIKI]]
# Administrowanie serwerem aplikacji (M.Morzy), [[AWWW-1st3.6-l13.tresc-1.0|WIKI]], [[media:AWWW-1st3.6-l13.tresc-1.0kolor.pdf|PDF]]
-->

Aktualna wersja na dzień 09:35, 11 sty 2007

Forma zajęć

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

Opis

Techniki i narzędzia programistyczne w budowie aplikacji i serwisów WWW.

Sylabus

Autor

  • Krzysztof Ciebiera — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki, Instytut Informatyki

Wymagania wstępne

  • Sieci komputerowe
  • Bazy danych
  • Programowanie obiektowe

Zawartość

  • Protokół HTTP.
  • Języki HTML, xHTML i CSS.
  • SSL i inne protokoły kryptograficzne WWW.
  • XML i XML-RPC.
  • Javascript.
  • Ajax czyli Asynchronous JavaScript and XML.
  • Bezpieczeństwo aplikacji internetowych.
  • Budowa pośredników internetowych.
  • Scalable Vector Graphics (SVG)

Literatura

  • T. Bray i inni (red.), Extensible Markup Language (XML) 1.0 (Third Edition) http://www.w3.org
  • H.M. Deitel, P.J. Deitel, T,R. Nieto, Internet & World Wide Web. How to program, Deitel & Associates Inc., 2001
  • T. Dierks, C. Allen, The TLS Protocol Version 1.0, RFC 2246.
  • R. Fielding i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616.
  • A. Le Hors, Ian Jacobs (red.), HTML 4.01 Specification, http://www.w3.org
  • D. C. Naik, Internet Standards and Protocols, Microsoft Press, 1998