Aplikacje WWW - laboratorium



Podobne dokumenty
Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Java Database Connectivity

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

Aplikacje WWW - laboratorium

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

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

Aplikacje WWW - laboratorium

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

Zaawansowane aplikacje WWW - laboratorium

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

1 Wprowadzenie do J2EE

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

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

Aplikacje WWW - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

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

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

Zaawansowane aplikacje internetowe

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

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

Enterprise JavaBeans (EJB)

Zaawansowane aplikacje internetowe laboratorium

Aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe laboratorium

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

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

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

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Zastosowanie komponentów EJB typu Session

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

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

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium

Ćwiczenia 9 - Swing - część 1

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Java EE: JSF + EJB + JPA

I2: J2ME programowanie w NetBeans IDE Wydział Transportu PW semestr /11

Architektury Usług Internetowych. Laboratorium 1. Servlety

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

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

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

Architektury Usług Internetowych. Laboratorium 1 Servlety

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

Projektowanie aplikacji internetowych laboratorium

Zaawansowane aplikacje internetowe - laboratorium

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Serwlety. Co to jest serwlet? Przykładowy kod serwletu. Po co są serwlety?

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

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Programowanie komponentowe 5

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

Programowanie wielowarstwowe i komponentowe

Aplikacje WWW - laboratorium

XML-owe bazy danych ćwiczenia 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

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

Wybrane Działy Informatyki Stosowanej LABORATORIUM 1.

Java EE: Serwlety i filtry serwletów

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

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Laboratorium 7 Blog: dodawanie i edycja wpisów

ZAPOZNANIE SIĘ Z TWORZENIEM

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


Certyfikat niekwalifikowany zaufany Certum Silver. Instrukcja dla uŝytkowników Windows Vista. wersja 1.1 UNIZETO TECHNOLOGIES SA

akademia androida Składowanie danych część VI

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

Web Services (SOAP) Ćwiczenie 1

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Podstawowe wykorzystanie Hibernate

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

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

prepared by: Programowanie WWW Servlety

Aplikacje WWW - laboratorium

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms

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

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Programowanie obiektowe zastosowanie języka Java SE

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

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

Aplikacje w środowisku Java

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Aplikacje Internetowe, Servlety, JSP i JDBC

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Aplikacje internetowe i rozproszone - laboratorium

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

Transkrypt:

Aplikacje WWW - laboratorium JavaServer Pages Standard Tag Library Celem ćwiczenia jest zapoznanie ze standardową biblioteką znaczników JSTL. W ramach ćwiczenia zostanie skonstruowany prosty sklep internetowy przy uŝyciu stron JSP i komponentu JavaBean. Biblioteka JSTL zostania wykorzystana do przetwarzania pliku XML, sterowania przepływem pracy oraz wyświetlania danych i komunikacji z bazą danych. Do wykonania ćwiczenia potrzebne jest zintegrowane środowisko programistyczne NetBeans IDE (do pobrania z http://www.netbeans.org) oraz środowisko J2SE 1.5 (lub wyŝsze). 1. Uruchom narzędzie NetBeans IDE 2. Z menu głównego wybierz File New Project. W oknie kreatora projektu wybierz kategorię Web i typ projektu Web Application. Kliknij przycisk Next >.

3. Podaj nazwę projektu, np. labjstl. Kliknij przycisk Finish. 4. Budowany sklep internetowy będzie oferował funkcję koszyka, w którym klient moŝe umieszczać (lub z niego usuwać) produkty. Ze strony osoby programującej wymaga to zapewnienia, Ŝe informacje o produktach wybranych przez klienta nie będą ulotne. W tym celu moŝna zastosować komponent JavaBean (o zasięgu sesji) reprezentujący koszyk zakupów. 5. W nawigatorze projektu prawym przyciskiem myszy kliknij na węzeł Source Packages i wybierz opcję New Java Package. Wprowadź nazwę pakietu, np. student.beans. Kliknij przycisk Finish.

6. Pod węzłem Source Packages został utworzony węzeł student.beans. Kliknij na nim prawym przyciskiem myszy i wybierz New Java Class. Wprowadź nazwę klasy, np. shoppingcart i kliknij przycisk Finish. 7. Przejdź do edycji utworzonej klasy (dwukrotne kliknięcie na nazwie klasy w nawigatorze projektu). Klasa będzie oferowała moŝliwość przechowywania identyfikatorów produktów w koszyku wraz z liczbą sztuk danego produktu. Takie dane moŝna w łatwy sposób składować w tablicy haszowej, której kluczem jest identyfikator produktu, a wartością liczba zamówionych sztuk tego produktu. Ponadto, dostępne są metody do dodawania produktu (moŝna dodawać po jednej sztuce), usuwania produktu (niezaleŝnie od liczby sztuk) oraz pobierania liczby róŝnych produktów i całej zawartości koszyka. Zastąp zawartość klasy shoppingcart poniŝszym kodem. package student.beans; import java.util.arraylist; public class shoppingcart { private ArrayList items; } public shoppingcart() { this.items = new ArrayList(); } public void add(int partid) { items.add(partid); } public void remove(int partid) { int position = items.indexof(partid); items.remove(position); } public ArrayList getitems() { return this.items; } public int getsize() { return items.size(); }

8. Dane na temat towarów oferowanych w sklepie będą znajdowały się w pliku XML. Plik zawiera opis części komputerowych. Struktura drzewa DOM (z przykładowymi wartościami) tego dokumentu została przedstawiona poniŝej. korzeń węzeł elementu węzeł atrybutu węzeł tekstowy <computer_parts> <part> ID=12 <name> <price> Monitor LCD 450 9. Kliknij prawym przyciskiem na węzeł Web Pages i wybierz New XML Document. Podaj nazwę pliku, np. parts (bez rozszerzenia). Kliknij przycisk Finish >. Przejdź do edycji pliku XML i wprowadź do niego poniŝszą zawartość. <?xml version="1.0" encoding="utf-8"?> <parts> <part ID="10"> <name>procesor 3.8 GHz</name> <price>450.50</price> </part> <part ID="25"> <name>mysz laserowa</name> <price>65.20</price> </part> <part ID="40"> <name>klawiatura multimedialna</name> <price>12</price> </part> <part ID="50"> <name>monitor LCD 19</name> <price>960</price> </part> <part ID="60"> <name>monitor CRT 17</name> <price>360</price> </part> </parts>

10. Pierwszy przykład obrazuje sposób parsowania dokumentu XML za pomocą znaczników JSTL. Utwórz nowy dokument JSP i nazwij go list.jsp. Umieść w nim poniŝszy kod. Zwróć uwagę na sposób iteracji po kolekcji obiektów i uŝycie języka XPath. <%@page contenttype="text/html" pageencoding="utf-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <body> <h1>list of parts</h1> <c:import url="parts.xml" var="xmlfile"/> <x:parse doc="${xmlfile}" var="parsedfile"/> <ol> <x:foreach select="$parsedfile/parts/part" var="part"> <li><b><x:out select="name"/></b>: <x:out select="price"/> </li> </x:foreach> </ol> </body> </html> 11. W środowisku NetBeans zostanie wyświetlona informacja o wykrytym problemie. UŜyte znaczniki nie mogą zostać rozpoznane. Jest to spowodowane tym, Ŝe biblioteka JSTL nie jest domyślnie włączona do projektu.

12. W nawigatorze projektu kliknij prawym przyciskiem na węzeł Libraries i wybierz Add Library. W okienku wyboru biblioteki wybierz JSTL 1.1 i kliknij przycisk Add Library. Dodaj teŝ koniecznie bibliotekę Xalan! 13. Uruchom i przetestuj stronę list.jsp. 14. Kolejnym krokiem jest utworzenie stron JSP, które będą słuŝyły do zarządzania zawartością koszyka. Utworzony projekt automatycznie posiada główną stronę w pliku index.jsp. W nawigatorze projektu rozwiń węzeł Web Pages i przejdź do edycji głównej strony (dwukrotne kliknięcie myszą na nazwie pliku).

15. Na głównej stronie sklepu internetowego będą wyświetlone nazwy i ceny produktów, które zapisane są w pliku XML. PoniŜej znajduje się kod głównej strony. Wszystkie potencjalne skryptlety zostały zastąpione odpowiednimi znacznikami JSTL. Umieść poniŝszy kod w pliku index.jsp. <%@page contenttype="text/html" pageencoding="utf-8" %> <%@page import="java.util.iterator"%> <%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <body> <jsp:usebean id="cart" class="student.beans.shoppingcart" scope="session"/> <h1>available parts</h1> <c:import var="xmlfile" url="parts.xml"/> <x:parse doc="${xmlfile}" var="doc"/> <table border=1> <th>name</th><th>price</th><th> </th> <x:foreach select="$doc/parts/part" var="part"> <td><x:out select="$part/name"/></td> <td><x:out select="$part/price"/></td> <c:set var="part"> <x:out select="$part/@id"/> </c:set> <c:url value="/change_cart.jsp" var="addurl"> <c:param name="action" value="add"/> <c:param name="partid" value="${part}"/> </c:url> <td><a href="${addurl}">add to cart</a></td> </x:foreach> </table> <br/>size of the cart: <c:out value="${cart.size}"/> <br/><a href="show_cart.jsp?action=show">show the cart</a> </body> </html>

16. Następnym krokiem ćwiczenia jest dodanie odpowiednich wpisów dla róŝnych wersji językowych. W nawigatorze projektu dodaj pakiet student.properties (patrz opis dodania pakietu w punkcie 5). Kliknij prawym przyciskiem myszy na węźle utworzonego pakietu i wybierz New Properties File. Wpisz nazwę pliku, np. language i kliknij przycisk Finish. 17. Rozwiń węzeł language.properties, kliknij na nim prawym przyciskiem myszy i wybierz Add Locale.

18. W polu kodu języka wpisz pl i kliknij przycisk OK. 19. Postępując tak samo, jak w kroku 19, dodaj lokację z kodem języka en. Ostatecznie w nawigatorze projektu powinna być następująca struktura. 20. Kliknij prawym przyciskiem myszy na węźle dla lokacji pl. Wybierz Add Property. W pole key wpisz nazwę klucza, przez który następuje odwołanie z dokumentu JSP do wartości (pole value) w odpowiednim pliku językowym, np. dla klucza title polska wartość to Sklep. Kliknij przycisk OK.

21. Postępując zgodnie z punktem 20 wprowadź do lokacji pl-polski następujące pary klucz-wartość. title=sklep name=nazwa price=cena add_to_cart=dodaj do koszyka remove_from_cart=usuń wszyskie show_cart=pokaŝ koszyk added_to_cart=dodano do koszyka. num_of_items=liczba róŝnych produktów w koszyku: error=błąd cart=zawartość koszyka quantity=ilość go_back=wróć total_price=wartość koszyka: removed_from_cart=usunięto z koszyka 22. Dla lokacji en-angielski i lokacji domyślnej wprowadź następujący tekst (moŝesz bezpośrednio skopiować i wkleić tekst do pliku z lokacją). title=shop name=name price=price add_to_cart=add to cart remove_from_cart=remove all show_cart=show cart added_to_cart=added to cart. num_of_items=number of different products in cart: error=error removed_from_cart=removed form cart. cart=cart quantity=quantity go_back=go back total_price=total price: removed_from_cart=removed from cart.

23. Pliki lokalizacji umoŝliwiają przygotowanie wielu wersji językowych wybieranych automatycznie przez serwer aplikacji na podstawie meta danych przesyłanych przez klienta HTTP. Powróć do pliku index.jsp i zamień wszystkie łańcuchy znaków na wywołania znaczników z biblioteki <fmt>. <%@page contenttype="text/html" pageencoding="utf-8" %> <%@page import="java.util.iterator"%> <%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <body> <jsp:usebean id="cart" class="student.beans.shoppingcart" scope="session"/> <fmt:setbundle basename="student.properties.language" /> <h1><fmt:message key="title"/></h1> <c:import var="xmlfile" url="parts.xml"/> <x:parse doc="${xmlfile}" var="doc"/> <table border=1> <th><fmt:message key="name"/></th> <th><fmt:message key="price"/></th> <th> </th> <x:foreach select="$doc/parts/part" var="part"> <td><x:out select="$part/name"/></td> <td><x:out select="$part/price"/></td> <c:set var="part"> <x:out select="$part/@id"/> </c:set> <c:url value="/managecart" var="addurl"> <c:param name="action" value="add"/> <c:param name="partid" value="${part}"/> </c:url> <td><a href="${addurl}"><fmt:message key="add_to_cart"/></a></td> </x:foreach> </table> <br/><fmt:message key="num_of_items"/><c:out value="${cart.size}"/> <br/><a href="show_cart.jsp?action=show"><fmt:message key="show_cart"/></a> </body> </html>

24. Następnym krokiem jest zapewnienie moŝliwości dodawania i usuwania produktów z koszyka. PoniewaŜ jest to element logiki biznesowej, a nie prezentacji, implementujemy tę funkcjonalność w postaci serwletu. Kliknij węzeł korzenia projektu i wybierz New servlet. Jako nazwę podaj ManageCart i umieść serwlet w pakiecie student.servlets. Kliknij przycisk Finish. Wypełnij serwlet poniŝszym kodem. Zwróć uwagę na przekazanie sterowania do strony JSP po wykonaniu logiki biznesowej. Wyświetl cechy projektu i w stronie Sources ustaw zgodność źródeł na 1.5 (dzięki czemu odbędzie się automatyczna konwersja między typami int i Integer). package student.servlets; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import student.beans.shoppingcart; public class ManageCart extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getsession(); shoppingcart cart = (shoppingcart)session.getattribute("cart"); String action = request.getparameter("action"); int part = Integer.parseInt(request.getParameter("partID")); if (action.equals("add")) cart.add(part); else if (action.equals("remove")) cart.remove(part); } } response.sendredirect("show_cart.jsp?action="+action);

25. Ostatnim krokiem w budowie sklepu jest dodanie moŝliwości przeglądania produktów umieszczonych w koszyku klienta. Dodaj stronę JSP (patrz punkt 0) o nazwie show_cart i wprowadź do niej poniŝszy kod. <%@page contenttype="text/html" pageencoding="utf-8"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> <html> <body> <jsp:usebean id="cart" class="student.beans.shoppingcart" scope="session"/> <fmt:setbundle basename="student.properties.language" /> <c:import var="xmlfile" url="parts.xml"/> <x:parse doc="${xmlfile}" var="doc"/> <h3 style="color: red; align: center"> <c:choose> <c:when test="${param.action =='add'}"> <fmt:message key="added_to_cart"/> </c:when> <c:when test="${param.action == 'remove'}"> <fmt:message key="removed_from_cart"/> </c:when> <c:when test="${param.action == 'show'}"/> <c:otherwise> <fmt:message key="error"/> </c:otherwise> </c:choose> </h3> <h2><fmt:message key="cart"/></h2> <table border="1"> <th><fmt:message key="name"/></th> <th><fmt:message key="price"/></th> <th> </th> <c:foreach items="${cart.items}" var="item"> <c:set var="id" value="${item}"/> <c:url value="/managecart" var="removeurl"> <c:param name="action" value="remove"/> <c:param name="partid" value="${id}"/> </c:url> <td><x:out select="$doc//part[@id=$id]/name"/></td> <td><x:out select="$doc//part[@id=$id]/price"/></td> <td><a href="${removeurl}"><fmt:message key="remove_from_cart"/></a></td> </c:foreach> </table> <a href="index.jsp"><fmt:message key="go_back"/></a> </body> </html>

26. Przejdź do edycji głównego pliku (index.jsp) i uruchom aplikację. Przetestuj działanie sklepu. Następnie, sprawdź działanie sklepu dla innej lokacji. Z głównego menu wybierz Narzędzia Opcje internetowe, na zakładce Ogólne kliknij przycisk Języki. Umieść na pierwszym miejscu język angielski[en]. Uruchom stronę sklepu w przeglądarce. 27. Kolejny przykład stanowi prostą aplikację wykorzystującą znaczniki JSTL SQL i FMT do interakcji z bazą danych. Utwórz stronę JSP o nazwie empsearch.jsp i wypełnij ją poniŝszym kodem, a następnie uruchom i przetestuj działanie. Przed uruchomieniem dodaj do projektu sterowniki JDBC do bazy danych Oracle. <%@page contenttype="text/html" pageencoding="utf-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <html> <body> <h1>search form</h1> <form action="empsearch.jsp"> Name: <input type="text" name="empname"/> <input type="submit" value="search"/> </form> <sql:setdatasource url="jdbc:oracle:thin:@miner.cs.put.poznan.pl:1521:miner10g" user="scott" password="tiger" driver="oracle.jdbc.oracledriver"/> <c:choose> <c:when test="${!empty param.empname}"> <sql:query var="employees"> SELECT * FROM pracownicy WHERE nazwisko LIKE UPPER(?) <sql:param value="${param.empname}%"/> </sql:query> </c:when> <c:otherwise> <sql:query var="employees"> SELECT * FROM pracownicy </sql:query> </c:otherwise> </c:choose> <table border="1"> <th>nazwisko</th><th>etat</th><th>zatrudniony</th><th>placa</th> <c:foreach items="${employees.rows}" var="employee"> <td><c:out value="${employee.nazwisko}"/></td> <td><c:out value="${employee.etat}"/></td> <td><fmt:formatdate datestyle="long" value="${employee.zatrudniony}"/></td> <td><fmt:formatnumber type="currency" value="${employee.placa_pod}"/></td> </c:foreach> </table> </body> </html>

28. Ostatnie zadanie polega na przygotowaniu własnego znacznika, który będzie ułatwiał drukowanie informacji o ksiąŝkach. Kliknij prawym klawiszem myszy na ikonie folderu WEB-INF. Z menu wybierz New File/Folder Other Folder i dodaj folder o nazwie tags. Kliknij prawym klawiszem myszy na nowo utworzonym folderze i z menu wybierz New File/Folder Web Tag File. Jako nazwę pliku podaj book. Kliknij przycisk Finish. Edytuj plik book.tag i umieść w nim poniŝszy kod <%@tag pageencoding="utf-8"%> <%@attribute name="title" required="true"%> <%@attribute name="author"%> <table border="1" width="500"> <td align="center" colspan="2"><h3>${title}</h3></td> <td><em>author:</em></td><td><strong>${author}</strong></td> <td><em>book Info:</em></td><td><jsp:doBody/></td> </table> 29. Utwórz nową stronę JSP o nazwie customtag.jsp. Umieść w niej poniŝszy kod. Uruchom stronę i zaobserwuj efekt działania. <%@page contenttype="text/html"%> <%@page pageencoding="utf-8"%> <%@taglib tagdir="/web-inf/tags" prefix="my"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <title>custom tag example</title> </head> <body> <h1>custom tag example</h1> <my:book title="fundamentals of Database Systems" author="elmasri, Navathe"> This book combines clear explanations of theory and design, broad coverage of models and real systems, and excellent examples with up-to-date introductions to modern database technologies. </my:book> </body> </html>

Zadanie do samodzielnego wykonania Wykorzystaj bibliotekę JSTL do przygotowania dwóch własnych znaczników. Pierwszy znacznik ma postać <employees/>, nie zawiera Ŝadnego ciała i powoduje wyświetlenie, w tabelarycznej formie, nazwiska, etatu, płacy podstawowej, daty zatrudnienia i nazwy zespołu dla wszystkich pracowników. Drugi znacznik ma postać <employee>, przyjmuje jeden atrybut wymagany id oraz zawiera atrybuty opcjonalne nazwisko, etat, placa, zatrudniony i zespol. Znacznik powoduje wyświetlenie informacji o wybranym pracowniku (identyfikowanym przez atrybut id ), przy czym wyświetlone zostaną tylko te kolumny, których nazwy zostały przekazane do znacznika jako atrybuty. PosłuŜ się schematem uŝytkownika SCOTT. Przetestuj przygotowany przez siebie znacznik.