1 / 60

Aplikacje Internetowe

Organizacja Przedsięwzięć Programistycznych, 26 lutego 2003. Aplikacje Internetowe. Bartosz Walter Bartek.Walter@man.poznan.pl Michał Jasiński Michal.Jasinski@cs.put.poznan.pl. Motto.

anila
Download Presentation

Aplikacje Internetowe

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. Organizacja Przedsięwzięć Programistycznych, 26 lutego 2003 Aplikacje Internetowe Bartosz Walter Bartek.Walter@man.poznan.pl Michał Jasiński Michal.Jasinski@cs.put.poznan.pl OPP | Aplikacje Internetowe

  2. Motto Real Programmers never work 9am to 5pm. If any Real Programmer are around at 9:00am, its because they were up all night. Real Programers Don’t... OPP | Aplikacje Internetowe

  3. Agenda • Protokół HTTP • Java ServletsTM • PHP • JavaScript OPP | Aplikacje Internetowe

  4. Część I Protokół HTTP OPP | Aplikacje Internetowe | Protokół HTTP

  5. GET i POST – podstawowe metody HTTP GET /blah/index.html HTTP/1.0 Accept: text/html User-Agent: Lynx/2.2 libwww/2.14 <CRLF> <CRLF> POST /cgi-bin/post-query HTTP/1.0 Accept: text/html User-Agent: Lynx/2.2 libwww/2.14 Content-type: application/x-www-form-urlencoded Content-length: 150 <CRLF> <CRLF> org=CyberWeb%20SoftWare &users=10000 &browsers=lynx OPP | Aplikacje Internetowe | Protokół HTTP

  6. Budowa żądania HTTP GET /index.html HTTP/1.0 Host: www.gazeta.pl User-Agent: MSIE/Mozilla <CRLF> <CRLF> <data> initial line headers empty line body OPP | Aplikacje Internetowe | Protokół HTTP

  7. Budowa odpowiedzi HTTP HTTP/1.0 200 OK Date: Sunday, 25 November 2001 18:42:05 GMT Content-Type: text/html Content-Length: 109 <data> initial line headers empty line body OPP | Aplikacje Internetowe | Protokół HTTP

  8. Część II Java ServletsTM OPP | Aplikacje Internetowe | Java Servlets

  9. Kontener GET /index.html HTTP/1.0 <HTML> <HEAD> <BODY>... Servlet Żądanie Odpowiedź Koncepcja działania OPP | Aplikacje Internetowe | Java Servlets

  10. Servlet Cykl życia serwleta void init(ServletConfig)  void service(ServletRequest, ServletResponse) void doGet(ServletRequest, ServletResponse) void doPost(ServletRequest, ServletResponse) void destroy()  javax.servlet.Servlet OPP | Aplikacje Internetowe | Java Servlets

  11. Konfiguracja web.xml <servlet> <servlet-name>serwlet_A</servlet-name> <servlet-class> moj.pakiet.ServletA </servlet-class> <init-param> <param-name>parametr</param-name> <param-value>wartość</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>serwlet_A</servlet-name> <url-pattern>/A/*</url-pattern> </servlet-mapping> Nazwa serwleta Parametry Przypisanie do URLi OPP | Aplikacje Internetowe | Java Servlets

  12. Serwlet A HttpServletRequest Żądanie Session management JSESSIONID getSession() Sesja zakodowany w URL lub cookie OPP | Aplikacje Internetowe | Java Servlets

  13. Pierwszy serwlet public class MojSerwlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter writer = res.getWriter(); HttpSession session = request.getSession(true); String visited = (String) session.getAttribute("first"); if (visited == null) writer.println("<h1>Hello, world!</h1>"); else writer.println("<h1>Hello, " + visited + " world!</h1>"); session.setAttribute("first", "again"); writer.close(); } } OPP | Aplikacje Internetowe | Java Servlets

  14. Freemarker – biblioteka do obsługi template'ów • Zapisywanie odpowiedzi przez serwlet jest niewygodne! http://freemarker.sourceforge.net/ void doGet(request, response) { HashModel root = new HashModel(); root.put("name", "Hello, world!"); Template tmpl = FileTemplateCache.getTemplate("/index.tmpl"); tmpl.process(root, response) } <HTML>... ${name} </HTML> OPP | Aplikacje Internetowe | Java Servlets

  15. Część III Język PHP Skrypty po stronie Serwera WWW OPP | Aplikacje Internetowe | PHP

  16. Wstęp Aplikacje internetowe Większość problemów dot. aplikacji Web jest prosta Rozwiązania – niekoniecznie. Mnogość architektur Systemy dwu- i trójwarstwowe, Warstwy pośrednie, Maszyny wirtualne, itd.. Strony internetowe Dokumenty tekstowe o zdefiniowanej strukturze. OPP | Aplikacje Internetowe | PHP

  17. #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #define ishex(x) (((x) >= '0' && (x) <= '9') || ((x) >= 'a' && (x) <= 'f') || ((x) >= 'A' && (x) <= 'F')) int htoi(char *s) { int value; char c; c = s[0]; if(isupper(c)) c = tolower(c); value=(c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16; c = s[1]; if(isupper(c)) c = tolower(c); value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10; return(value); } void main(int argc, char *argv[]) { char *params, *data, *dest, *s, *tmp; char *name, *age; puts("Content-type: text/html\r\n"); puts("<html><head><title>Form Example</title></head>"); puts("<body><h1>My Example Form</h1>"); puts("<form action=\"form.cgi\" method=\"GET\">"); puts("Name: <input type=\"text" name=\"name\">"); } while(s=strtok(NULL"&")); Wstęp Proste (?) rozwiązanie: Program obsługi formularza w C • puts("Name: <input type=\"text" name=\"name\">"); puts("Age: <input type=\"text\" name=\"age\">"); puts("<br><input type=\"submit\">"); puts("</form>"); data = getenv("QUERY_STRING"); if(data && *data) { params = data; dest = data; while(*data) { if(*data=='+') *dest=' '; else if(*data == '%' && ishex(*(data+1))&&ishex(*(data+2))) { *dest = (char) htoi(data + 1); data+=2; } else *dest = *data; data++; dest++; } *dest = '\0'; s = strtok(params,"&"); do { tmp = strchr(s,'='); if(tmp) { *tmp = '\0'; if(!strcmp(s,"name")) name = tmp+1; else if(!strcmp(s,"age")) age = tmp+1; } } while(s=strtok(NULL"&")); printf("Hi %s, you are %s years old\n",name,age); } puts("</body></html>"); } OPP | Aplikacje Internetowe | PHP

  18. Wstęp Alternatywa: Perl oraz CGI.pm use CGI qw(:standard); print header; print start_html('Form Example'), h1('My Example Form'), start_form, "Name: ", textfield('name'), p, "Age: ", textfield('age'), p, submit, end_form; if(param()) { print "Hi ",em(param('name')), "You are ",em(param('age')), " years old"; } print end_html; Kod jest łatwiejszy do pisania i czytania... ...dla programistów. OPP | Aplikacje Internetowe | PHP

  19. Wstęp PHP: Podejście „HTML-centryczne” <html> <header> <title>Form Example</title> </header> <body> <h1>My Example Form</h1> <form action="form.phtml" method="POST"> Name: <input type="text" name="name"> Age: <input type="text" name="age"> </form> <?if($name):?> Hi <?echo $name?>, you are <?echo $age?> years old <?endif?> </body></html> „Surowy HTML” + minimum logiki (biznesowej ) OPP | Aplikacje Internetowe | PHP

  20. PHP: Rozwiązanie Podstawowe informacje: • PHP – HyPertext Preprocessor • Język skryptów uruchamianych po stronie serwera • Dynamiczne generowanie treści stron WWW • Wsparcie dla bazy danych • Szeroki wachlarz rozszerzeń • Rozwiązanie open-source OPP | Aplikacje Internetowe | PHP

  21. PHP: Rozwiązanie „Dziwne... Kto tego używa?” • Mitsubishi • Redhat • Der Spiegel • MP3-Lycos • Ericsson • NASA • i inni OPP | Aplikacje Internetowe | PHP

  22. PHP: Rozwiązanie Zalety: • Łatwy w użyciu i konserwacji (vs. Perl, ASP, ...) • Prostota = Krótki czas tworzenia aplikacji • Niezależny od platformy systemowej (Win32, Unix, ...) • Bogaty zbiór interfejsów do baz danych • Rozwiązanie sprawdzone • Otwarte API = Rozszerzalność • Wsparcie ze strony Apache oraz MySQL • Jest tani  OPP | Aplikacje Internetowe | PHP

  23. PHP: Rozwiązanie Wady: • Kod PHP jest połączony z kodem HTML strony WWW = Trudności z zarządzaniem witryną i konserwacją w dłuższej perspektywie • Wymaga wsparcia ze strony serwera OPP | Aplikacje Internetowe | PHP

  24. PHP: Rozwiązanie Alternatywy: • HTML + DHTML • Perl • Active Server Pages (Microsot) • Java Server Pages (Sun) • Cold Fusion (Macromedia) OPP | Aplikacje Internetowe | PHP

  25. Żądanie HTTP HTML HTTP HTML PHP: Architektura zewnętrzna Internet Serwer WWW Serwer Aplikacji Skrypty PHP Dok. HTML Moduł PHP Przeglądarka OPP | Aplikacje Internetowe | PHP

  26. Serwer WWW API Serwera API PHP T S R M Jądro PHP T S R M MySQL LDAP SNMP ZEND API Rozszerzenia ZEND Motor ZEND Kompilator run-time Moduł wykonawczy PHP: Architektura wewnętrzna OPP | Aplikacje Internetowe | PHP

  27. PHP: Niezależność od platformy Wspomagane platformy: • UNIX i Linux (większość dystrybucji) • Win32 (NT/95/98/2000) • QNX • MacOS • OSX • OS/2 • BeOS • OS/390 (w fazie testów) • AS/400 (w fazie testów) OPP | Aplikacje Internetowe | PHP

  28. PHP: Serwery Interfejsy dla serwerów aplikacyjnych: • Moduł Apache (UNIX, Win32) • CGI/FastCGI • ISAPI (IIS, Zeus) • Serwlety Java • AOL Server • thttpd • fnttpd • Moduł Apache 2.0 (w fazie testów) OPP | Aplikacje Internetowe | PHP

  29. PHP: Składnia Osadzanie skryptu na stronie HTML • Styl SGML (short-open) <? Kod_PHP ?> • Styl XML (kanoniczny) <?php Kod_PHP ?> • Styl ASP <% code %> • Styl JavaScript (HTML) <SCRIPT language="php"> Kod_PHP </SCRIPT> OPP | Aplikacje Internetowe | PHP

  30. PHP: Składnia Dołączanie plików zewnętrznych • Zewnętrzne pliki zawierające funkcje PHP mogą być dołączane do źródła programu: <?php include ‘functions.inc’; ?> <?php require ‘functions.php’; ?> • Prawa dostępu • Gdzie tkwi haczyk? OPP | Aplikacje Internetowe | PHP

  31. PHP: Składnia Uruchamianie i debugowanie skryptów • PHP zwykle nie wypisuje na wyjściu stanu przetwarzania • Generacja danych wyjściowych: • Procedura echo echo "<p>To jest paragraf.</p>"; • Funkcja print print ("<p>To także jest paragraf.</p>"); 1 = sukces, 0 = porażka OPP | Aplikacje Internetowe | PHP

  32. PHP: Składnia Stałe, zmienne... • Stałe: define("PI", 3.1416) • Zmienne: • Tworzone dynamicznie • Lokalne i globalne • $mojaZmienna • Typy: String, Integer, Double, Boolean (PHP 4.0), Array (asjocjacyjne i mieszane), Object (metody i własności) • Dynamiczna konwersja typów OPP | Aplikacje Internetowe | PHP

  33. PHP: Składnia Elementy języka (1) • Operatory (arytmetyczne, logiczne, znakowe) • Komentarze (liniowe i blokowe, jak w C) • Zmienne „wbudowane”: • Środowisko PHP • CGI • Żądania HTTP OPP | Aplikacje Internetowe | PHP

  34. PHP: Zastosowania Aplikacje Internetowe (1) • Kodowanie (m. in. HTML, base64, MD5, DES, IDEA, itd..) • Dostęp do plików (odczyt/zapis, URL) • Zarządzenie sesją – „Ciasteczka” • Interfejsy do baz danych • Adabas D • IBM DB2 • Informix • Ingres • Interbase • Direct MS-SQL • MySQL • ODBC • Oracle (OCI7,OCI8) • PostgreSQL • Sybase • dBase • filePro (read-only) • dbm (ndbm, gdbm, Berkeley db) OPP | Aplikacje Internetowe | PHP

  35. PHP: Zastosowania Aplikacje Internetowe (2) • Dostęp do bazy danych: • Native API – związane z konkretną BD • Unified-ODBC – Native API + CLI (Call Level Interface) • ODBC – Bez pośrednictwa Native API OPP | Aplikacje Internetowe | PHP

  36. PHP: Zastosowania Rozszerzenia • Generacja plików PDF • DCOM (tylko dla Win32) • Java Connectivity • gettext (GNU internationalization) • zlib (skompresowane IO) • Konwersja tekstu (UTF-8, Cyrylica, Hebrajski) • SWF (Flash) • ASPELL/PSPELL • XSLT (Sablotron, libxslt, Xalan) • Itp. • GD (GIF, JPEG, PNG, WBMP) • LDAP • SNMP • IMAP (POP, NNTP) • FTP • MCAL • IMSP • IPTC • BC/GMP (matematyka precyzyjna) • Hyperwave • XML parser OPP | Aplikacje Internetowe | PHP

  37. PHP: Dobre praktyki Uwaga na niezainicjowane zmienne Zawsze ufaj użytkownikowi. Nigdy – jego danym . OPP | Aplikacje Internetowe | PHP

  38. PHP: Podsumowanie • PHP to dynamiczny Internet • Język skryptowy podobny do C • Elastyczne, lecz proste metody zwiększania atrakcyjności witryn • Technologia niezależna od platformy • Zawiera udogodnienia dla twórców WWW • Rozszerzalność OPP | Aplikacje Internetowe | PHP

  39. Część IV JavaScript Skrypty po stronie przeglądarki WWW OPP | Aplikacje Internetowe | JavaScript

  40. WWW Wstęp Dawno, dawno temu... • HTML jest statyczny • HTML jest nudny • HTML nie jest interaktywny • HTML niewystarczająco przyciąga uwagę użytkowników Wniosek: WWW potrzebuje czegoś więcej niż tylko HTML! To takie nudne... OPP | Aplikacje Internetowe | JavaScript

  41. Wstęp W poszukiwaniu straconego czasu... • CGI? Zbyt „ciężkie” • Dodatki i wtyczki? Niewygodne • Aplety? Skomplikowane A by może tak jakaś elastyczna i funkcjonalna technologia? OPP | Aplikacje Internetowe | JavaScript

  42. Wstęp HIStory Początek lat 1990tychNetscape Communications (Netscape Navigator + LiveScript 1995Netscape Communications i Sun Microsystems Java + JavaScript = JavaScript 1.0 „Mała” i „Miękka” ewolucja MS JScript  MS VBScript  JavaScript OPP | Aplikacje Internetowe | JavaScript

  43. JavaScript: Podstawy JavaScript vs. Java OPP | Aplikacje Internetowe | JavaScript

  44. Client-side JavaScipt Dodatki po stronie klienta Dodatkowe obiekty związane z przeglądarką (np. dokument, okno, historia, itp.) Dodatki po stronie serwera Dodatkowe obiekty związane z serwerem (np. baza danych, serwer, itp.) Serwer-side JavaScipt JavaScript: Architektura Core JavaScript Podstawowe elementy języka (np. zmienne, funkcje elementarne obiekty, itp.) OPP | Aplikacje Internetowe | JavaScript

  45. JavaScript: Kompatybilność Przeglądarki, a zgodność wersji JavaScript • JavaScript 1.0 (NN 2.0, IE 3.0, Opera 3.0) • JavaScript 1.1 (NN 2.0, IE 4.0, Opera 3.0) • JavaScript 1.2 (NN 2.0, IE 4.0, Opera 3.0) • JavaScript 1.3 (NN 4.5/4.7, IE 5.0, Opera 4.0) • JavaScript 1.4 (n/a) • JavaScript 1.5 (NN 6.0, IE 5.5) OPP | Aplikacje Internetowe | JavaScript

  46. JavaScript: Ograniczenia Bezpieczeństwo Ograniczona funkcjonalność Dostęp do zdalnych plików i środowiska użytkownika, Możliwość otwierania połączeń sieciowych Polityka „zaufanego źródła” Dostęp tylko do skryptów z tego samego serwera Możliwość korzystania z bezpiecznych połączeń HTTPS Możliwość podpisywania skryptów OPP | Aplikacje Internetowe | JavaScript

  47. Nadawca Odbiorca Funkcja haszująca Funkcja haszująca Zawartość podpisana Klucz prywatny Klucz publiczny + Certyfikat klucza publicznego JavaScript: Bezpieczeństwo Certyfikaty OPP | Aplikacje Internetowe | JavaScript

  48. JavaScript: Charakterystyka Zalety i zastosowania: • „Lekka” i elastyczna technologia • Interakcja z użytkownikiem na stronach WWW • Dynamiczne generowanie treści • Weryfikacja danych użytkownika • Lepsza obsługa stron wykorzystujących ramki • Wizualna informacja zwrotna • Formatowanie i obsługa prezentacji danych • Pełna obsługa DOM OPP | Aplikacje Internetowe | PHP

  49. JavaScript: Charakterystyka Wady: • Prostota i ograniczenia języka wykluczają zaawansowane zastosowania • Trudności z ochroną kodu skryptów • Złożone programy zwiększają rozmiar stron przesyłanych do przeglądarki użytkownika • Problemy z kompatybilnością • Brak specjalizowanych środowisk programistycznych OPP | Aplikacje Internetowe | PHP

  50. JavaScript: Rozwiązanie Alternatywy: • JScript, VBScript • ActiveX • Java applets • .NET OPP | Aplikacje Internetowe | PHP

More Related