Aplikacje WWW - laboratorium



Podobne dokumenty
Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

b) Jako nazwę projektu wpisz SerwletyJSPJSTL. Nie zmieniaj wartości pozostałych opcji. Kliknij przycisk Next >.

Aplikacje WWW - laboratorium

Laboratorium 1 Wprowadzenie do PHP

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

Java Database Connectivity

Aplikacje WWW - laboratorium

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

Java EE: Serwlety i filtry serwletów

Projektowanie aplikacji internetowych laboratorium

Aplikacje internetowe i rozproszone - laboratorium

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

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

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Zaawansowane aplikacje internetowe laboratorium

Aplikacje WWW - laboratorium

Enterprise JavaBeans (EJB)

Aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

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

Java EE: JSF + EJB + JPA

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium

Architektury Usług Internetowych. Laboratorium 1. Servlety

Zaawansowane aplikacje internetowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Aplikacje WWW - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe

1 Wprowadzenie do J2EE

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe laboratorium

prepared by: Programowanie WWW Servlety

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

Podstawy JavaScript ćwiczenia

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Aplikacje WWW - laboratorium

Zaawansowane aplikacje internetowe - laboratorium

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

Web Services (SOAP) Ćwiczenie 1

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

Programowanie wielowarstwowe i komponentowe

Aplikacje internetowe - laboratorium

INSTALACJA I KONFIGURACJA SERWERA PHP.

Java EE: JSF + EJB + JPA + CDI + BV

JavaServer Pages. Konrad Kurdej Karol Strzelecki

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

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

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

Zajęcia 4 - Wprowadzenie do Javascript

Wybrane działy Informatyki Stosowanej

Serwery aplikacji. dr Radosław Matusik. radmat

Testowanie podstawowej konfiguracji serwera w środowisku NetBeans

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Laboratorium 6 Tworzenie bloga w Zend Framework

Wybrane Działy Informatyki Stosowanej LABORATORIUM 1.

prepared by: Programowanie WWW Model-View-Controller

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Java Platform Micro Edition

Programowanie obiektowe zastosowanie języka Java SE

Podstawowe wykorzystanie Hibernate

Architektury Usług Internetowych. Laboratorium 1 Servlety

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

Aplikacje WWW - laboratorium

1) Przygotowanie środowiska pracy.

Wzorce prezentacji internetowych

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Bezpieczne uruchamianie apletów wg

Zaawansowane aplikacje internetowe - laboratorium

6. Powtórz kroki z punktu 5. dla strony sorry.jsp, zmieniając jedynie treść wyświetlanego tekstu ( Niestety zamiast Witaj )

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Programowanie Obiektowe GUI

Aplikacje www laboratorium

Java wybrane technologie spotkanie nr 5. Java Server Pages

<bean name="datecontroller" class="controllers.datecontroller" /> package controllers;

SSK - Techniki Internetowe

Ćwiczenia 9 - Swing - część 1

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Ćwiczenie dotyczące platformy Java EE zostało przygotowane z myślą o środowisku NetBeans w wersji 7.3 (do pobrania z

Aplikacje WWW - laboratorium

Wypożyczalnia by CTI. Instrukcja

Java Enterprise Edition spotkanie nr 4. Java Server Pages c.d.


Zaawansowane aplikacje internetowe laboratorium REST

Klasy i obiekty cz II

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Transkrypt:

Aplikacje WWW - laboratorium JavaServer Pages Celem ćwiczenia jest zbudowanie kilku prostych stron internetowych z użyciem technologii JSP. Podczas ćwiczenia wykorzystany zostanie algorytm sortowania bąbelkowego (opis sortowania bąbelkowego można znaleźć na stronie http://en.wikipedia.org/wiki/bubble_sort). Do wykonania ćwiczenia potrzebne jest zintegrowane środowisko programistyczne NetBeans IDE 5.5 (do pobrania z http://www.netbeans.org) oraz środowisko J2SE 1.4.2 (lub wyższe). 1. Uruchom narzędzie NetBeans IDE 5.5 2. Z menu głównego wybierz File New Project. W otwartym okienku kreatora projektu wybierz kategorię Web i typ projektu Web Application. Kliknij przycisk Next >.

3. Podaj nazwę projektu, Aplikacje internetowe JSP. Upewnij się, że wybranym serwerem aplikacji jest zagnieżdżony serwer Tomcat 5.5. Skróć ścieżkę aplikacji do postaci /ai-jsp i zaznacz zgodność kodu źródłowego z 1.4. Kliknij przycisk Finish. 4. Nowy projekt automatycznie posiada domyślną stronę index.jsp, która nie będzie wykorzystywana w tym ćwiczeniu. Po lewej stronie ekranu widoczny jest nawigator projektu. Umożliwia on przeglądanie i rozbudowę projektu. 5. Kolejnym krokiem jest dodanie nowej strony JSP do projektu. Kliknij prawym przyciskiem myszy na węzeł Web Pages. Wybierz polecenie New JSP. Podaj nazwę pliku JSP, np. sort. Uwaga! Nie podawaj rozszerzenia pliku gdyż zostanie ono dodane automatycznie. Kliknij przycisk Finish.

6. Listę wszystkich stron (aktualnie dwie) możesz odnaleźć w nawigatorze projektu. Przełączanie pomiędzy stronami jest możliwe m.in. poprzez dwukrotne kliknięcie lewym przyciskiem myszy na nazwie pliku. Przejdź do edycji pliku sort.jsp.

7. Strona w pliku sort.jsp będzie realizowała sortowanie bąbelkowe zbioru liczb wyspecyfikowanych w definicji tej strony. Wprowadź do pliku sort.jsp następujący kod. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head> <title>buble Sort</title> </head> <body> <%! int temp, i; %> <%! boolean change; %> <%! int data[] = { 1, 6, 4, 5, 3 ; %> <%! int size; %> <% size = data.length; do { change = false; i = size - 1; do { i--; if (data[i+1] < data[i]) { temp = data[i]; data[i] = data[i+1]; data[i+1] = temp; change = true; while (i!= 0); while (change); %> Posortowane liczby: <% for (int i = 0; i < size; i++) { %> <%= data [i] %> <% %> 8. Uruchom stronę za pomocą skrótu Shift+F6. Można to także zrobić klikając prawym przyciskiem na nazwie strony w nawigatorze projektu i wybierając Run nazwa pliku. W środowisko NetBeans wbudowany jest serwer aplikacji Tomcat, który zostanie automatycznie uruchomiony. Komunikat o uruchomienia serwera zostanie wyświetlony u dołu ekranu

W oknie przeglądarki zostanie wyświetlona strona sort.jsp 9. Przejdź do katalogu $NETBEANS_HOME/mywork/Aplikacje internetowe JSP/build/generated/src/org/apache/jsp i obejrzyj kod umieszczony w pliku sort_jsp.java. Przeanalizuj, w jaki sposób kod JSP został automatycznie przetłumaczony na postać serwletu. 10. Jeśli z jakimś formularzem nie jest związany atrybut action, wówczas zawartość formularza zostaje ponownie wysłana do strony JSP. Stwórz nową stronę form.jsp i umieść w niej poniższy kod, przetestuj działanie strony. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head> <title>form example</title> </head> <body> <form> Nazwisko: <input type="text" name="last_name"/> <input type="submit" value="wyślij"/> </form><br/> <% if (request.getparameter("last_name")!= null) { %> Przesłane nazwisko to <%= request.getparameter("last_name") %> <% %> 11. Kolejnym krokiem będzie dodanie możliwości określenia przez użytkownika ilości sortowanych liczb. Parametr zostanie przekazany przez formularz HTML metodą POST. Liczby będą generowane losowo. Dodaj do projektu nową stronę (patrz krok 5) o nazwie better_sort.

12. Zastąp domyślnie wygenerowany kod w pliku better_sort.jsp zamieszczonym poniżej. Zwróć uwagę na konieczność zaimportowania klasy java.util.random. <%@page import="java.util.random"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head> <title>better Bubble Sort</title> </head> <body><br> <form method="post"> <input type="text" name="c_numbers" value="10" /> <input type="submit" value="sortuj" /> </form><br/> <%! int temp, i; %> <%! boolean change; %> <%! int data[]; %> <%! int size; %> <% if (request.getparameter("c_numbers")!= null) size=integer.parseint(request.getparameter("c_numbers")); else size = 10; data = new int[size]; Random generator = new Random(); for (int i = 0; i < size; i++) data[i] = generator.nextint(100); do { change = false; i = size - 1; do { i--; if (data[i+1] < data[i]) { temp = data[i]; data[i] = data[i+1]; data[i+1] = temp; change = true; while (i!= 0); while (change); %> Posortowane liczby: <% for (int i = 0; i < size; i++) { %> <%= data[i] %> <% %>

13. Uruchom stronę za pomocą skrótu Shift+F6. Wprowadź liczbę dodatnia (większą od jeden), np. 25 i kliknij przycisk Sortuj. 14. Uruchom stronę better_sort, wpisz w pole tekstowe tekst, który nie jest liczbą i kliknij przycisk Sortuj.

15. Dodaj stronę o nazwie error_page.jsp. Umieść w niej następujący kod. <%@page iserrorpage="true" %> <%@page import="java.io.printwriter"%> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body > <h1>błąd </h1> Niestety nie mogę wyświetlić poprawnej strony. <BR><BR><BR> Przyczyna błędu: <BR> <pre> <% exception.printstacktrace(new PrintWriter(out)); %> </pre> 16. Dodaj do strony better_sort, na początku pliku, poniższy kod. <%@page errorpage="error_page.jsp" %> 17. Powtórz działanie z kroku nr 14. Zwróć uwagę na adres URL wyświetlonej strony. Zauważ, że użytkownik nie jest świadomy, że żądanie zostało przekierowane do innej strony.

18. Kolejne ćwiczenie pokazuje wykorzystanie komponentów Java Bean. Kliknij prawym klawiszem myszy na ikonie projektu i z menu kontekstowego wybierz New Java Class. Utwórz klasę SessionTrackerBean i umieść ją w pakiecie ai.beans. 19. Umieść w klasie następujący kod. package ai.beans; import java.util.date; public class SessionTrackerBean { private String ip; private Date lastaccess; public SessionTrackerBean() {

20. Zaznacz pola ip i lastaccess, a następnie kliknij prawym klawiszem myszy w edytorze kodu i z menu kontekstowego wybierz opcję Refactor Encapsulate Fields. Upewnij się, że dla obu składowych zostaną wygenerowane metody getter i setter. Odznacz pole Preview All Changes. Kliknij przycisk Next >. 21. Utwórz nową stronę sessionbean.jsp. Umieść w niej poniższy kod. Zwróć uwagę na sposób wykorzystania komponentu Java Bean: inicjalizacji, odczytania i zapisania własności komponentu. Uruchom stronę i kilkakrotnie ją odśwież. <%@page import="java.util.date" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head><title>jsp Beans</title></head> <body> <jsp:usebean id="mybean" class="ai.beans.sessiontrackerbean" scope="session"/> <h2>jsp Session Bean</h2> Dane odczytane z komponentu Java Bean: <ul> <li>adres IP: <jsp:getproperty name="mybean" property="ip"/> <li>ostatni dostęp: <jsp:getproperty name="mybean" property="lastaccess"/> </ul> <jsp:setproperty name="mybean" property="ip" value="<%= request.getremoteaddr()%>"/> <jsp:setproperty name="mybean" property="lastaccess" value="<%= new Date() %>"/>

22. Kolejne ćwiczenie pokazuje sposób wykorzystania komponentów Java Bean do przetwarzania parametrów przekazanych z formularzy HTML. Utwórz nową klasę Java i nazwij ją UserFormBean.java. Umieść klasę w pakiecie ai.beans. Umieść w klasie poniższy kod. Następnie, dla pól username, email, password wygeneruj metody dostępowe getter i setter. package ai.beans; public class UserFormBean { private String username; private String email; private String password; public UserFormBean() { 23. Utwórz plik formbean.jsp i umieść w nim poniższy kod. Zwróć uwagę na sposób wczytania danych z formularza do komponentu Java Bean. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head><title>java Beans and HTML forms</title></head> <body> <jsp:usebean id="formbean" class="ai.beans.userformbean" scope="request"/> <jsp:setproperty name="formbean" property="*"/> <form> <table> <tr><td>uŝytkownik</td><td><input type="text" name="username"/></td></tr> <tr><td>email</td><td><input type="text" name="email"/></td></tr> <tr><td>hasło</td><td><input type="password" name="password"/></td></tr> <tr><td colspan="2"><input type="submit" value="send"/></td></tr> </table> </form> <h2>dane przesłane z formularza</h2> <ul> <li>uŝytkownik: <jsp:getproperty name="formbean" property="username"/> <li>email: <jsp:getproperty name="formbean" property="email"/> <li>hasło: <jsp:getproperty name="formbean" property="password"/> </ul>

24. Podstawowym narzędziem dostępu do zmiennych, parametrów i nagłówków jest język wyrażeń JSP EL. Utwórz nową stronę jspel.jsp i wypełnij ją następującym kodem. Zwróć uwagę na różne sposoby odczytywania zmiennych za pomocą języka wyrażeń. <%@page import = "java.util.date" session="true"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head><title>jsp EL Test</title></head> <body> <form method="post"> Podaj imię: <input type="text" name="username" /> <input type="submit" value="prześlij" /> </form><br/> <h2>język wyraŝeń JSP EL</h2> Imię: ${param.username <br/> Przeglądarka: ${header["user-agent"] <br/> Ostatnia wizyta: ${sessionscope.lastvisit <br/> <% session.setattribute("lastvisit", new java.util.date()); %> 25. Ostatnim ćwiczeniem będzie przedstawienie poprawnego sposobu współdziałania między formularzem, komponentem Java Bean oraz stroną JSP. Utwórz prostą stronę yesterday.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"/> <title>data entry form</title> </head> <body> <form action="controllerservlet" method="post"> <table> <tr><td>tekst</td> <td><select name="forecolor"> <option>red</option><option>green</option><option>black</option> </select></td></tr> <tr><td>tło</td> <td><select name="backcolor"> <option>yellow</option><option>magenta</option><option>gray</option> </select></td></tr> <tr><td colspan="2"><input type="submit" value="wyślij"></td></tr> </table> </form>

26. Następnie, przygotuj klasę Java Bean która będzie wykorzystywana do komunikacji między serwletem i stroną JSP. Dodaj do projektu plik ColorBean.java i umieść klasę w pakiecie ai.beans. Umieść w klasie poniższy kod. Nie zapomnij wygenerować metod getter i setter i dla obu pól składowych. package ai.beans; public class ColorBean { private String foregroundcolor; private String backgroundcolor; public ColorBean() { 27. W kolejnym kroku zbuduj serwlet o nazwie ControllerServlet i umieść go w pakiecie ai.servlets. Kod serwletu znajduje się poniżej. Zwróć uwagę na wykorzystanie komponentu Java Bean do komunikacji między warstwami aplikacji. package ai.servlets; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import ai.beans.colorbean; public class ControllerServlet extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { dopost(request, response); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { ColorBean mybean = new ColorBean(); mybean.setforegroundcolor( request.getparameter("forecolor") ); mybean.setbackgroundcolor( request.getparameter("backcolor") ); request.setattribute("bean", mybean); ServletContext ctx = this.getservletcontext(); RequestDispatcher dispatcher = ctx.getrequestdispatcher("/yesterday.jsp"); dispatcher.forward(request, response);

28. W ostatnim kroku stwórz stronę yesterday.jsp i wypełnij poniższym kodem. Następnie wróć do strony yesterday.html i uruchom aplikację. Przetestuj jej działanie. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head> <title>yesterday</title> <style type="text/css"> body { background: ${bean.backgroundcolor; color: ${bean.foregroundcolor </style> </head> <body> <h2>yesterday</h2> Yesterday,<br/> All my troubles seemed so far away,<br/> Now it looks as though they're here to stay,<br/> Oh, I believe in yesterday.<br/> <br/> Suddenly,<br/> I'm not half the man I used to be,<br/> There's a shadow hanging over me,<br/> Oh, yesterday came suddenly.<br/> <br/> Why she<br/> Had to go I don't know, she wouldn't say.<br/> I said,<br/> Something wrong, now I long for yesterday.<br/> <a href="yesterday.html">powrót</a>

Zadanie do samodzielnego wykonania (wersja łatwiejsza) Zadanie polega na zaimplementowaniu gry w zgadywanie liczby. Program składa się z jednej strony JSP, stanowiącej interfejs użytkownika i źródło logiki. Strona JSP zawiera formularz HTML umożliwiający podanie dowolnej liczby. Gra przebiega w następujący sposób: przed rozpoczęciem gry następuje wylosowanie liczby-zagadki z przedziału <0-100>. Następnie, gracz podaje liczbę z przedziału <0-100> używając do tego formularza HTML. W odpowiedzi na przesłanie formularza gracz jest informowany, czy podana przez niego liczba jest większa czy mniejsza od liczby-zagadki. zagadki. Gracz kontynuuje grę do momentu odgadnięcia zagadkowej liczby. Liczba-zagadka może być przekazana przez zmienną sesyjną, komponent JavaBean lub ciasteczko. Zadanie do samodzielnego wykonania (wersja trudniejsza) Zadanie polega na zaimplementowaniu gry w zgadywanie liczby. Program składa się z jednej strony JSP, stanowiącej interfejs użytkownika i źródło logiki programu oraz z jednego komponentu JavaBean służącego do przechowywania stanu gry. Strona JSP zawiera formularz HTML umożliwiający podanie dowolnej liczby. Gra przebiega w następujący sposób: przed rozpoczęciem ciem gry następuje wylosowanie liczby-zagadki z przedziału <0-100>. Następnie, gracz podaje liczbę z przedziału <0-100> używając do tego formularza HTML. W odpowiedzi na przesłanie formularza gracz jest informowany, czy podana przez niego liczba jest większa czy mniejsza od liczby-zagadki. zagadki. Gracz kontynuuje grę do momentu odgadnięcia zagadkowej liczby. Po odgadnięciu liczby-zagadki zagadki gracz jest informowany o liczbie wykonanych prób. Liczba-zagadka zagadka oraz liczba prób gracza są przechowywane w komponencie JavaBean i przekazywane w zasięgu request. Podpowiedź Utwórz komponent JavaBean o Gra. Umieść w nim składowe int zagadka oraz int proby.. Wylosuj początkową wartość liczby zagadki wykorzystując odwołanie do klasy java.util.random w konstruktorze komponentu JavaBean. Dodaj do komponentu metodę zwiększającą liczbę prób, aby łatwiej było wywołać tę metodę z poziomu strony JSP.