PRACA DYPLOMOWA TEMAT: Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT z wykorzystaniem technologii JAVA i PostgreSQL

Wielkość: px
Rozpocząć pokaz od strony:

Download "PRACA DYPLOMOWA TEMAT: Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT z wykorzystaniem technologii JAVA i PostgreSQL"

Transkrypt

1 PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W TARNOWIE INSTYTUT POLITECHNICZNY SPECJALNOŚĆ: INFORMATYKA PRACA DYPLOMOWA TEMAT: Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT z wykorzystaniem technologii JAVA i PostgreSQL Promotor: Dr inż. Robert Wielgat Autorzy: Tarnów 2008

2 2 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Podziękowania Dziękujemy kaczorom, Donaldom i innym bez których nie znaleźlibyśmy odpowiedniej motywacji do napisania tych podziękowań przykładowych bezsensownie zajmujących przestrzeń tekstową w tymże obszarze

3 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 3 Spis treści 1 Wstęp Cele pracy Narzędzia oraz technologie wykorzystane w aplikacji HTML CSS PostgreSQL Java JavaServer Pages Spring Framework Serwer Apache Tomcat Struktura programu Aplikacje webowe wykonane w technologii Java Servlet Środowisko programistyczne Szkielet aplikacji Warstwa prezentacji Warstwa DAO Diagram relacji w bazie danych Przepływ sterowania w aplikacji Mapowanie odpowiednich adresów URL na kontrolery Dispacher-servlet Kontrolery oraz wzorce projektowe command oraz Application-controller Obsługa żądań Nowe typy odpowiedzi Funkcjonalny opis aplikacji Zakładka kolokwia Wyświetlanie listy wszystkich kolokwiów Skala ocen Dodawanie nowych wzorów Utworzenie nowego kolokwium Zakładka Pytania Wyświetlanie listy pytań... 57

4 4 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Dodanie nowego pytania Zakładka Studenci Wyświetlanie listy roczników Rozkład zajęć Klonowanie sal Zakładka Plan zajęć Lista planów nauczania Cele nauczania Instrukcje Podsumowanie Bibliografia...69

5 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 5 1 Wstęp W ciągu całego toku nauczania na Państwowej Wyższej Szkole Zawodowej w Tarnowie, na szóstym semestrze odbywały się zajęcia z Technik Multimedialnych. Na laboratoriach z tego przedmiotu wykorzystywana jest aplikacja TMT (Tarnów Multimedia Toolbox). Wedle opinii osób z naszego roku idea prowadzenia zajęć w ten właśnie sposób jest bardzo trafna i godna poświęcenia uwagi oraz pracy. Można się pokusić o stwierdzenie, iż jest to przyszłość w prowadzeniu zajęć, bowiem powszechnie wiadomo, że obraz ruchomy z odpowiednią narracją jest najłatwiejszym do przyswojenia medium przekazu. Teraz gdy programowanie w Internecie jest w dużym stopniu ułatwione przez technologie typu Java, PHP, HTML, Flash, programiści mogą się wykazać jeśli chodzi tego typu zagadnienia. Co lepsze, pozostawia to całą gamę możliwości dalszej rozbudowy przez naszych następców. Przy odpowiednim nakładzie pracy wierzymy, wierzymy mocno iż projekt tej aplikacji będzie nieodzowną pomocą oraz ułatwieniem dla studentów jak i wykładowców z niej korzystających w chwili obecnej jak i w przyszłości.

6 6 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 2 Cele pracy Naszym zadaniem było rozbudowanie oraz poprawa zarówno wyglądu jak i funkcjonalności aplikacji TMT.

7 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 7 3 Narzędzia oraz technologie wykorzystane w aplikacji 3.1 HTML HTML (ang. Hyper Text Markup Language, pol. hipertekstowy język znaczników) to dominujący język wykorzystywany do tworzenia stron internetowych. Pozwala opisać strukturę zawartych w dokumencie nadając znaczenie poszczególnym fragmentom tekstu (formując linki, nagłówki, akapity, listy, itp.) oraz osadzić w tekście dodatkowe obiekty np. statyczne grafiki, interaktywne formularze, dynamiczne animacje. W składni języka HTML wykorzystuje się znaczniki opatrzone z obu stron nawiasami ostrokątnymi. Język HTML umożliwia, do pewnego stopnia, zdefiniowanie sposobu wizualnej prezentacji dokumentu w przeglądarce internetowej, a także osadzenie ciągów instrukcji języków skryptowych, wpływających na zachowanie przeglądarek lub innych parserów HTML. Zaleca się zrezygnowanie z wykorzystywania znaczników opisujących wygląd strony na rzecz kaskadowych arkuszy stylów CSS. Ważną cechą języka, która wyraźnie przyczyniła się do rozpowszechnienia sieci WWW jest niezależność od systemu operacyjnego oraz parametrów sprzętowych komputera, na którym strony te będą oglądane. HTML definiuje kilka typów danych, wprowadzanych jako wartości elementów lub atrybutów. Są to m.in. skrypty (script data), dane arkuszy stylów (stylesheet data), identyfikatory, nazwy, adresy URL, liczby, jednostki miary długości, języki, deskryptory mediów, kolory, kodowania znaków, data i czas, itp. Język HTML składa się z kilku kluczowych komponentów: znaczników (i ich atrybutów), typów danych, referencji znakowych, odwołań w postaci encji, deklaracji typu dokumentu.

8 8 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 3.2 CSS CSS (ang. Cascading Style Sheets, pol. Kaskadowe arkusze stylów) to język służący do opisu formy prezentacji (wyświetlania) stron WWW. CSS został opracowany przez organizację W3C w 1996 r. jako potomek języka DSSSL przeznaczony do używania w połączeniu z SGML-em. Pierwszy szkic CSS zaproponował w 1994 r. Hakon Wium Lie. Arkusz stylów CSS to lista dyrektyw (tzw. Reguł) ustalających w jaki sposób ma zostać wyświetlana przez przeglądarkę internetową zawartość wybranego elementu (lub elementów) (X)HTML lub XML. Można w ten sposób opisać wszystkie pojęcia odpowiedzialne za prezentację elementów dokumentów internetowych, takie jak rodzina czcionek, kolor tekstu, marginesy, odstęp międzywierszowy lub nawet pozycja danego elementu względem innych elementów bądź okna przeglądarki. Wykorzystanie arkuszy stylów daje znacznie większe możliwości pozycjonowania elementów na stronie, niż oferuje sam (X)HTML. CSS został stworzony w celu odseparowania struktury dokumentu od formy jego prezentacji. Separacja ta zwiększa zakres dostępności witryny, zmniejsza zawiłość dokumentu, ułatwia wprowadzenie zmian w strukturze dokumentu. CSS ułatwia także zmienianie renderowania strony w zależności od obsługiwanego medium (ekran, palmtop, dokument w druku, czytnik ekranowy). Stosowanie zewnętrznych arkuszy CSS daje możliwość zmiany wyglądu wielu stron na raz bez ingerowania w sam kod (X)HTML, ponieważ arkusze mogą być wspólne dla wielu dokumentów. Nazwa kaskadowe arkusze stylów wynika z faktu, iż gdy reguły CSS wykluczają się wzajemnie w arkuszu zewnętrznym, arkuszu wewnętrznym oraz na poziomie elementów HTML, priorytet stylów ustalany jest hierarchicznie. Przyjęto, że oddziaływanie stylów z arkuszy zewnętrznych może być modyfikowane przez style zdefiniowane bliżej formatowanego elementu. Kolejność interpretacji reguł formatujących dany element przez przeglądarkę przedstawia się następująco: Domyślny arkusz przeglądarki WWW (niezależny od autora strony) Domyślny arkusz użytkownika przeglądarki (jak wyżej)

9 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 9 Zewnętrzne arkusze stylów Definicje stylów w nagłówku dokumentu Definicje stylów w atrybucie style elementu Ten model działania pokazuję, w jaki sposób działa kaskada stylów. Między stylami z różnych źródeł nie muszą zresztą wcale występować żadne konflikty, tworzą one jeden wielki styl.

10 10 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 3.3 PostgreSQL PostgreSQL to obok MySQL oraz FIrebird, jeden z trzech najpopularniejszych wolnodostępnych systemów zarządzania relacyjnymi bazami danych. Początkowo opracowywany na Uniwersytecie Kalifornijskim w Berkeley i opublikowany pod nazwą Postgres. W miarę rozwoju i zwiększania funkcjonalności, baza danych otrzymała nazwy Postgtres95 i ostatecznie PostgreSQL, aby upamiętnić pierwowzór oraz zaznaczyć zgodność ze standardem SQL. PostgreSQL ma zaimplementowany mechanizm MVCC (Multiversion Concurency Control) do zarządzania transakcjami. Mechanizm ten umożliwia udostępnienie tej samej krotki więcej niż jednej transakcji. Równocześnie może istnieć przynajmniej kilka wersji tej samej krotki, które nie są widoczne dla innych użytkowników do zakończenia danych transakcji. Dzięki temu baza danych wydajnie zachowuje zasadę ACID. Można tworzyć większość obiektów bazodanowych m.in.: Indeksy, Operatory, Agregaty, Domeny, Rzutowania, Konwersje. Silnik ten zawiera wiele obiektowych rozszerzeń takich jak możliwość definiowania nowych typów podstawowych i dziedziczenia typów tablic. Posiada zaawansowany system transakcji, dwufazowe zatwierdzanie (2PC) i możliwość dodawania funkcjonalności dzięki modułom zawartym w contribie. Jednym z pierwszorzędnych celów twórców PostgreSQL jest jak największa zgodność ze standardem SQL.

11 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Java Java jest obiektowym językiem programowania stworzonym przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem tworzenia programów źródłowych kompilowanych do kodu bajtowego, czyli postaci wykorzystywanej przez maszynę wirtualną. Język cechuje się silnym typowaniem. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, garbage collection) oraz z języka C++ (duża część składni i słów kluczowych) JavaServer Pages JavaServer Pages to technologia umożliwiająca tworzenie dynamicznych dokumentów WWW w formatach HTML, XHTML, DHTML oraz XML z wykorzystaniem języka Java, wplecionego w kod HTML danej strony. W tym aspekcie, jest to rozwiązanie podobne do PHP. Jest to odmiana serwletów (aplikacji w Javie uruchamianych po stronie serwera). Przy wywołaniu, strona JSP zamieniana jest na servlet, który wykonuje właściwe działanie i każde kolejne zapytania do tej strony. Jeśli użyta zostanie prekompilacja (kompilacja wstępna) to już podczas uruchamiania aplikacji wszystkie strony JSP zostaną przetłumaczone na servlety. Strony JSP składają się z następujących elementów: Treść statyczna przepisywana bez modyfikacji do generowanego dokumentu, Dyrektywy JSP informacje kontrolujące proces generowania dokumentu, Elementy skryptowe skrypty (kod w języku Java kontrolujący proces generowania dokumentu) oraz elementy składniowe tzw. Expression Language, Akcje JSP tagi XML wywołujące określone metody serwerowe.

12 12 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Spring Framework Spring jest szkieletem tworzenia aplikacji w języku Java dla platformy J2EE (jakkolwiek istnieje też wersja dla środowiska.net). Spring powstał na bazie kodu opublikowanego w książce Roda Johnsona Design and Development. Pozytywny odzew czytelników sprawił, że był on dalej rozwijany przez autorów (m.in. Johnsona, Jurgena Hoellera), którzy postanowili założyć firmę Interface21, świadczącą usługi konsultingowe związane z tym szablonem. Pierwsze wydanie springa pojawiło się w lipcu 2003 roku na bazie licencji Apache 2.0 licence. Wersja 1.0 ukazała się w marcu 2004 roku. Spring powstał jako alternatywa dla programowania aplikacji z użyciem Enterprise JavaBeans. Programowanie z użyciem EJB narzucało wiele innych ograniczeń, wymagając między innymi przyjęcie określonego modelu tworzenia oprogramowania. Funkcjonalność EJB okazała się także za ciężka do wszystkich zastosowań (w małych projektach wykorzystywano tylko niewielką część oferowanej przez EJB funkcjonalności jednocześnie stworzenie małej aplikacji w środowisku EJB wymagało nakładu pracy jak przy aplikacji dużej). Odmienna koncepcja Springa lekkiego szablonu, który nie wymusza specyficznego modelu programowania stała się bardzo popularna wśród programistów Javy. Spring oferuje dużą swobodę w tworzeniu rozwiązań a jednocześnie jest dobrze udokumentowany i zawiera rozwiązania wielu często występujących zagadnień w programowaniu. Podczas gdy bazowe komponenty Springa mogą być używane praktycznie w każdej aplikacji istnieje w nim wiele rozszerzeń, które pozwalają budować aplikacje webowe na bazie J2EE Odwrócenie sterowania kontener IoC Spring zapewnia bazowane na JavaBeans ach zarządzanie konfiguracją, stosowanie zasad odwrócenia sterowania (ang. Inversion-of-control, IoC). Pozwala to na szybsze i prostsze składanie aplikacji. IoC kojarzone jest także ze Wstrzykiwaniem

13 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 13 zależności (ang. Dependency Injection), jakkolwiek to drugie jest pojęciem węższym. Zasady IoC używane są w Springu jako technika, która pozwala przekazać na zewnątrz (ang. externalize) tworzenie i zarządzanie zależnościami pomiędzy komponentami programu zależności konfigurowane są w pliku, a zarządzanie wykonywane jest przez kontener IoC.

14 14 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Szablon dostępu do danych DAO Warstwa abstrakcji JDBC, opakowuje standardowy mechanizm JDBC rzucając znaczące wyjątki zorganizowane w hierarchię (nie ma potrzeby wyciągania kodów dostawcy z wyjątku SQLExeption). Podejście to znacznie redukuje ilość kodu, którą musi napisać programista, aby obsłużyć błędy. Nie ma potrzeby pisania kolejnych bloków finally. Wyjątki związane z JDBC są zgodne z hierarchią wyjątków generycznego obiektu dostępu do danych (DAO) w Springu. Ta sama warstwa abstrakcji pozwala integrować aplikację z Hibernate, Java Data Objects oraz mapami SQL ibatis a, a w sensie uchwytów do zasobów, wsparcia dla obiektów dostępu do danych i strategii transakcji. bardzo silne wsparcie dla Hibernate z mnóstwem udogodnień IoC, które wspomagają typowe zagadnienia integracji Hibernate z aplikacjami. Wszystkie one są zgodne z generycznymi hierarchiami wyjątków w transakcjach i DAO Szablon Model-Widok-Kontroler Spring zapewnia elastyczny trój powłokowy szablon Model-Widok-Kontroler (ang. Model-View-Controller, MVC), zbudowany na bazowej funkcjonalności Springa. Programiści otrzymują wysoki stopień kontroli nad szablonem poprzez interfejsy strategii (strategy interfaces). Obsługuje on wiele technologii, w tym strony JSP, FreeMarket, Velocity, itext, Apache POI. Środkową powłokę można łatwo połączyć z powłoką innego szablonu MVC, w tym Apache Struts, WebWork albo Tapestry. Problem z wzorcem projektowym MVC polega na stworzeniu przejrzystego szablonu dla stworzenia części Modelu (np. Apache Struts). Możliwość współpracy Springa z takimi wzorcami oznacza, że programiści mogą szybko zrefaktorować (ang. refactoring) nieudaną implementację i używać sparingowej warstwy abstrakcji JDBC.

15 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Serwer Apache Tomcat Apache Tomcat to kontener aplikacji webowych (ang. web container) rozwijany w ramach projektu Apache. Jako kontener aplikacji jest serwerem, który umożliwia uruchamianie aplikacji internetowych w technologiach Java servlets i JavaServer Pages (JSP). Jest to jeden z bardziej popularnych kontenerów Web. Tomcat jest wykorzystywany w takich serwerach aplikacji J2EE jak JBoss lub Apache Geronimo. Jest również bardzo popularnym kontenerem dla samodzielnych aplikacji (nie wymagających pełnego serwera aplikacji) pisanych w środowisku Spring Framework. Apache Tomcat początkowo rozwijany był jako podprojekt projektu Apache Jakarta. W 2005 roku projekt uzyskał status samodzielnego projektu w ramach struktury projektów Apache.

16 16 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 4 Struktura programu 4.1 Aplikacje webowe wykonane w technologii Java Servlet Aplikacje internetowe wykonane w technologii Java Servlet opierają się na architekturze klient-serwer i są przystosowane do wykorzystywania standardowego protokołu HTTP. Klientem staje się przeglądarka stron internetowych a serwerem - aplikacja w Javie. Aplikacja taka działa jak dynamiczna witryna WWW, której zawartość zmienia się wraz ze zmianą żądań nadchodzących od klienta. HTTP czyli Hypertext Transfer Protocol jest protokołem sieci WWW, za pomocą którego klient wysyła żądanie na serwer i otrzymuje odpowiedź w postaci na przykład strony HTML. Jest to protokół bezstanowy, co oznacza, że kolejne żądania tego samego klienta nie są ze sobą w żaden sposób powiązane. Mechanizmem umożliwiającym łączenie żądań pochodzących od tego samego klienta są sesje. Sesja to pewien obszar pamięci na serwerze, który aplikacja rozpoznaje jako zbiór informacji skojarzonych z tym samym użytkownikiem. Dzieje się tak dlatego, iż klient wysyłając żądanie na serwer zawsze zawiera w żądaniu pewne parametry identyfikujące sesje. Oprócz dołączenia parametrów może dołączyć do żądania pewne dodatkowe parametry w postaci łańcuchów znaków umieszczone w treści metod GET lub POST. Parametry te są dołączane albo na końcu adresu URL poprzez metodę GET lub w nagłówku żądania dzięki metodzie POST. Serwer otrzymując żądanie sprawdza czy zawiera ono tzw. identyfikator sesji, czyli unikatowy numer dla każdej sesji. Jeśli taki numer nie istnieje serwer interpretuje żądanie jako pochodzące z nowej sesji, którą w tym momencie tworzy i generuje dla niej identyfikator. Następnie identyfikator sesji jest zawarty w odpowiedzi przekazanej do klienta. Przeglądarka zapisuje identyfikator sesji w pliku cookie jeżeli jest włączona w niej obsługa tych plików lub przepisuje go do adresu URL i tam go przechowuje. Przy następnym żądaniu pochodzącym od tego samego klienta, serwer odnajduje w nim identyfikator sesji i wie, że to żądanie pochodzi od tego samego klienta i może połączyć go z istniejącą sesją. W aplikacjach opartych o technologię Java Servlet w sesji można przechowywać nie tylko łańcuchy znaków

17 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 17 lecz także atrybuty w postaci obiektów. Sesje są używane przez aplikacje WWW między innymi do autoryzacji użytkownika. Protokół http używa dwóch metod do przesyłania informacji wraz z żądaniem. GET - Informacje w tej metodzie są przesyłane jako łańcuchy znaków dołączone do adresu URL czyli tzw. Query String. Wadą tej metody jest to że informacje są widoczne w treści adresu URL. W przypadku metody POST informacje zawarte są w nagłówku żądania http. W aplikacji zastosowano obydwie metody. Jeżeli aplikacja odbiera żądanie dotyczące mniejszej ilości przesłanych parametrów to użyta zostaje metoda GET. W sytuacji, gdy aplikacja obsługuje przesłanie przez formularz większej ilości danych na przykład dodanie jakiegoś obiektu do bazy danych, wówczas używana jest metoda POST. Aplikacje oparte o technologię Java posiadają w swych zasobach klasę, którą traktują jak klasę główną. Znajduje się w niej główna metoda wywoływana zawsze podczas uruchomienia aplikacji. Java wspiera tworzenie aplikacji opartych o protokół http za pomocą technologii Java Servlet będącej częścią specyfikacji J2EE. Servlet jest zwykłą klasą Javy, która dziedziczy po pewnej klasie lub implementuje pewien interfejs HttpServlet z pakietu javax.servlet. Interfejs ten wymaga od programisty zaimplementowania dwóch metod dopost() i doget(). Metody te obsługują żądania nadchodzące przez metodę POST i GET. Przykładową implementację metod dopost() i doget() przedstawia poniższy fragment programu: public class Servlet_prosty extends HttpServlet{ public void doget(httpservletrequest request,httpservletresponse response) throws ServletException{ response.setcontenttype( text/html ); PrintWriter out = response.getoutputstream(): out.prinln( <html><head></head><body> TEKST </body></html> ); } public void dopost(httpservletrequest request,httpservletresponse response) throws ServletException{ doget(request,response); } }

18 18 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Jak widać servlet posiada metody obsługujące każde żądanie według podanych metod http. Bardzo istotne są obiekty przekazywane w liście argumentów tych metod. Obiekt klasy HttpServletRequest reprezentuje żądanie klienta a obiekt HttpServletResponse odpowiedź serwera. Do najważniejszych metod obiektu klasy HttpServletRequest należą: getparameter( nazwaparametru ) pobiera parametry formularza, getattribute( nazwaatrybutu ) pobiera atrybut, którym może być również obiekt, setattribute( nazwaatrybutu,identyfikatorobiektu) służy ustawienia atrybutu, na odpowiedni obiekt następnie przekazany do kolejnego zasobu wraz z żądaniem, getsession() zwraca obiekt reprezentujący aktualną sesję, getdispatcherservlet() pobiera specjalny obiekt z kontekstem servletu i danej aplikacji z referencjami do wszystkich zasobów aplikacji, getremoteadress() podaje ciąg znaków zawierający adres IP komputera z którego przyszło żądanie, getcharacterencoding() pobiera kodowanie znaków żądaniu, w przesłanym setcharacterencoding() ustawia kodowanie znaków. Innym używanym bardzo często obiektem jest obiekt klasy HttpServletSession. Aby mieć do niego dostęp należy użyć metody getsession(). Następnie można już dokonywać operacji związanych z sesją. Użytecznymi metodami tej klasy są: setattribute( id_obiektu,obiekt) ustawienie obiektu w sesji, getattribute( id_obiektu ) pobranie obiektu w sesji, removeattribute( id_obiektu ) usunięcie obiektu z sesji, invalidate() unieważnienie sesji, isnew() sprawdzenie czy sesja jest nowo utworzona.

19 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 19 Gdy do klienta zostaje wysłana odpowiedź, przez aplikację jest ona widziana jako obiekt klasy HttpServletResponse. Najważniejsze metody tej klasy to: setcontenttype() ustawia typ zawartości strony czyli, tzw. typ MIME dzięki któremu przeglądarka wie jak ma zinterpretować zawartość strony, sendredirect() wysyła przeglądarce nakaz przejścia na inny adres URL podany jako argument metody, getwriter() zwraca strumień wyjściowy do którego można zapisywać dane w postaci znakowej, getoutputstream zwraca strumień do którego zapisuje się dane w postaci binarnej. Za pomocą powyższych metod może zostać obsłużone każde żądanie trafiające do serwera.

20 20 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 4.2 Środowisko programistyczne Aplikację napisano wykorzystując środowisko NetBeans IDE 5.5. Jest to darmowe środowisko, które można pobrać ze strony Na rysunku przedstawiony jest wygląd środowiska NetBeans. Po lewej stronie ekranu znajduje się zakładka Projects, w której zawarta jest lista wszystkich projektów otwartych w programie. Po prawej stronie ekranu znajduje się wbudowany edytor kodu, który jest konfigurowalny w bardzo szerokim zakresie. Środowisko posiada także wbudowaną wersję serwera Apache Tomcat W związku z tym nie jest konieczne posiadanie osobnego serwera Tomcat niezbędnego do uruchomienia aplikacji napisanych w technologii Java Servlet. Warto jednak pamiętać,że NetBeans domyślnie uruchamia Tomcata na porcie 8084.

21 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Szkielet aplikacji Aplikacja używa wspomnianego w jednym z wcześniejszych rozdziałów szkieletu Spring Framework, który implementuje wzorce projektowe takie jak: wzorzec Model-View-Controller, wzorzec Front Controller, wzorzec Application Controller, wzorzec Command, wzorzec Dao, Application Context, wzorzec Inversion of Control (IoC), abstrakcyjnej fabryki obiektów. Pierwszym, wartym omówienia wzorcem jest Inversion of Control (IoC), czyli wzorzec odwrócenia sterowania polegający na przeniesieniu sterowania nad pewnymi obiektami do innych zewnętrznych obiektów. W technologii Spring użyta jest pewna forma tej koncepcji tworzenia aplikacji o nazwie wstrzykiwanie zależności.. Podstawową cechą takiego modelu programowania jest przeniesienie odpowiedzialności za tworzenie zależności pomiędzy obiektami na pewne zewnętrzne obiekty nazywane kontenerami. Zależności pomiędzy obiektami nie są zdefiniowane w bezpośredni sposób w kodzie aplikacji lecz ich odpowiednie ustawienie spada tzw. fabryki obiektów. Dzieje się to za pomocą pewnych metod nazywanych w programowaniu obiektowym setterami (z ang. set ustawić). W aplikacji napisanej za pomocą Spring Framework, należy wyodrębnić trzy oddzielne warstwy : warstwę prezentacji na którą składa się zespół widoków wykonanych w technologii JSP, JSTL, Spring Tags, JavaScript oraz HTML i CSS. warstwę usług, która jest całkowicie wykonana za pomocą technologii Java Servlet

22 22 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT warstwę DAO czyli Data Access Object warstwa ta odpowiada za interakcję z bazą danych.

23 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Warstwa prezentacji Jednym z najważniejszych wymagań stawianych dobrze zaprojektowanemu frameworkowi jest zapewnienie,by infrastruktura kontrolerów nie narzucała stosowanej technologii generacji widoków. W Springu wymóg ten jest realizowany przez zastosowanie logicznych nazw widoków oraz komponentów nazywanych resolverami widoków. Resolvery mają za zadanie przekształcać logiczne nazwy widoków na zasoby zdolne do wygenerowania samego widoku. W naszej aplikacji w warstwie prezentacji zostanie wykorzystana technologia JSP, stanowiąca jeden z elementów specyfikacji J2EE. Aby stworzyć widok używając technologii JSP, w pierwszej kolejności należy zdefiniować w kontekście aplikacji komponent resolvera widoku. <bean id="viewresolver" class="org.springframework.web.servlet.view.internalresourceviewresolver"> <property name="prefix" value="/web-inf/jsp/"/> <property name="suffix" value=".jsp"/> </bean> Po zdefiniowaniu resolvera widoku, który będzie przekształcał logiczne nazwy widoków na konkretne pliki JSP wystarczy stworzyć stronę z rozszerzeniem jsp.

24 24 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 4.5 Warstwa DAO Warstwa DAO to pewien zbiór metod służących do pobierania, edytowania i zapisywania informacji w jakimś określonym źródle danych. Takim źródłem może być plik XML, baza danych lub jakiś inny plik. DAO to skrót od wyrazu Data Access Object pochodzącego z języka angielskiego i oznaczającego nic innego jak zbiór obiektów odpowiedzialnych za dostęp do danych. Zastosowanie w aplikacji warstwy DAO wymaga zaimplementowania w niej dodatkowych interfejsów. Dzięki zastosowaniu tego wzorca projektowego aplikacja nie musi znać miejsca składowania danych ani też sposobu dostępu do nich. Dzięki takiemu rozwiązaniu aplikacja może zostać rozbudowana w bardzo prosty sposób. Nie ingerując w kod warstwy pośredniej możemy zmieniając DAO zmienić sposób dostępu do bazy danych. W prezentowanej aplikacji jako metoda dostępu do bazy danych została użyta warstwa pośrednia Spring Frameworka bazująca na sterowniku JDBC. Warstwa DAO wykorzystuje jeszcze jeden wzorzec projektowy a mianowicie abstrakcyjną fabrykę obiektów. Polega to na tym, że pewne obiekty są zbudowane w postaci interfejsu a nie konkretnej implementacji. Obiekty wchodzące w interakcje z tymi obiektami postrzegają je właśnie jako zbiór metod bez konkretnej implementacji. Następnie do każdego z interfejsów stworzony jest obiekt z konkretną implementacją. Dzięki takiemu rozwiązaniu obiekty końcowe można później podmienić na inne zmieniając przez to sposób dostępu do danych. Oto fragment przykładowego Dao obiektu typu KolokwiumDao będącego interfejsem: Public interface KolokwiumDao{ public Komputer getkomputer(int id_kompa); public int addpytanie(pytanie pytanie); public int setstatuspytania(statuspyt statuspyt,int id_pytania); public int deletepytanie(int id_pytania); public List getpytaniaingrupa(int id_grupy); public List getodpowiedziinpytanie(int id_pytania); public int addskalaocen(skalaocen skalaocen) public List getstudencinakolbyidgrupy(int id_grupy)... }

25 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 25 Jak widać jest to zbiór pewnych metod czyli inaczej mówiąc usług, których wykonania może zażądać od obiektu jakiś inny obiekt. Przykładem właśnie takiego żądania może być pobranie wszystkich pytań dla danej grupy. Służy do tego metoda, public List getpytaniaingrupa(int id_grupy); która jako argument pobiera id grupy na kolokwium a zwraca listę obiektów określonego typu. Metoda ta nie posiada konkretnej implementacji w obiekcie w którym się znajduje. Wiele aplikacji opartych o technologie J2EE używa mechanizmów dostępu do różnych zasobów danych. Jak wiadomo mechanizmami takimi mogą być sterowniki JDBC, JDO narzędzia do odwzorowania obiektowo relacyjnego typu Hibernate lub ibatis. Interfejs tych narzędzi może się znacznie różnić od siebie. Dzięki jednak zastosowaniu abstrakcyjnej fabryki DAO można używać tych narzędzii w tej samej aplikacji nie zmieniając jej kodu znacznie a jedynie zmieniając kod należący do warstwy Dao. W przypadku naszej aplikacji implementacja KolokwiumDao znajduje się w klasie KolokowiumJdbcDao, która dziedziczy po klasie JdbcDaoSupport. Klasa ta należy do pakietu Spring Framework i stanowi szablon dla obiektu oferującego funkcjonalność DAO w Springu przy użyciu sterownika JDBC. Jednym z pól tej klasy jest pole implementujące interfejs DataSource. Interfejs jest standardem w aplikacjach opartych o technologię J2EE.. W tym przypadku jako obiekt reprezentujący ten interfejs użyto standardowej postgresowej puli połączeń czyli obiektu klasy org.postgresql.jdbc2.optional.poolingdatasource. Poniżej przedstawiony jest format tego obiektu: <bean id="datasource" class="org.postgresql.jdbc2.optional.poolingdatasource"> <property name="servername" value="${jdbc.servername}"/> <property name="databasename" value="${jdbc.databasename}"/> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="datasourcename" value="a data Source" /> <property name="maxconnections" value="90"/> </bean>

26 26 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Pula połączeń to pewien obiekt zawierający zbiór zainicjalizowanych i otwartych połączeń. Z otwarciem nowego lub z zamknięciem starego połączenia wiążę się pewien określony koszt, który wynika z tego, że aplikacja zużywa wówczas zasoby systemowe. Poza tym użytkownik musi czekać aż operacja nawiązania połączenia się dokona. System tak zbudowany traci na wydajności, skalowalności, może znaleźć się w stanie niepotrzebnego przestoju wynikającego z wyczerpania ilości połączeń. Zamiast tego pula połączeń umieszczona w globalnym zasięgu aplikacji w postaci jednego egzemplarza korzystając z gotowych interfejsów do pobierania i zwracania połączenia obsługuje operacje wszystkich wątków aplikacji z bazą danych. Warto nadmienić iż parametry konfiguracyjne puli połączeń zostały umieszczone w osobnym pliku jdbc.properties z którego są wczytywane. Zmieniając więc te parametry zmienia się wyłącznie zawartość tego pliku nie ingerując ani w kod aplikacji ani w treść pliku definiującego jej kontekst. Warstwa Dao oparta jest więc o pewne standardowe klasy z pakietu Spring Framework. Dzięki zastąpieniu standardowego API Jdbc przez warstwę pośrednią Spring Framework unikamy podczas pisania aplikacji problemu związanego z kłopotliwym zarządzaniem obiektami klasy Connection, Statement a także obsługi wyjątków w blokach try catch. Oto fragment warstwy Dao a dokładniej konkretnej implementacji interfejsu KolokwiumDao w postaci KolokwiumJdbcDao: public class KolokwiumJdbcDao implements KolokwiumDao extends JdbcDaoSupport { public List getallsale() { return getjdbctemplate().query("select * FROM sale",new RowMapper(){ public Object maprow(resultset rs, int i) throws SQLException { Sala sala=new Sala(); sala.setid(rs.getint("id_sali")); sala.setnazwasali(rs.getstring("nazwa_sali")); sala.setkomputers(getcomputersinsala(sala.getid())); return sala; } }); }... }

27 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 27 Powyższa metoda pobiera z bazy danych wszystkie obiekt typu Sala. Bardzo ważnym obiektem w klasie JdbcDaoSupport jest obiekt klasy JdbcTemplate. To właśnie jego zadaniem jest pobranie z puli połączeń aktualnie dostępnego połączenia oraz wywołanie odpowiednich metod umożliwiających interakcję z bazą danych.(dodawanie, usuwanie, edycja rekordów). Obiekt klasy JdbcTemplate dostarcza wielu metod odpowiedzialnych za dokonywanie tych operacji. Oto niektóre z nich oraz przykładowa implementacja tych metod w naszej aplikacji. Update (String SQL,Object[] arglist) metoda ta posiada kilka postaci. W najczęściej spotykanej wykonuje operacje związane z dodawaniem rekordów, edytowaniem ich zawartości oraz usuwaniem rekordów z bazy danych. Pierwszym argumentem metody jest zapytanie SQL a następnym lista argumentów zapytania w postaci tablicy obiektów. Argumenty z listy zostaną powiązane z brakującymi danymi w zapytaniu za pomocą mechanizmu zwanego późnym wiązaniem zmiennych. Oto przykład takiego rozwiązania: public int deletesala(int id_sali) { return getjdbctemplate().update("delete * FROM sale WHERE id_sali=?",new Object[]{new Integer(id_sali)}); } Na listingu została przedstawiona metoda usuwająca z bazy danych salę o określonym identyfikatorze.. Dzięki zastosowaniu późnego wiązania zmiennych argumenty metody, które parametryzują polecenie SQL nie muszą być dołączane do zapytania w postaci konkatenacji znaków co z kolei wymuszało by konieczność dodatkowego filtrowania lub kodowania i dekodowania parametrów. Analogicznie przedstawia się metoda edytująca dane w bazie danych. public int editsala(sala sala) { return getjdbctemplate().update("update sale SET nazwa_sali=? WHERE id_sali=?",new Object[]{sala.getNazwaSali(),new Integer(sala.getId())}); } Innymi pomocnymi metodami klasy JdbcTemplate są metody umożliwiające pobieranie danych z bazy.

28 28 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Metody queryforint, queryforobject, queryforlist i query służą pobieraniu danych, które następnie są umieszczane w odpowiednich obiektach zwanych TransferObjects i przenoszone do innych warstw aplikacji. Poniżej podano przykłada użyty w aplikacji TMTTesty: public List getallsale() { return getjdbctemplate().query("select * FROM sale",new RowMapper(){ public Object maprow(resultset rs, int i) throws SQLException { Sala sala=new Sala(); sala.setid(rs.getint("id_sali")); sala.setnazwasali(rs.getstring("nazwa_sali")); sala.setkomputers(getcomputersinsala(sala.getid())); return sala; } }); } Metoda pobierająca wszystkie sale z bazy wywołuje metodę query, która pobiera trzy rodzaje argumentów. Pierwszym argumentem jest String reprezentujący zapytanie SQL, kolejnym tablica obiektów które są przekazywane do zapytania. Ostatnim argumentem jest klasa anonimowa typu RowMapper. Klasa ta nie posiada implementacji gdyż jest interfejsem,a jedyną jej metodą jest maprow (ResultSet rs, int i), która to dokonuje cyklicznego mapowania(obrobienia wyników zapytania) W metodzie tej następuje pobieranie danych z obiektu ResultSet będącego wynikiem zapytania i zapisywanie ich do nowo-utworzonego obiektu sala.następnie obiekt ten jest umieszczany na odpowiedniej kolekcji danych w tym wypadku kolekcji List. Ta kolekcja jest bardzo często spotykanym zbiorem danych w języku Java. Inna metoda odpowiedzialna za pobranie z bazy danych jakichś informacji jest metoda queryforobject(),która zwraca konkretny obiekt. Aby mogła zostać wykonana taka operacja należy skorzystać wcześniej z operacji rzutowania tego zwracanego obiektu na konkretny obiekt. Rzutowanie tego rodzaju nazywa się rzutowaniem w górę.

29 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Diagram relacji w bazie danych W bazie danych, z której korzysta aplikacja istnieje ponad 30 relacji. Poniżej znajduje się rysunek przedstawiający najistotniejsze relacje. kolokwia 1 id_kolokwium nazwa_kolokwium id_grupy_zal id_sali czas_trwania czas_odbycia notatki status sposob_przyz ilosc_grup ilosc_pytan id_skali 1 sale id_sali nazwa_sali pytania_na_kol id_pytania_kol id_grupy_kol id_pytania_pyt nr_pyt_gr 1 pytania id_pytania tresc_pyt tresc_odp status_pyt kod_prof sceny_pytan id_pow id_pytania id_sceny 1 grupy_kol id_grupy_kol nr_grupy_kol id_kolokwium odpowiedzi_studenta id_odp_stud indeks id_grupy_kol id_odp_odp tresc jednostka kod punkty 1 sceny id_sceny temat_sceny czas_trwania id_celu scena Legenda: Klucz_glówny 1 Klucz obcy Rekord bez klucza 1 odpowiedzi id_odpowiedzi id_pytania id_typu wart_punkt nr_odp_pyt tresc jednostka

30 30 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 4.7 Przepływ sterowania w aplikacji Pierwszym elementem aplikacji na który natrafia żądanie klienta http jest Interceptor czyli pewien moduł aplikacji WWW opartej o technologię Spring MVC, który nasłuchuje większość nadchodzących żądań do danej aplikacji. Moduł ten jako pierwszy obsługuje żądanie zanim trafi ono do innych modułów. Do jego podstawowych zadań należą: sprawdzenie czy aplikacja jest w stanie w pełni obsłużyć żądania od klienta sprawdzenie poprawności sesji, autoryzacja klienta sprawdzenie czy adres IP klienta należy do puli adresów zaufanych sprawdzenie kodowania znaków przesłanych w parametrach żądania ustawienie odpowiedniego kodowania Aby taki moduł mógł spełniać swoje zadanie, musi być umieszczony w zasięgu wszystkich zasobów do których może odwołać się klient. W naszej aplikacji Interceptor nadaje odpowiednie uprawnienia sesji klienta, status użytkownika, nazwę użytkownika oraz ustawia kodowanie UTF-8 dla parametrów przesyłanych przez żądanie.

31 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Mapowanie odpowiednich adresów URL na kontrolery Poszczególne adresy URL, których może użyć klient do wywołania odpowiednich działań aplikacji, przechowywane są w specjalnym obiekcie (kontenerze) który rozpoznaje adresy URL i kieruje żądanie pod odpowiedni kontroler. Obiektem służącym do takiego mapowania adresów jest obiekt klasy SimpleUrlHandlerMapping z pakietu Spring Framework. Umieszczając w kontekście aplikacji obiekt klasy SimpleUrlHandlerMapping możemy skonfigurować go w odpowiedni sposób tzn. ustawić mapowanie adresów URL na odpowiednie kontrolery, które obsłużą żądania klienta. Konfiguracja obiektu mapującego w przypadku naszej aplikacji znajduje się w pliku dispatherservlet.xml. Poniżej przedstawiono fragment tego pliku: <bean id="urlmapping" class="org.springframework.web.servlet.handler.simpleurlhandlermapping"> <property name="interceptors"> <list> <ref bean="userandcodinginterceptor"/> </list> </property> <property name="mappings"> <props> <prop key="welcome.htm">inputcontroller</prop> <prop key="installsql.htm">inputcontroller</prop> </props> </property> </bean> Fragment pliku dispather-servlet.xml z listingu przedstawia część konfiguracji obiektu mapującego adresy URL na odpowiednie kontrolery. Konfiguracja taka musi zawierać standardowy znacznik <bean> w którym jako atrybut podana jest nazwa nowopowstałego obiektu id="urlmapping" oraz nazwa klasy wraz z pełną ścieżką dostępu do niej w hierarchii bibliotek. Następnie poprzez znaczniki <property> ustawiane są w odpowiedniej kolejności pola obiektu. W naszej aplikacji są to dwa pola właściwości:

32 32 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Interceptors w którym jest zdefiniowana lista interceptorów Mappings w którym jest zdefiniowana lista odwzorowań URL (klucz) kontroler (wartość)

33 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Dispacher-servlet W aplikacjach sieciowych opartych na technologii JAVA-SERVLET używany jest wzorzec projektowy o nazwie Front-Controller. Ma on za zadanie odbierać wszystkie żądania klienta i decydować gdzie je kierować. W poprzednim punkcie zostało wspomniane o obiekcie odwzorowującym adresy URL na odpowiednie kontrolery obsługujące dane żądanie. W technologii Spring Framework jako obiekt front-controller używany jest servlet nazywany dispatcher-servlet. Servlet taki musi dziedziczyć po klasie należącej do pakietu Spring MVC o nazwie DispatcherServlet. Klasa, której instancje pełnią funkcję front-controllera w aplikacji, musi spełniać kilka założeń: musi opierać się o mechanizm Java Beans, musi posiadać mechanizm, który pozwoli jej sterować żądaniami klienta, musi mieć zaimplementowany pewien mechanizm umożliwiający zwrócenie odpowiedniego widoku, powinna posiadać łatwo konfigurowalny kontekst, a także mieć dostęp do głównego kontekstu aplikacji. Przedstawione powyżej wymagania spełnia klasa DispatcherServlet. Na poniższym rysunku pochodzącym z dokumentacji technologii Spring MVC przedstawiono schemat przejścia żądania w aplikacji Spring MVC.

34 34 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Incoming request Front controller Delegate request model Handle request Controller Return response Return control model Render response Delegate rendering of response Create model View template Servlet engine (e.g. Tomcat) Jak widać na rysunku żądanie najpierw trafia do Front-Controllera, tam obiekt ten podejmuje decyzję, w jaki sposób obsłużyć żądanie. Przekazuje obsługę żądania tzn. deleguje obsługę do odpowiedniego kontrolera.. Ten z kolei wykonuje odpowiednie operacje i zwraca do Front-Controllera odpowiedni model czyli dane, oraz nazwę widoku, który musi być zwrócony klientowi. w postaci strony JSP. Front-Controller przekazuje sterowanie wraz z potrzebnymi danymi do odpowiedniego widoku(używa do tego obiektu o nazwie viewresolver). Servlet pełniący funkcję Front-Controllera musi być uprzednio skonfigurowany w pliku Web.xml. <servlet> <description>dispatcher servlet for this application</description> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class>

35 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 35 </servlet> <load-on-startup>2</load-on-startup> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> W momencie gdy serwer Tomcat uruchamia aplikacje, natrafia na powyższy fragment pliku Web.xml i tworzy instancję servletu o identyfikatorze dispatcher, będącego instancją klasy DispatcherServlet. Następnie ustawia kierowanie wszystkich adresów URL o prefiksie.htm na ten servlet. <?xml version="1.0" encoding="utf-8"?> <beans> <bean id="professorregistervalidator" class="validators.professorregistervalidator"> <property name="professordao" ref="professordao"/> </bean> <bean id="writecolokwiumcontroller" class="controllers.writecolokwiumcontroller"> <property name="uprawnienia" ref="uprawnienia"/> <property name="kolokwiumdao" ref="kolokwiumdao" /> <property name="studentdao" ref="studentdao"/> <property name="methodnameresolver" ref="writecolokwiumcontrollerresolver"/> </bean> <bean id="addscenaform" class="controllers.addscenaform"> <property name="ngpdao" ref="ngpdao" /> <property name="uprawnienia" ref="uprawnienia"/> <property name="formview" value="addscena"/> <property name="successview" value="ngpcele"/> </bean> </beans> Na listingu został przedstawiony fragment pliku dispatcher-servlet.xml. Pierwsza linia to deklaracja użytej wersji języka XML oraz zastosowanego kodowania znaków. Następna linia to znacznik <beans> otwierający ciało pliku. Dalej przedstawiona jest konfiguracja obiektu odpowiedzialnego za walidację danych w przypadku rejestracji nowego wykładowcy, a także konfiguracja obiektów

36 36 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT writecolokwiumcontroller (pisanie kolokwium przez studenta) oraz addscenaform (formularz dodawania nowych scen do instrukcji ).

37 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Kontrolery oraz wzorce projektowe command oraz Applicationcontroller. Kolejnym ważnym wzorcem projektowym stosowanym w architekturze aplikacji opartych o technologię J2EE jest wzorzec application-controller. Jest on ściśle powiązany z wzorcem projektowym command. Służą one obsługiwaniu żądań klienta w warstwie usług. Zgodnie z tym co zostało napisane w poprzednich rozdziałach żądania nadchodzące od klienta HTTP trafiają najpierw na obiekt dispatcher-servlet.xml będący punktem wejściowym aplikacji. Następnie wysyłane jest zapytanie do interceptora, czy żądanie może zostać obsłużone. Jeśli interceptor nie odrzuci żądania dispatcher kieruje żądanie do odpowiedniego kontrolera. Poprzez pojęcie kontrolera rozumiany jest właśnie application-controler. W omawianej aplikacji istnieje kilkanaście kontrolerów odpowiedzialnych za różne akcje. public ModelAndView przegpytanie(httpservletrequest request,httpservletresponse response) throws PropertyVetoException{ if(!checkprivilleges(request,"bazastudentow")) return new ModelAndView("nonPrivilleges"); int id_pytania=integer.parseint(request.getparameter("id_pytania")); Pytanie pytanie=kolokwiumdao.getpytanie(id_pytania); List odpowiedzi=kolokwiumdao.getodpowiedziinpytanie(id_pytania); ModelAndView mav=new ModelAndView("przegPytanie"); mav.addobject("odpowiedzi",odpowiedzi); mav.addobject("pytanie",pytanie); mav.addobject("typyodp",kolokwiumdao.gettypyodp()); return mav; } Na listingu została przedstawiona metoda umożliwiająca przeglądanie szczegółowych informacji na temat określonego pytania na kolokwium. Metoda ta znajduje się w klasie BazaKolokwiumController z pakietu controllers. Przyjmuje ona dwa argumenty - obiekty będące żądaniem klienta i skierowaną do niego

38 38 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT odpowiedzią. Metoda zwraca obiekt ModelAndView, zawierający w sobie logiczną nazwę generowanego widoku, ModelAndView mav=new ModelAndView("przegPytanie"); i model czyli dane wyświetlane na tej stronie, przekazywane do tego widoku w postaci obiektów. mav.addobject("odpowiedzi",odpowiedzi); mav.addobject("pytanie",pytanie);

39 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Obsługa żądań W celu lepszego zrozumienia sposobu obsługi żądań w naszej aplikacji, zostaną teraz przedstawione fragmenty kodu, służące do obsługi wyświetlenia listy wszystkich kolokwiów dostępnych w aplikacji. Pierwszym zdarzeniem, które musi nastąpić aby możliwe było wyświetlenie listy kolokwiów jest zgłoszenie takiego właśnie żądania przez klienta. W pasku adresu przeglądarki musi pojawić się adres : Zgodnie z tym co zostało napisane w poprzednich rozdziałach, żądanie takie trafia do front-controllera czyli pliku dispatcher-servlet.xml. Następnie zostaje przechwycone przez interceptor, który sprawdza czy żądanie może zostać obsłużone i jeśli interceptor potwierdzi możliwość wykonania żądania wraca ono do frontcontrollera. Kolejnym krokiem jest określenie kontrolera który będzie w stanie obsłużyć żądanie. Proces ten składa się z 3 kroków. W pierwszym, następuje mapowanie adresu url na odpowiedni kontroler. <bean id="urlmapping" class="org.springframework.web.servlet.handler.simpleurlhandlermapping"> <property name="interceptors"> </property> <property name="mappings"> <props> <prop key="bazakolokwiow.htm">bazakolokwiowcontroller</prop> </props> </property> </bean> W drugim kroku żądanie pozostając w pliku dispatcher-servlet.xml trafia do Bean a o identyfikatorze bazakolokwiowcontroller. <bean id="bazakolokwiowcontroller" class="controllers.bazakolokwiumcontroller">

40 40 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT <property name="uprawnienia" ref="uprawnienia"/> <property name="kolokwiumdao" ref="kolokwiumdao" /> <property name="ngpdao" ref="ngpdao" /> <property name="studentdao" ref="studentdao"/> <property name="methodnameresolver" ref="bazakolokwiowcontrollerresolver"/> </bean> W beanie z listingu odbywa się konfiguracja kontrolera. Odwołanie do klasy z uprawnieniami a także do wszystkich obiektów DAO wykorzystywanych w obrębie kontrolera. Bardzo istotnym polem tego beana jest <property name="methodnameresolver" ref="bazakolokwiowcontrollerresolver"/> Dzięki niemu żądania mogą być obsługiwane przez zdefiniowane w kontrolerze (krok 3). odpowiednie metody <bean id="bazakolokwiowcontrollerresolver" class="org.springframework.web.servlet.mvc.multiaction.propertiesmethodname Resolver"> <property name="mappings"> <props> <prop key="/bazakolokwiow.htm">bazakolokwiow</prop>... </props> </property> </bean> Po tym kroku następuje przejście z front-controlera do bazakolokwiowcontroller, oraz zgodnie z konfiguracją beana methodnameresolver, wywołanie metody bazakolokwiow. public ModelAndView bazakolokwiow(httpservletrequest request,httpservletresponse response) throws PropertyVetoException{ if(!checkprivilleges(request,"bazastudentow")) return new ModelAndView("nonPrivilleges"); return new ModelAndView("bazaKolokwiow","kolokwia",kolokwiumDao.getAllKolokwia()); }

41 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 41 Metoda ta przyjmuje dwa argumenty (żądanie klienta, odpowiedź serwera). W ciele metody znajduje się instrukcja sprawdzająca czy użytkownik posiada uprawnienia do przeglądania tego zasobu i jeśli posiada takie uprawnienia zostaje zwrócony widok o nazwie logicznej bazakolokwiow i zawartości wygenerowanej za pomocą metody getallkolokwia() z kontrolera kolokwiumdao. public interface KolokwiumDao {... public List getallkolokwia();... } W kolokwiumdao znajduje się lista metod których właściwa implementacja dla przypadku naszej aplikacji znajduje się w kontrolerze kolokwiumjdbcdao. public List getallkolokwia() { return getjdbctemplate().query("select * FROM kolokwia,grupy_zajeciowe,skale_ocen,statusy_kolokwium,roki,sale WHERE (kolokwia.id_grupy_zaj=grupy_zajeciowe.id_grupy and kolokwia.status=statusy_kolokwium.status_kol and kolokwia.id_skali=skale_ocen.id_skali and grupy_zajeciowe.id_roku=roki.id_roku and kolokwia.id_sali=sale.id_sali)",new RowMapper(){ public Object maprow(resultset rs, int i) throws SQLException { Kolokwium kolokwium=new Kolokwium(); kolokwium.setid(rs.getint("id_kolokwium")); kolokwium.setnazwakolokwium(rs.getstring("nazwa_kolokwium"));... kolokwium.setgroupactivity(groupactivity); return kolokwium; } } }); Metoda przedstawiona na listingu, pobiera z bazy danych wszystkie informacje na temat kolokwiów, i przygotowuje wyniki do wyświetlenia w widoku bazakolokwiow. Następnie korzystając z tej nazwy logicznej dispatcher-servlet odwołuje się do pliku bazakolokwiow.jsp, który zajmuje się wyświetleniem na ekranie, otrzymanych z bazy danych informacji o kolokwiach. Przedstawiona w tym

42 42 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT punkcie organizacja obsługi żądania może wydawać się skomplikowana, jest to jednak system, który można bardzo łatwo rozwijać i modyfikować, nie zmieniając kodu wcześniej zaimplementowanych elementów.

43 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Nowe typy odpowiedzi Aplikacja posiada również pewną przydatną z punktu widzenia zarówno administratora serwisu jak i prowadzącego zajęcia. Mianowicie w przypadku dodania nowego pytania, gdy w istniejącej puli opcji do wyboru zabraknie określonego typu odpowiedzi użytkownik jest w stanie sam zdefiniować nowy typ odpowiedzi. Żeby to zrobić musi wykonać kilka czynności prowadzących w efekcie końcowym do wygenerowania nowego typu odpowiedzi. Należy zacząć od lekkiej modyfikacji bazy danych, przykładowo chcemy dodać nowy typ odpowiedzi, który będzie przyjmował zbiór punktów w postaci (a,b); (c,d) itd. Możemy osiągnąć następującą instrukcją SQL: insert into typy_odp (id_typu,opis_typu_odp) VALUES (10, 'zbior punktów postaci (a,b); (c,d);... '); delete from typy_odp where id=6; ALTER TABLE sceny ADD COLUMN status INT8; ALTER TABLE sceny ADD COLUMN status_pyt INT8; UPDATE sceny SET status=0; Następnie w instrukcji warunkowej switch, w obiekcie kolokwiumcontroler.java należy zaimplementować kolejny numer instrukcji case wraz z opisem tekstowym jak w przykładzie poniżej: case 10: form.append("odpowiedź proszę podać w formie (a,b);(c,d);(e,f);... ;(x,z) <br><br><br> <input type=\"text\" name=\""+par+"\" value=\""+tresc+"\" />"); break; w metodzie form.append() trzeba wpisać to co ma zostać wyświetlone na ekranie studenta podczas pisania kolokwium. Kolejnym koniecznym krokiem do wykonania jest dodanie w obiekcie Odpowiedz.java w metodzie setwysw() następującą instrukcje: case N: // gdzie N jest kolejną cyfrą this.wysw=this.tresc; break;

44 44 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT która umożliwia wyświetlenie pożądanej odpowiedzi. Analogicznie postępujemy z plikiem OdpowiedzStudenta.java, gdzie należy dokonać identycznej modyfikacji kodowej w metodzie o identycznej nazwie. W obiekcie PoprawOdpowiedz.java w metodzie popraw() dodajemy następującą instrukcje: case N: // gdzie N jest kolejną cyfrą end=this.poprawtyp(this.odpowiedzstudenta.gettresc(),this.odpowiedzstudenta.getodpowiedz().gettresc()); break; gdzie poprawtyp() to nazwa metody sprawdzającej poprawności odpowiedzi studenta, która zwraca 1 w przypadku odpowiedzi poprawnej bądź 0 w przypadku odpowiedzi błędnej. Ostatnim krokiem jest dodanie instrukcji case z odpowiednio następnym numerem instrukcji case w metodzie zapiszodpowiedzi() jak w przykładzie poniżej: case 10: tresc=request.getparameter("pyt"+pytanie.getnrpytgrup()+"odp"+odpowiedz.get Nr_pyt_gr()).trim(); odpowiedzstudenta.setgrupakol(grupakol); odpowiedzstudenta.setindex(index); odpowiedzstudenta.setkod(kod); odpowiedzstudenta.setkolokwium(grupakol.getkolokwium()); odpowiedzstudenta.setodpowiedz(odpowiedz); odpowiedzstudenta.settresc(tresc); odpowiedzstudenta.setjednostka(""); poprawodpowiedz=new PoprawOdpowiedz(); poprawodpowiedz.setodpowiedzstudenta(odpowiedzstudenta); pun=poprawodpowiedz.popraw(); odpowiedzstudenta.setpunkty(pun); sumapunkt=sumapunkt+pun; kolokwiumdao.upadteodpowiedzstudenta(odpowiedzstudenta); break; powyższą modyfikację należy zaimplementować w obiekcie WriteColokwiumController.java.

45 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 45 5 Funkcjonalny opis aplikacji Po uruchomieniu aplikacji TMTTesty, użytkownik zostanie powitany ekranem logowania. Jeśli użytkownik nie posiada jeszcze swojego loginu i hasła, może się zarejestrować. Po zalogowaniu użytkownik zostanie przekierowany na stronę główną.

46 46 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Nawigacja w aplikacji została zorganizowana dwupoziomowo. Główne menu zostało na rysunku oznaczone czerwonym, a menu pomocnicze zielonym obramowaniem. Opcje wyświetlane w menu pomocniczym zależą od opcji wybranej w menu głównym.

47 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Zakładka kolokwia Z poziomu zakładki Kolokwia, użytkownik ma możliwość: Wyświetlenia listy wszystkich kolokwiów Wyświetlenia listy skali ocen Dodania nowego kolokwium Wyświetlanie listy wszystkich kolokwiów Na rysunku została przedstawiona lista prezentująca informacje na temat wszystkich kolokwiów dostępnych w bazie danych. Poszczególne kolokwia różnią się statusami (dla łatwiejszego rozróżnienia pole statusu wypełniane jest różnymi kolorami). Użytkownik może przeglądać a także dodawać lub usuwać pytania które mają zostać użyte w kolokwium. W trakcie przeprowadzania kolokwium, prowadzący zajęcia może otworzyć Panel Kolokwium w którym widnieją informacje na jego temat, łącznie z informacjami o studentach którzy piszą kolokwium. System wyświetla odpowiedzi studentów, a także umożliwia indywidualne zakończenie kolokwium wybranego studenta, na przykład w momencie przyłapania go na korzystaniu z niedozwolonych pomocy. Po zakończeniu kolokwium, z panelu możliwe jest wygenerowanie Raportu, który bardzo łatwo przenieść do arkusza kalkulacyjnego jak MS Excel.

48 48 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Skala ocen Na rysunku została przedstawiona lista skal ocen z wartościami w procentach określającymi ocenę studenta z kolokwium na podstawie uzyskanych punktów. Przykładowo : Jeśli suma punktów na kolokwium wynosi 100 a student uzyskał 73 punkty to według skali przedstawionej na rysunku uzyska ocenę 4.0. Istniejącą skalę użytkownik może edytować poprzez kliknięcie na symbol ołówka, a w razie potrzeby ma możliwość stworzenia nowej skali ocen Dodawanie nowych wzorów Istnieje także możliwość dodania nowych wzorów, które później znajdują zastosowanie przy dodawaniu ich do nowo tworzony lub też edytowanych pytań. Aby tego dokonać należy skopiować nowe wzory w postaci plików.jpg,.jpeg,.jpg lub.png do następującej lokacji na dysku twardym: C:/GS_TMT_module/apache-tomcat /webapps/TMTTesty/themes/wzory Utworzenie nowego kolokwium Proces tworzenia nowego kolokwium składa się z 2 etapów. Pierwszym jest utworzenie nowego pustego kolokwium,dla którego określamy nazwę, czas trwania, liczbę grup,liczbę pytań dla grup. Wybieramy wcześniej zdefiniowaną skalę ocen oraz salę, w której będzie się odbywało kolokwium.

49 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 49 Po wypełnieniu niezbędnych pól formularza z rysunku oraz kliknięciu przycisku Dodaj, kolokwium otrzymuje status Brak wszystkich pytań oznaczony na liście kolokwiów kolorem błękitnym. Drugim etapem tworzenia kolokwium jest przyznanie pytań dla poszczególnych grup. W tym celu użytkownik musi kliknąć w przycisk Przeglądaj na liście kolokwiów.

50 50 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Po kliknięciu tego przycisku użytkownik otrzymuje szczegółowe informacje o kolokwium wraz z listą grup. Klikając przycisk Przeglądnij grupę, użytkownik będzie w stanie dodać dla grupy,wcześniej utworzone pytania. Po dodaniu wszystkich pytań kolokwium uzyska status Gotowe do przeprowadzenia. Przyjrzyjmy się nieco dokładniej jak krok po kroku możemy stworzyć kolokwium za pomocą omawianego systemu. Po utworzeniu nowego kolokwium oraz ustaleniu wszystkich potrzebnych do tego celu danych możemy przystąpić do dodania pytań do danego kolokwium. Koniecznie należy pamiętać o tym, że nie możemy zarówno edytować jak i usunąć pytania które już jest powiązane z kolokwium przeprowadzanym bądź oczekującym na przeprowadzenie. Można to zaobserwować poprzez pojawienie się komunikatu w miejscu gdzie normalnie jest opcja usunięcia pytania oraz znika ikona ołówka, która zawiera przekserowanie do opcji edycji pytania.

51 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 51 Po dodaniu pytań oraz upewnieniu się, że wszystkie podane wcześniej dane są poprawne aplikacja jest gotowa do przeprowadzenia kolokwium, co sygnalizuje przez podświetlenie pola na zielona oraz stosowny komunikat.

52 52 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Wówczas po naciśnięciu przycisku Start kolokwium i odpowiedzeniu twierdząco na pytanie czy na pewno chcemy to zrobić, aplikacja startuje kolokwium. Studentów zalogowanych na dane kolokwium widzimy poniżej informacji o kolokwium. Wykładowca ma przez cały czas trwania kolokwium opcje jego zakończenia. Wykładowca posiada również opcje podglądu postępów na bieżąco każdego studenta z osobna, jeśli tylko student korzysta z opcji Zapisz odpowiedzi. Wykładowca jest w stanie także zakończyć kolokwium indywidualnego studenta podczas przeglądania profilu jego kolokwia.

53 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 53 Istnieje opcja dodania własnych uwag oraz notatek bieżących na temat konkretnego studenta, które to są cyklicznie zapisywane w profilu kolokwium studenta indywidualnego.

54 54 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Po pomyślnym zakończeniu kolokwium prowadzący posiada opcje podglądu kilku newralgicznych dla niego informacji o każdym konkretnym studencie w zakładce kolokwiów takich jak: Nr indeksu, Grupa, Imię oraz Nazwisko studenta, Status (Pisze, zakończył etc.), Punkty, Proponowana przez aplikacje ocena, Czy jeszcze pisze.

55 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT 55 Po dokonaniu oceny wszystkich studentów uczestniczących w kolokwium prowadzący posiada opcje wygenerowania raportu z przeprowadzonego kolokwium. Istnieje również opcja wyeksportowania tegoż raportu do arkusza kalkulacyjnego np. MS Exel, można tego dokonać zaznaczając tabele wygenerowaną przez aplikacje oraz skopiowanie jej i późniejsze wklejenie do arkusza. Wykładowca jest w stanie wystawić ocenę odmienną od proponowanej przez aplikacje wybierając odpowiednia opcję z opadającego menu w polu ocena.

56 56 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Po zakończeniu kolokwium prowadzący ma opcje ponownego wglądu oraz ponownego utworzenia raportu w przypadku zgubienia kopii zapasowej, może także całkiem usunąć przeprowadzone kolokwium z bazy danych. Wykładowca musi posiada również opcje usunięcia pytania nawet podczas przeprowadzenia danego kolokwium jeżeli uzna je za źle sformułowane bądź zawierające jakieś błędy. Wówczas na ekranie pojawi się następujący komunikat.

57 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Zakładka Pytania Z poziomu zakładki Pytania, użytkownik ma możliwość: Wyświetlenia listy wszystkich pytań Dodania nowego pytania Wyświetlanie listy pytań Na rysunku została przedstawiona lista przykładowych pytań utworzonych na potrzeby kolokwium. W celu ułatwienia nawigacji, przy każdym pytaniu są strzałki nawigacyjne (góra, dół) których kliknięcie powoduje odpowiednio rozwiniecie lub zwinięcie szczegółów na temat wybranego pytania. Istnieje również opcja bezpośredniego podglądu odpowiedzi do danego pytania klikając na ikonę żaróweczki. Klikając na ikonę ołówka zostaniemy przeniesieni do ekranu edycji danego pytania Dodanie nowego pytania Dodawanie nowych pytań składa się z kilku etapów. Najpierw użytkownik podaje treść pytania w polu tekstowym, wybiera ilość odpowiedzi dla danego pytania. Następnie wybiera typ odpowiedzi( liczba całkowita, współrzędne punktu, liczba rzeczywista z dokładnością do 4 miejsc po przecinku itp.) Ostatnim etapem jest

58 58 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT wpisanie poprawnej odpowiedzi i wybranie z listy rozwijanej wartości punktowej przyznawanej studentowi za poprawne rozwiązanie.

59 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Zakładka Studenci Z poziomu zakładki Studenci, użytkownik ma możliwość: Wyświetlenia listy roczników (dodanie nowego rocznika), Ustalenia rozkładu zajęć dla danej grupy zajęciowej (wraz z listą studentów tej grupy), Wyświetlenie listy zdefiniowanych sal komputerowych (wraz z listą komputerów w danej sali) Wyświetlanie listy roczników Na rysunku przedstawiono listę roczników wraz z możliwością stworzenia nowego rocznika (kierunek, specjalność), edytowania oraz usuwania wcześniej utworzonych Rozkład zajęć Na rysunku przedstawiono listę grup wraz z możliwością stworzenia nowej grupy, edytowania lub usuwania wcześniej utworzonej, a także określenia listy studentów (Numer albumu, Imię, Nazwisko) w danej grupie Klonowanie sal

60 60 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Wyżej przedstawiono rysunek, który obrazuje opcje klonowanie sali. Można to zrobić w zakładce Studenci, lista sal. Możliwość ta jest bardzo pomocna w momencie przeprowadzania kolokwiów w więcej niż jednej sali o podobnym układzie stanowisk komputerowych, bądź ich liczbie. Wystarczy po sklonowaniu zmienić kilka kluczowych informacji odnośnie nowych stanowisk. Przede wszystkim należy pamiętać o zmianie adresów IP oraz nazwie stanowiska komputerowego.

61 Rozbudowa funkcjonalności systemu nauczająco-testującego do programu TMT Zakładka Plan zajęć Z poziomu zakładki Plan zajęć, użytkownik ma możliwość: Wyświetlenia listy planów nauczania, Wyświetlenie listy celów nauczania, Przejścia do modułu Instrukcje Lista planów nauczania Na rysunku przedstawiono listę planów nauczania czyli informacje o ilości zajęć w semestrze oraz o czasie trwania pojedynczego zajęcia. Istnieje też zdefiniowania nowego planu a także Przeglądania i Generowania planu. Kliknięcie przycisku Przeglądaj spowoduje wyświetlenie szczegółowych informacji na temat wybranego Planu nauczania (rys..), wraz z możliwością edycji poszczególnych zajęć.

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

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008 Adam 1 grudnia 2008 Wstęp Opis Historia Apache kontener serwletów rozwijany w ramach projektu Apache jeden z bardziej popularnych kontenerów Web open source, Apache Software License rozwijany przez ASF

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Bazy danych i strony WWW

Bazy danych i strony WWW Bazy danych i strony WWW Obsługa baz danych poprzez strony WWW Niezbędne narzędzia: serwer baz danych np. MySQL serwer stron WWW np. Apache przeglądarka stron WWW interpretująca język HTML język skryptowy

Bardziej szczegółowo

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Web frameworks do budowy aplikacji zgodnych z J2EE

Web frameworks do budowy aplikacji zgodnych z J2EE Web frameworks do budowy aplikacji zgodnych z J2EE Jacek Panachida promotor: dr Dariusz Król Przypomnienie Celem pracy jest porównanie wybranych szkieletów programistycznych o otwartym kodzie źródłowym

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja

Bardziej szczegółowo

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Serwery aplikacji. dr Radosław Matusik. radmat

Serwery aplikacji. dr Radosław Matusik.   radmat www.math.uni.lodz.pl/ radmat EL - Expression Language Załóżmy, że mamy klasę Pracownik, której atrybutem jest PESEL. Załóżmy dalej, że w atrybucie sesji zalogowany przechowujemy obiekt aktualnie zalogowanego

Bardziej szczegółowo

Aplikacje Internetowe, Servlety, JSP i JDBC

Aplikacje Internetowe, Servlety, JSP i JDBC Aplikacje Internetowe, Servlety, JSP i JDBC Opis Java 2 Enterprise Edition (JEE) jest potężną platformą do tworzenia aplikacji webowych. PLatforma JEE oferuje wszystkie zalety tworzenia w Javie plus wszechstronny

Bardziej szczegółowo

Szczegółowy opis zamówienia:

Szczegółowy opis zamówienia: Szczegółowy opis zamówienia: Rok 2016 budowa stron w html5 (8h v + 4h ćw) 8 szt. html5 - zaawans. (7h v + 5h ćw) 8 szt. programowania w java script (9h v + 7h ćw) 8 szt. java script zaawans (8h v + 4h

Bardziej szczegółowo

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

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2 Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 1 Wprowadzenie Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 O Sobie Od 2014

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Wzorce prezentacji internetowych

Wzorce prezentacji internetowych Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.

Bardziej szczegółowo

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

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf Materiały poprawione Rozwiązanie zadania w NetBeans IDE 7.4: Jarosław Ksybek, Adam Miazio Celem ćwiczenia jest przygotowanie prostej aplikacji

Bardziej szczegółowo

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje internetowe i rozproszone - laboratorium Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,

Bardziej szczegółowo

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja ZPKSoft WDoradca 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja 1. Wstęp ZPKSoft WDoradca jest technologią dostępu przeglądarkowego do zasobów systemu ZPKSoft Doradca.

Bardziej szczegółowo

SZKOLENIE TWORZENIE SYSTEMÓW

SZKOLENIE TWORZENIE SYSTEMÓW SZKOLENIE TWORZENIE SYSTEMÓW INFORMATYCZNYCH Z UŻYCIEM GROOVY I GRAILS KOD: JGR Strona 1 1 Opis Platforma Java EE to zbiór zaawansowanych narzędzi umożliwiających tworzenie systemów korporacyjnych. Jest

Bardziej szczegółowo

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

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż. Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Wstęp Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Założenia do wykładu Zasady zaliczeń Ramowy program wykładu

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów A Zasady współpracy Ocena rozwiązań 3.0 25 40 punktów 3.5 41 65 punktów 4.0 66 80 punktów 4.5 81 100 punktów 5.0 101 130 punktów Warunki zaliczenia przedmiotu Student uzyska ocenę zaliczającą (3.0) o ile

Bardziej szczegółowo

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller Dokumentacja systemu NTP rekrut Autor: Sławomir Miller 1 Spis treści: 1. Wstęp 1.1 Wprowadzenie 1.2 Zakres dokumentu 2. Instalacja 2.1 Wymagania systemowe 2.2 Początek 2.3 Prawa dostępu 2.4 Etapy instalacji

Bardziej szczegółowo

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

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,

Bardziej szczegółowo

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa prezentacji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Definicja warstwy prezentacji - pięciowarstwowy model logicznego rozdzielania zadań 2. Podstawowe przypadki - analiza

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

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

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Specyfikacja implementacyjna aplikacji serwerowej

Specyfikacja implementacyjna aplikacji serwerowej Projekt: System wspomagania osób studiujących Strona: 1 / 7 Opracowali: Zatwierdzili: Spis treści Damian Głuchowski Krzysztof Krajewski Krzysztof Krajewski dr inż. Sławomir Skoneczny Spis treści... 1 1.

Bardziej szczegółowo

Spring Web MVC, Spring DI

Spring Web MVC, Spring DI Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 5 Spring Web MVC, Spring DI Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 Technologie Technologie / narzędzia będące

Bardziej szczegółowo

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i budowa systemu zarządzania treścią opartego na własnej bibliotece MVC Autor: Kamil Kowalski W dzisiejszych czasach posiadanie strony internetowej to norma,

Bardziej szczegółowo

Modele danych walidacja widoki zorientowane na model

Modele danych walidacja widoki zorientowane na model Modele danych walidacja widoki zorientowane na model 1. Wprowadzenie Modele danych Modele danych w ASP.NET MVC to klasy znajdujące się w katalogu Models. Ich zadaniem jest mapowanie danych przesyłanych

Bardziej szczegółowo

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

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

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

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny

Bardziej szczegółowo

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

Programowanie w Javie 2. Płock, 26 luty 2014 r. Programowanie w Javie 2 Płock, 26 luty 2014 r. Zaliczenie wykładu i ćwiczeń Zaliczenie ćwiczeń (projekt na zaliczenie, 3 prace domowe) Zaliczenie wykładu (referat na 1h) Ocena ćwiczeń: 70% projekt + 30%

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

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

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Programowanie komponentowe Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Struktura wykładu 1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

Bardziej szczegółowo

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. Gdy już posiadamy serwer i zainstalowany na nim system Windows XP, 7 lub 8 postawienie na nim serwera stron WWW jest bardzo proste. Wystarczy

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2017 Globalna sieć Internet Koncepcja sieci globalnej Usługi w sieci Internet

Bardziej szczegółowo

EXSO-CORE - specyfikacja

EXSO-CORE - specyfikacja EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.

Bardziej szczegółowo

Enterprise JavaBeans (EJB)

Enterprise JavaBeans (EJB) Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z sesyjnymi komponentami Enterprise JavaBeans. Zilustrowane będą różnice między komponentami stanowymi i bezstanowymi. Pokazane będzie

Bardziej szczegółowo

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

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz.pl Serwer aplikacji Serwer aplikacji to: Serwer wchodzący w skład sieci komputerowej, przeznaczony

Bardziej szczegółowo

Forum Client - Spring in Swing

Forum Client - Spring in Swing Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy

Bardziej szczegółowo

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ Systemy baz danych 1. 2 Wstęp do baz danych 2. 2 Relacyjny model baz danych. 3. 2 Normalizacja baz danych. 4. 2 Cechy

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

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

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Programowanie Obiektowe GUI

Programowanie Obiektowe GUI Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu

Bardziej szczegółowo

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

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię usług sieciowych (ang. Web Services).

Bardziej szczegółowo

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Statyczne strony HTML Wczytanie statycznej strony HTML sprowadza się do odebrania żądania przez serwer, odnalezienia właściwego pliku

Bardziej szczegółowo

Spring framework. Paweł Kędziora. Marek Lewandowski

Spring framework. Paweł Kędziora. Marek Lewandowski Spring framework Paweł Kędziora Marek Lewandowski Plan prezentacji Motywacje Architektura Spring DAO, dostęp do bazy danych, Web MVC Spring 2.0 Podsumowanie Spring framework 1 Plan prezentacji Motywacje

Bardziej szczegółowo

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http. T: Konfiguracja usługi HTTP w systemie Windows. Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http. HTTP (ang. Hypertext Transfer Protocol) protokół transferu plików

Bardziej szczegółowo

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 011/01 Nr programu: 31[01]/T,SP/MENIS/004.06.14 Okres kształcenia: łącznie ok. 180 godz. lekcyjne Wojciech Borzyszkowski Zenon Kreft Moduł Bok wprowadzający Podstawy

Bardziej szczegółowo

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

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013 e-biznes Wykład dla studentów Informatyki Stosowanej UJ 2012/2013 Michał Cieśla pok. 440a, email: michal.ciesla@uj.edu.pl konsultacje: środy 10-12 http://users.uj.edu.pl/~ciesla/ 1 Literatura B. Burke,

Bardziej szczegółowo

Programowanie Komponentowe WebAPI

Programowanie Komponentowe WebAPI Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,

Bardziej szczegółowo

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida Web frameworks do budowy aplikacji zgodnych z J2EE Jacek Panachida Cel pracy Analiza wybranych ram projektowych dostępnych dla platformy Java Warunki selekcji napisany z wykorzystaniem języka Java oraz

Bardziej szczegółowo

World Wide Web? rkijanka

World Wide Web? rkijanka World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest

Bardziej szczegółowo

JAX-RS czyli REST w Javie. Adam Kędziora

JAX-RS czyli REST w Javie. Adam Kędziora JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL

Bardziej szczegółowo

Języki programowania wysokiego poziomu. Ćwiczenia

Języki programowania wysokiego poziomu. Ćwiczenia Języki programowania wysokiego poziomu Ćwiczenia Języki programowania Ćwiczenia Strukturalny HTML Arkusze CSS Formularze HTML i PHP Baza danych MySQL Forum internetowe Strukturalny HTML Zadania Dokument

Bardziej szczegółowo

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

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z

Bardziej szczegółowo

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer; 14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy

Bardziej szczegółowo

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

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

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 Zaawansowane aplikacje internetowe EJB 2 Celem tego laboratorium jest pokazanie, w jaki sposób aplikacje stworzone w różnych technologiach mogą korzystać z funkcjonalności udostępnianej przez komponenty

Bardziej szczegółowo

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

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity

Bardziej szczegółowo

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. Autor: Larry Ullman Poznaj zasady wirtualnego handlu i zarabiaj prawdziwe pieniądze Jak stworzyć doskonałą witrynę sklepu internetowego? Jak

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I WYMAGANIA EDUKACYJNE Witryny i Aplikacje Internetowe klasa I Dopuszczający definiuje pojęcia: witryna, portal, wortal, struktura witryny internetowej; opisuje rodzaje grafiki statycznej wymienia i charakteryzuje

Bardziej szczegółowo

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

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Przykłady na podstawie zadań lab. z przedmiotu Technologie internetowe

Bardziej szczegółowo

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

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet JSP ciąg dalszy Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić JSP tags, Używanie tagów, Custom tags, JSP objests, Obiekty

Bardziej szczegółowo

prepared by: Programowanie WWW Servlety

prepared by: Programowanie WWW Servlety Programowanie WWW Servlety Przypomnienie problemu Aplikacja do liczenia kredytów Klasa Kredyt Formatka do wprowadzania danych (czysty HTML) Skrypt liczący ratę (JSP wykorzystujące klasę Kredyt) Klasa Kredyt

Bardziej szczegółowo

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE Cena szkolenia Cena szkolenia wynosi 100 zł za 60 min. Ilość godzin szkolenia jest zależna od postępów w nauce uczestnika kursu oraz ilości czasu, którą będzie

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka 1 Omówienie wzorców wykorzystywanych w Prism 5.0 Dominika Różycka Czym jest wzorzec projektowy? 2 3 Wzorzec projektowy 1. Uniwersalne i sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko

Bardziej szczegółowo

Aplikacje WWW Wprowadzenie

Aplikacje WWW Wprowadzenie Aplikacje WWW Wprowadzenie Beata Pańczyk na podstawie http://www.e-informatyka.edu.pl/ http://wazniak.mimuw.edu.pl/index.php?title=aplikacje_www Plan wykładu Składniki architektury WWW: klient HTTP, serwer

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,

Bardziej szczegółowo

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 013/01 Nr programu: 31[01]/T,SP/MENIS/00.06.1 Okres kształcenia: łącznie ok. 170 godz. lekcyjne Moduł Bok wprowadzający 1. Zapoznanie z programem nauczania i

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

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

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne) 1 90 min. Aplikacje WWW Harmonogram ń, semestr zimowy -2017 (studia stacjonarne) 6 października Wprowadzenie do aplikacji WWW Rys historyczny Składniki architektury WWW o klient HTTP o serwer HTTP o protokół

Bardziej szczegółowo

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Plan. Raport. Tworzenie raportu z kreatora (1/3) 3 Budowa prostych raportów opartych o bazę danych Plan Co to jest raport? Tworzenie za pomocą kreatora Tworzenie opartego o polecenie SQL Edycja atrybutów Atrybuty regionu Atrybuty Atrybuty kolumn 2 Raport

Bardziej szczegółowo

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne

Bardziej szczegółowo

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy Dokumentacja techniczna Młodzieżowe Pośrednictwo Pracy Spis Treści 1. Widok ogólny architektury MPP... 3 2. Warstwy systemu... 5 3. Struktura systemu/komponentów... 7 3.1 Aplikacje... 7 3.2 Biblioteki...

Bardziej szczegółowo

Instrukcja laboratoryjna

Instrukcja laboratoryjna Zaawansowane techniki obiektowe 2016/17 Instrukcja laboratoryjna Testy funkcjonalne Prowadzący: Tomasz Goluch Wersja: 1.0 Testowanie aplikacji z bazą danych Większość współczesnych aplikacji korzysta z

Bardziej szczegółowo

Dokumentacja aplikacji Szachy online

Dokumentacja aplikacji Szachy online Projekt z przedmiotu Technologie Internetowe Autorzy: Jakub Białas i Jarosław Tyma grupa II, Automatyka i Robotyka sem. V, Politechnika Śląska Przedmiot projektu: Aplikacja internetowa w języku Java Dokumentacja

Bardziej szczegółowo

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152 Wstęp...xv 1 Rozpoczynamy...1 Co to jest ASP.NET?...3 W jaki sposób ASP.NET pasuje do.net Framework...4 Co to jest.net Framework?...4 Czym są Active Server Pages (ASP)?...5 Ustawienia dla ASP.NET...7 Systemy

Bardziej szczegółowo

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie Zofia Kruczkiewicz 1. Jakie warstwy zawiera aplikacja internetowa? 2. Wymień

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja elektronicznego dziennika ocen ucznia Autor: Grzegorz Dudek wykonanego w technologii ASP.NET We współczesnym modelu edukacji, coraz powszechniejsze

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework mgr inż. Łukasz Stefanowicz dr inż.

Bardziej szczegółowo

OpenLaszlo. OpenLaszlo

OpenLaszlo. OpenLaszlo OpenLaszlo Spis Treści 1 OpenLaszlo Co to jest? Historia Idea Architektura Jako Flash lub DHTML Jako servlet lub SOLO Jak to działa? Język LZX Struktura programu Skrypty Obiekty i klasy Atrybuty i metody

Bardziej szczegółowo