Aplikacje Internetowe. przygotował: pawel@kasprowski.pl



Podobne dokumenty
Aplikacje Internetowe. Zakres przedmiotu. Plan ramowy. Tworzenie aplikacji internetowych w języku Java w środowisku Eclipse

Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z

Tworzenie aplikacji internetowych w języku Java

Podstawy języka Java. przygotował:

Wybrane działy Informatyki Stosowanej

1 Wprowadzenie do J2EE

Aplikacje Internetowe, Servlety, JSP i JDBC

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

prepared by: Programowanie WWW Servlety

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje WWW - laboratorium

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

prepared by: Programowanie WWW Model-View-Controller

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

OpenLaszlo. OpenLaszlo

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Java jako język programowania

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Środowisko NetBeans. Paweł Boguszewski

Tworzenie oprogramowania

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

Programowanie w Internecie

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Programowanie obiektowe

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Wybrane działy Informatyki Stosowanej

Załącznik 1 instrukcje instalacji

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Zaawansowane aplikacje internetowe

1.Wstęp. 2.Generowanie systemu w EDK

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

(argument dla męskiej m. ęści populacji)

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Wykład 1: Wprowadzenie do technologii Java

Zaawansowane aplikacje internetowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Wybrane działy Informatyki Stosowanej

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Programowanie Komponentowe WebAPI

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

MIGRACJA SYSTEMÓW INFORMATYCZNYCH DO TECHNOLOGII JAVA

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

WPROWADZENIE DO JĘZYKA JAVA

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Multimedia JAVA. Historia

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

EJB 3.0 (Enterprise JavaBeans 3.0)

Programowanie współbieżne i rozproszone

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Laboratorium 1 Wprowadzenie do PHP

Ekspert MS SQL Server Oferta nr 00/08

REFERAT PRACY DYPLOMOWEJ

Facelets ViewHandler

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Aplikacje RMI

Wzorce prezentacji internetowych

Podstawowe wykorzystanie Hibernate

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

INSTALACJA I KONFIGURACJA SERWERA PHP.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Ćwiczenie 1. Przygotowanie środowiska JAVA

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Dokumentacja kompilacji źródeł aplikacji 1.0

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

PHP: bazy danych, SQL, AJAX i JSON

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

ZSBD ćwiczenie 4. Obiektowe systemy zarządzania bazą danych. Przygotowanie środowiska pracy. Wymagania: ZSBD ćwiczenie 4

SOP System Obsługi Parkingów

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Aplikacje internetowe - laboratorium

Środowiska i platformy programistyczne

Transkrypt:

Aplikacje Internetowe przygotował: pawel@kasprowski.pl

Zakres przedmiotu Tworzenie aplikacji internetowych w języku Java w środowisku Eclipse z użyciem serwera Apache Tomcat Materiały przede wszystkim Internet książki na temat JSP (Java Server Pages), J2EE i ogólnie języka Java oczywiście: www.kasprowski.pl

Plan ramowy Podstawy JSP Użycie tagów z biblioteki JSTL Tworzenie servletów Architektura MVC2 Komunikacja z bazą danych: JDBC, Hibernate, JPA Cel: nabycie umiejętności tworzenia aplikacji internetowej a nie tylko zbioru dynamicznych stron WWW

Aplikacja internetowa Definicja: Aplikacja uruchamiana na serwerze WWW komunikująca się z użytkownikiem za pomocą przeglądarki internetowej

Zalety aplikacji internetowej brak konieczności instalacji dodatkowego oprogramowania na komputerach klientów a co za tym idzie mniejsze wymagania co do jakości tych komputerów łatwość aktualizacji aplikacji w przypadku zmiany wersji nie trzeba aktualizować plików na każdym komputerze a wystarczy aktualizacja na serwerze potencjalna możliwość zdalnego korzystania z aplikacji

Wady aplikacji internetowej uboższy interfejs użytkownika (nie wszystko da się zrobić w przeglądarce) większy nakład pracy projektowej, a co za tym idzie nieco większy koszt wykonania większe obciążenie serwera (kosztem mniejszego obciążenia komputerów użytkowników)

Dynamiczna generacja stron CGI Common Gateway Interface Wejście: adres, parametry Wyjście: tekst strony html Problem: jak przekazać parametry?

Metody wysyłania danych Metoda GET Odpowiednik: http://xyz.pl/start?imie=adam&nazwisko=kowalski Metoda POST Parametry wewnątrz wysyłanego pakietu brak ograniczeń na wielkość parametrów

Aplikacja CGI Konieczność generacji całej strony Program drukujący tekst na standardowym wyjściu Niewygodne (zwłaszcza, gdy elementy dynamiczne zajmują niewielką część strony) Wygodniej stworzyć stronę HTML i tylko wstawić elementy generowane dynamicznie

Dynamiczne wstawki do tekstu html Trzy najważniejsze rozwiązania: PHP najpopularniejsze, własny język oparty początkowo na języku Perl ASP propozycja Microsoft, wstawki w VisualBasic u JSP wstawki w języku Java

JSP Java Server Pages Tworzenie dokumentów html ze wstawkami w Javie Dokumenty przekształcane są w servlety klasy generujące html

Serwery JSP Przykładowe serwery: Blazix Tomcat Websphere Standardowa funcjonalność serwera WWW Kompilacja JSP

Najprostszy JSP <HTML> <BODY> Hello! The time is now <%= new java.util.date() %> </BODY> </HTML>

Wstawki w kodzie (scriplet'y) <HTML> <BODY> <% System.out.println( "Evaluating date now"); java.util.date date = new java.util.date(); %>... Hello! The time is now <%= date %> </BODY> </HTML>

Scriplet tworzący tekst <HTML> <BODY> <% System.out.println( "Evaluating date now"); java.util.date date = new java.util.date(); %>... Hello! The time is now <% out.write( String.valueOf( date )); %> </BODY> </HTML>

Obiekty dostępne w jsp out out.write(...) request request.getparameter(...) request.getremotehost() response response.sendredirect(...)

Odczytywanie danych Obiekt request, metoda getparameter( nazwa ) <h1>witaj <%=request.getparameter( imie )%></h1> <p> <% String imie = (String)request.getParameter( imie ); if(imie.equals( Paweł )) out.print( Ja też mam na imię Paweł! ); %> </p>

Możliwości JSP Mieszanie kodu i html a <TABLE BORDER=2> <% for ( int i = 0; i < 10; i++ ) { %> <TR> <TD>Numer</TD> <TD><%= i+1%></td> </TR> <% } %> </TABLE>

Możliwości JSP Mieszanie kodu i html a <TABLE BORDER=2> <% for ( int i = 0; i < 10; i++ ) { %> <TR> <TD>Numer</TD> <TD><%= i+1%></td> </TR> <% } %> </TABLE>

Dyrektywa page Użycie bibliotek Java <HTML> <BODY> <% System.out.println( "Evaluating date now" ); java.util.date date = new java.util.date(); %> Hello! The time is now <%= date %> </BODY> </HTML>

Dyrektywa page Użycie bibliotek Java <%@ page import="java.util.*" %> <HTML> <BODY> <% System.out.println( "Evaluating date now" ); Date date = new Date(); %> Hello! The time is now <%= date %> </BODY> </HTML>

Dyrektywa page Użycie bibliotek Java <%@ page import="java.util.*,java.text.*" %> <HTML> <BODY> <% System.out.println( "Evaluating date now" ); Date date = new Date(); %> Hello! The time is now <%= date %> </BODY> </HTML>

Pierwsza aplikacja Kalkulator kredytowy Obliczanie raty kredytu Część prezentacyjna (JSP) Część "logiki biznesowej" (java)

Kalkulator kredytowy Obliczenie wysokości miesięcznej raty spłaty kredytu na podstawie jego kwoty, oprocentowania rocznego i liczby rat miesięcznych rata = kwota * 1 1+ oproc /12 1 ( oproc /12) liczba _ rat

Parametryzacja Dokument index.jsp zawiera formularz w którym użytkownik wpisuje parametry kredytu kwota na ile lat Formularz wysyłany jest do dokumentu result.jsp, który oblicza ratę

Formularz <form action="result.jsp"> kwota: <input type="text" name="kwota"><br/> ile lat: <input type="text" name="lat"><br/> <input type="submit"/> </form>

Plik result.jsp Odczytanie parametrów: String strkwota = request.getparameter("kwota"); String strlat = request.getparameter("lat"); Konwersja na liczbę (w Javie niezbędna!): double kwota = Double.parseDouble(strKwota); int lat = Integer.parseInteger(strLat); Wykonanie obliczenia: double rata = kwota * (procent/12)/ (1-(1/Math.pow(1.0+procent/12,lat*12)));

Nasze narzędzie pracy przygotował: pawel@kasprowski.pl

Historia Eclipse Założyciele (2001): Borland, IBM, MERANT, QNX Software Systems, Rational Software, Red Hat, SuSE, TogetherSoft, Webgain (Board of Stewards) Kolejni członkowie to m.in.: HP, Oracle, SAP, Ericsson, Intel Licencja CPL (Common Public License) Aktualna wersja: 3.4 (Ganymede) Podstawowe narzędzie pracy w wielu firmach programistycznych!

Rozszerzalność Eclipse jest narzędziem uniwersalnym: Eclipse IDE for Java Developers Eclipse IDE for C/C++ Developers PHPEclipse Istnieją dedykowane wersje Eclipse'a (komercyjne): Red Hat Developer Studio IBM Data Studio Borland JBuilder Są to Eclipse'y rozszerzone o własne wtyczki firmy

Przykładowe wtyczki Amateras HTMLEditor Sysdeo TomcatPlugin DBViewer Plugin AzzuriClay modelowanie baz danych HibernateTools dostęp do baz danych Omondo EclipseUML Visual Editor tworzenie GUI PHPEclipse Tworzone z użyciem: Plug-In Development Environment

Instalacja wtyczek Help->Software Updates Przegranie pakietu do katalogu plugins

Tworzenie środowiska Instalacja Java JDK Instalacja Apache Tomcat (darmowy) katalog główny: webapps/root aplikacje: webapps/<nazwa_aplikacji> konfiguracja: conf/server.xml Instalacja Eclipse Instalacja plug-in'u Sysdeo do Eclipse'a

Tworzenie projektu Eclipse New Tomcat project: kredyty Katalog /webapp Plik index.jsp Start Tomcat a http://localhost:8080/kredyty Stworzenie formularza startowego (index.jsp) Stworzenie result.jsp

Wady rozwiązania Oprocentowanie jest określone na stałe wewnątrz pliku HTML zmiany muszą być dokonywane bezpośrednio w nim Sposób obliczenia raty także jest w pliku HTML Zmiana wyglądu strony zmiana w pliku HTML A więc: łatwo popełnić błąd, który spowoduje, że aplikacja przestanie działać prawidłowo Dalsza rozbudowa aplikacji (np. ściąganie oprocentowania z bazy danych) bardzo utrudnione

Rozwiązanie dwuwarstwowe Rozdzielenie części prezentacyjnej od części obliczeniowej Programista (grafik) tworzący interfejs WWW nie musi znać wzoru na obliczanie kredytu Programista tworzący kod obliczający kredyt nie musi wiedzieć gdzie będzie on używany

Klasa Kredyt class Kredyt { double procent = 0.05; double kwota; double lat; public Kredyt(double k, double l) { kwota = k; lat = l; } public double getrata() { double rata = kwota * (procent/12)/ (1-(1/Math.pow(1.0+procent/12,lat*12))); return rata; } } Kredyt.java

Klasa Kredyt package pl.kasprowski.utils; public class Kredyt { double procent = 0.05; double kwota; double lat; public Kredyt(double k, double l) { kwota = k; lat = l; } public double getrata() { double rata = kwota * (procent/12)/ (1-(1/Math.pow(1.0+procent/12,lat*12))); return rata; } } Kredyt.java

Nowy result.jsp <% Kredyt kredyt = new Kredyt( Double.parseDouble(request.getParameter("kwota")), Double.parseDouble(request.getParameter("lat")) ); out.write("<p>rata wynosi: "+kredyt.getrata()+"</p>"); %>

Nowy result.jsp [2] <% Kredyt kredyt = new Kredyt( Double.parseDouble(request.getParameter("kwota"), Double.parseDouble(request.getParameter("lat")) ); %> <p>rata wynosi: <%=kredyt.getrata()%></p>

Dodanie konstruktora package pl.kasprowski.utils; public class Kredyt { double procent = 0.05; double kwota; double lat; public Kredyt(double k, double l) { kwota = k; lat = l; } public Kredyt(String k, String l) { kwota = Double.parseDouble(k); lat = Double.parseDouble(l); } public double getrata() { double rata = kwota * (procent/12)/ (1-(1/Math.pow(1.0+procent/12,lat*12))); return rata; } } Kredyt.java

Dodanie konstruktora package pl.kasprowski.utils; public class Kredyt { double procent = 0.05; double kwota; double lat; public Kredyt(double k, double l) { kwota = k; lat = l; } public Kredyt(String k, String l) { this(double.parsedouble(k),double.parsedouble(l)); } public double getrata() { double rata = kwota * (procent/12)/ (1-(1/Math.pow(1.0+procent/12,lat*12))); return rata; } } Kredyt.java

Nowy result.jsp [3] <% Kredyt kredyt = new Kredyt( request.getparameter("kwota"), request.getparameter("lat")) ); %> <p>rata wynosi: <%=kredyt.getrata()%></p> Brak jakiegokolwiek kodu obliczającego cokolwiek!

Obsługa wyjątków Gdy coś nie zadziała tak jak trzeba należy to przewidzieć i "wyłapać" w programie Jeśli nie wyłapiemy wyjątku rezultaty mogą być niespodziewane Wyłapywanie wyjątków: try{...tu kod, który może wygenerować wyjątek... }catch(exception ex) {...tu kod obsługujący...}

Miejsce obsługi wyjątków Strona HTML zaleta można bezpośrednio wypisywać komunikaty wada strona staje się nieczytelna Kod klasy zaleta kod HTML jest czytelny wada w kodzie HTML często i tak trzeba zareagować na wyjątek wada podstawowa nie da się przechwycić wyjątku w naszym konstruktorze

try-catch w result.jsp <% try{ Kredyt kredyt = new Kredyt( request.getparameter("kwota"), request.getparameter("lat")) ); %> <p>rata wynosi: <%=kredyt.getrata()%></p> <% }catch(numberformatexception ex) {out.write("nie udało się obliczyć raty!"); %>

try-catch w result.jsp <% try{ Kredyt kredyt = new Kredyt( request.getparameter("kwota")), request.getparameter("lat")) ); out.write("<p>rata wynosi: "+kredyt.getrata()+"</p>"); }catch(numberformatexception ex) {out.write("nie udało się obliczyć raty!"); %>

Dyrektywa errorpage Ustawienie strony do obsługi błędu <%@ page errorpage= /error.jsp %> Strona error.jsp dostęp do obiektu exception <%@ page iserrorpage="true" %> <% response.setstatus(500); %> <%= exception.getclass().getname() %>

Dyrektywa include Dołączanie innych plików do dokumentu <HTML> <BODY> Tutaj będzie zawartość pliku hello.jsp:<br/> <%@ include file="hello.jsp" %> A teraz znów jesteśmy w naszym dokumencie </BODY> </HTML>

Dziękuję za uwagę przygotował: pawel@kasprowski.pl