Tworzenie aplikacji internetowych w języku Java



Podobne dokumenty
Aplikacje Internetowe. przygotował:

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

Programowanie w Internecie

Podstawy języka Java. przygotował:

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

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

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

prepared by: Programowanie WWW Servlety

Wybrane działy Informatyki Stosowanej

Aplikacje WWW - laboratorium

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Formularze w PHP dla początkujących

Aplikacje Internetowe, Servlety, JSP i JDBC

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

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

prepared by: Programowanie WWW Model-View-Controller

Wybrane działy Informatyki Stosowanej

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

TIN Techniki Internetowe zima

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

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

FORMULARZE. G. Przęczek

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

FORMULARZE Formularz ma formę ankiety, którą można wypełnić na stronie. Taki formularz może być np. przesłany pocztą elektroniczną .

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

Formularze HTML. dr Radosław Matusik. radmat

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

1 Wprowadzenie do J2EE

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

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

Zaawansowane aplikacje internetowe

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Java Server Faces - wprowadzenie

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

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

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

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

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

Środowisko NetBeans. Paweł Boguszewski

Multimedia JAVA. Historia

Internetowe bazy danych

OpenLaszlo. OpenLaszlo

Wykład 1: Wprowadzenie do technologii Java

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

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

Zaawansowane aplikacje internetowe

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

Bazy danych postgresql programowanie i implementacja

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

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

Aplikacje internetowe i rozproszone - laboratorium

Programy CGI dla baz danych

Bazy Danych i Usługi Sieciowe

Umieszczanie kodu. kod skryptu

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

Aplikacje internetowe - laboratorium

Aplikacje internetowe

Tworzenie oprogramowania

Wybrane znaczniki HTML

Programowanie obiektowe

Java jako język programowania

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

Programowanie internetowe

Formularze Pobierają dane od użytkownika strony i wysyłają je do przetworzenia na serwerze (gdzie potrzebne są skrypty,któredaneprzetworzą najczęściej

Anna Fiedorowicz Bazy danych 2

Architektury Usług Internetowych. Laboratorium 1. Servlety

Programowanie obiektowe zastosowanie języka Java SE

HTML ciąg dalszy. Listy, formularze

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

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

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

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Laboratorium 1 Wprowadzenie do PHP

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

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

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

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Załącznik 1 instrukcje instalacji

Dokument hipertekstowy

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

Zajęcia 4 - Wprowadzenie do Javascript

Przegląd technologii JSP

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Architektury Usług Internetowych. Laboratorium 1 Servlety

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

PHP: bazy danych, SQL, AJAX i JSON

Ćwiczenie 1. Przygotowanie środowiska JAVA

SSK - Techniki Internetowe

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

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

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

Programowanie wielowarstwowe i komponentowe

Aktywne i dynamiczne strony WWW. Elementy projektowania stron WWW. Część 3. Formularze HTML przykład. Formularze HTML. dr inŝ.

Wprowadzenie do Internetu Zajęcia 5

Podstawowe wykorzystanie Hibernate

obecnie tabeli nie stosuje się do budowy struktury witryny (stosuje się za to pozycjonowanie elementów i warstwy) faktycznie wymagają

Transkrypt:

Tworzenie aplikacji internetowych w języku Java Podstawy JSP

Informacje na temat przedmiotu Wykładowca: Paweł Kasprowski (pawel@kasprowski.pl) Temat: Tworzenie aplikacji internetowych w języku Java Umiejętności wymagane: Znajomość języka Java Znajomość zasady działania relacyjnej bazy danych Znajomość języka HTML Umiejętności uzyskiwane: Tworzenie aplikacji internetowych w języku Java w środowisku Eclipse z użyciem serwera Apache Tomcat

Plan ramowy Podstawy JSP Używanie modułów Javy w JSP Użycie tagów z biblioteki JSTL Tworzenie servletów Architektura MVC2 Wprowadzenie do JSF

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)

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 stron JSP do servletów

Plik WAR Tworzenie aplikacji Dowolne pliki html, jsp Katalog WEB-INF internetowej Pliki konfiguracyjne (web.xml) Klasy (serwlety i inne) katalog classes Biblioteki (jary) katalog lib Elementy w WEB-INF nie są bezpośrednio widoczne przez WWW

Przygotowanie ś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

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

Stworzenie projektu New Tomcat project: aplikacja Katalog /webapp Plik index.jsp Start Tomcat a Sprawdzenie działania http://localhost:8080 Stworzenie dokumentu startowego (index.jsp) Sprawdzenie działania http://localhost:8080/aplikacja

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.print(date); %> </BODY> </HTML>

Formularze Możliwość wysyłania danych do serwera Proste pola edycyjne Pola bardziej zaawansowane radio, checkbox, select ACTION gdzie wysłać wprowadzone dane

Tworzenie formularzy Najprostszy formularz: <form action= http://adres.pl/zarejestruj >... Imię: <input type= text name= imie ><br>... <input type= submit value= Wyślij > </form>

Znaczniki <input type= text > <input type= submit > <input type= image > <input type= password > <input type= radio > <input type= checkbox > <input type= file > <input type= hidden >

Radiobutton Wybór jednej z opcji <form> <input type="radio" name="sex" value="m">mężczyzna<br> <input type="radio" name="sex" value="k">kobieta </form>

Checkbox Wybór wielu opcji <form> Lubię:<br> <input type="checkbox" name="banany">banany<br> <input type="checkbox" name="ananasy">ananasy </form>

Właściwości pola INPUT <INPUT TYPE=text password checkbox radio submit reset file hi dden image, NAME= string, VALUE=string, CHECKED, SIZE=n, MAXLENGTH=n, ALIGN=top middle bottom left right >

Pole select Wybór jednej z wielu opcji drop-down <form> <select name="samochody"> <option value="volvo">volvo <option value="saab">saab <option value="fiat">fiat <option value="audi">audi </select> </form>

Pole textarea Edycja większego tekstu <form> <textarea rows="10" cols="40"> Ten tekst można edytować </textarea> </form>

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

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 < 6; 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 < 6; i++ ) { %> <TR> <TD>Numer</TD> <TD><%= i+1%></td> </TR> <% } %> </TABLE>

Użycie pakietów Javy <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 <%@ page import="java.util.*" %> <HTML> <BODY> <% System.out.println( "Evaluating date now" ); Date date = new Date(); %> Hello! The time is now <%= date %> </BODY> </HTML>

Importowanie kilku pakietów <%@ 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)));

Stworzenie aplikacji Stworzenie aplikacji kredyt Index.jsp formularz Result.jsp - obliczenie

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 package pl.kurs; //pakiet jest konieczny! public class Kredyt { double procent = 0.05; double kwota; double lat; public Kredyt(double kwota, double lat) { this.kwota = kwota; this.lat = lat; } 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.kurs; 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.kurs; 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() { return kwota * (procent/12)/ (1-(1/Math.pow(1.0+procent/12,lat*12))); 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 więc należałoby go i tak "podać" do HTMLa

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() %> Wada: reakcja polega tylko na poinformowaniu o błędzie