Czym są serwlety Java? Serwlety Java. Zalety serwletów Java (w porównaniu z CGI)

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

Download "Czym są serwlety Java? Serwlety Java. Zalety serwletów Java (w porównaniu z CGI)"

Transkrypt

1 Czym są serwlety Java? 209 Serwlety Java Klasy Java uruchamiane po stronie serwera Służą do tworzenia aplikacji pracujących w trybie żądanie/odpowiedź W praktyce wykorzystywane w aplikacjach rozszerzających funkcjonalność serwerów HTTP (aplikacji webowych, aplikacji J2EE) Stanowiły odpowiedź na wady skryptów CGI Zastosowania: Dynamiczna generacja dokumentów w odpowiedzi na żądanie z przeglądarki Wstępne przetwarzanie żądań i przekierowywanie ich do odpowiednich stron-widoków (typowo JSP) funkcja kontrolera w modelu MVC (model-view-controller) Zalety serwletów Java (w porównaniu z CGI) Wydajność w porównaniu z CGI, gdzie obsługa każdego żądania wymaga utworzenia nowego procesu w systemie operacyjnym, serwlety Java korzystają z wielowątkowości i pozostają aktywne w pamięci Wygoda możliwość zastosowania umiejętności programowania w języku Java do konstrukcji aplikacji internetowych Funkcjonalność ogromne bogactwo bibliotek i rozwiązań dostępnych dla języka Java może być wykorzystane podczas tworzenia serwletów Java Przenaszalność kod i struktura serwletów Java są niezależne od platformy systemowej i mogą być uruchamiane w na każdym serwerze Java 210 Tworzenie serwletów Java Serwlet jest programem Java zapisanym w postaci klasy dziedziczonej z klasy javax.servlet.http.httpservlet Programista dostarcza własne implementacje metod: public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException public void init(servletconfig config) throws ServletException public void destroy() 211

2 Cykl życia serwletu (1/2) 212 Cykl życia serwletu (2/2) 213 serwer Java serwer Java serwlet serwer Java serwlet obsługa żądań (doget,dopost) serwlet ładowanie (init) przeglądarka przeglądarka przeglądarka usuwanie (destroy) Cykl życia serwletu jest kontrolowany przez kontener, w którym serwlet został osadzony (deployed) W momencie gdy przychodzi żądanie adresowane do serwletu, kontener wykonuje następujące akcje: Jeśli instancja serwletu jeszcze nie istnieje: Ładuje klasę serwletu do pamięci Tworzy instancje klasy serwletu Wywołuje metodę init() serwletu Wywołuje metodę service() przekazując jej obiekty HttpServletRequest i HttpServletResponse, reprezentujące żądanie i odpowiedź Odziedziczona implementacja metody service() wywołuje odpowiednie metody pomocnicze zależnie od typu żądania: doget(), dopost(),... Serwlet po zakończeniu obsługi żądania pozostaje aktywny w kontenerze Kolejne żądania realizowane są przez uruchomienie metody service() w osobnych wątkach Gdy kontener musi usunąć serwlet, najpierw wywołuje jego metodę destroy() Przykład prostego serwletu 214 Interfejs HttpServletRequest 215 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<h1>moj serwlet!</h1>"); Obiekt out reprezentuje wyjście na przeglądarkę Wysłanie kodu HTML na ekran przeglądarki PrintWriter HttpServlet HttpServletRequest, HttpServletResponse Typ programu: serwlet Będzie generowany kod HTML Klasa HttpServletRequest umożliwia dostęp do pól w treści żądania otrzymanego od przeglądarki Cookie[] getcookies() String getheader(n) String getmethod() String getremoteuser() HttpSession getsession() String getpathinfo() String getparameter(n) String getremoteaddr() Odczytuje tablicę wszystkich zmiennych Cookies przesłanych przez serwer WWW Odczytuje wartość pola n dostarczonego w nagłówku HTTP Odczytuje nazwę typu żądania przeglądarki: GET, POST, PUT Odczytuje nazwę, pod jaką zalogowany jest użytkownik przeglądarki, która przesłała żądanie Odczytuje lub tworzy obiekt aktualnej sesji Odczytuje pełną ścieżkę użytą przez przeglądarkę w adresie URL Odczytuje wartość przekazanego przez użytkownika parametru wywołania n Odczytuje adres IP przeglądarki

3 Pola w nagłówku żądania HTTP - Przykłady 216 Wykorzystanie HttpServletRequest 217 Accept wykaz formatów danych akceptowanych przez przeglądarkę Accept-Encoding wykaz formatów kompresji danych, akceptowanych przez przeglądarkę Accept-Language kod języka narodowego, w których przeglądarka chce otrzymać odpowiedź User-Agent nazwa programu przeglądarki Referer adres dokumentu, którego link spowodował wysłanie tego żądania Authorization dane autoryzujące użytkownika If-Modified-Since jeżeli dokument nie uległ zmianie od tego czasu, przeglądarka może otrzymać tylko odpowiedź "Not Modified 304" Cookie lista zmiennych Cookies out.println("<table border=1>"); out.println("<tr><td>user-agent</td><td>"+ request.getheader("user-agent")+"</td>"); out.println("<tr><td>accept-language</td><td>"+ request.getheader("accept-language")+"</td>"); out.println("<tr><td>user address</td><td>"+ request.getremoteaddr()+"</td>"); out.println("</table>"); Dostęp do parametrów wywołania serwletu Przeglądarka użytkownika może w URL żądania umieścić parametry wywołania serwletu, np.: 218 Przykład serwletu z parametrem (1/2) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) Programista uzyskuje dostęp do parametrów wywołania przy pomocy obiektu HttpServletRequest: int liczba1, liczba2, wynik; response.setcontenttype("text/html;charset=iso "); PrintWriter out = response.getwriter(); nazwisko = request.getparameter("z"); liczba1 = Integer.parseInt(request.getParameter("x")); liczba2 = Integer.parseInt(request.getParameter("y")); wynik = liczba1*liczba2; out.println("<h1>kalkulator</h1>"); out.println(liczba1+" razy "+liczba2+" równa się "+wynik); Wielkość znaków jest istotna Przykład wywołania kalkulatora: MyServlet?x=2&y=6 Na ekranie przeglądarki zostanie wyświetlony wynik mnożenia.

4 Przykład serwletu z parametrem (2/2) 220 Odbieranie parametrów przekazanych metodami GET/POST 221 Formularz HTML wywołujący serwlet może przekazywać parametry wywołania serwletu przy użyciu jednej z metod: GET: łańcuch nazw i wartości wszystkich parametrów jest dołączany do adresu URL wołanego serwletu POST: łańcuch nazw i wartości wszystkich parametrów jest wysyłany za nagłówkiem HTTP żądania Do wyboru metody służy atrybut METHOD znacznika <FORM> Jeżeli parametry przekazane są metodą GET, to w serwlecie wywoływana jest metoda doget(); jeżeli zastosowano POST, to w serwlecie wywołana będzie metoda dopost() W celu stworzenia serwletu uniwersalnego, należy np. w implementacji metody dopost() umieścić wywołanie doget() Interfejs HttpServletResponse 222 getoutputstream() - przykład użycia 223 Klasa HttpServletResponse umożliwia dostęp do pól nagłówka odpowiedzi wysyłanej do przeglądarki import java.io.*; import javax.servlet.*; import javax.servlet.http.*; void addcookie(c) void addheader(n,v) void senderror(v) void sendredirect(url) void setheader(n,v) PrintWriter getwriter() ServletOutputStream getoutputstream() void flushbuffer() Umieszcza w nagłówku odpowiedzi zmienną Cookie c Umieszcza w nagłówku odpowiedzi nowe pole n o wartości v Wysyła nagłówek z kodem błędu v Wysyła nagłówek przekierowania na adres url Ustawia w nagłówku odpowiedzi pole n na wartość v Pobiera kanał komunikacyjny dla zapisu tekstowego do przeglądarki Pobiera kanał komunikacyjny dla zapisu binarnego do przeglądarki Wymusza wysłanie zawartości bufora wyjściowego do przeglądarki public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) int value; FileInputStream fstream = new FileInputStream("/home/logo.jpg"); response.setcontenttype("image/jpeg"); OutputStream out = response.getoutputstream(); while ((value = fstream.read())!= -1) out.write(value); fstream.close(); Serwlet wysyła do przeglądarki obraz graficzny JPG, odczytany z pliku dyskowego.

5 Kody błędów umieszczane w nagłówku odpowiedzi HTTP 224 Wykorzystanie HttpServletResponse 225 Do ustawiania kodu statusu służy metoda senderror() Kodom statusu HTTP odpowiadają stałe w klasie HttpServletRequest, np.: SC_BAD_REQUEST SC_UNAUTHORIZED (400) Niewłaściwy format żądania (401) Wymagana autoryzacja klienta if (!request.getremoteaddr().equals(" ")) response.senderror(httpservletresponse.sc_forbidden); else out.println("<h1>welcome!</h1>"); SC_FORBIDDEN SC_NOT_FOUND (403) Odmowa dostępu (404) Dokument nie znaleziony SC_GONE SC_SERVICE_UNAVAILABLE SC_NOT_MODIFIED (410) Dokument zmienił adres, a nowa lokalizacja nie jest znana (503) System jest chwilowo przeciążony lub niedostępny (304) Dokument nie uległ modyfikacji od poprzedniego dostępu Problem polskich znaków (1/2) 226 Problem polskich znaków (2/2) 227 Jeżeli serwlet będzie generować dokumenty zawierające znaki z polskich stron kodowych, to wywołanie metody setcontenttype należy zapisać w następujący sposób: response.setcontenttype("text/html;charset=windows-1250"); Niezależnie od ustawień kodowania znaków narodowych, wartości wprowadzane do pól formularza są reprezentowane przy użyciu kodów ISO W celu poprawnego przetwarzania wartości zawierających polskie znaki, programista musi przekodować otrzymane wartości tekstowe na WINDOWS-1250 lub ISO : lub: response.setcontenttype("text/html;charset=iso "); String par1_pl; par1 = new String( request.getparameter("par1").getbytes("iso8859_1"),"iso8859_2"); lub: String par1_pl; par1 = new String( request.getparameter("par1").getbytes("iso8859_1"),"windows-1250");

6 Definiowanie zmiennych Cookies Klasa javax.servlet.http.cookie służy do definiowania zmiennych Cookies, które będą wysyłane lub odbierane od przeglądarki 228 Wysyłanie zmiennych Cookies przy użyciu HttpServletResponse.addCookie import java.io.*; import javax.servlet.*; import javax.servlet.http.*; addcookie() 229 Cookie(n,s) String getdomain() void setdomain(s) String getmaxage() void setmaxage(v) String getname() void setname(s) String getpath() void setpath(s) String getvalue() void setvalue(s) Tworzy zmienną Cookie o nazwie n i wartości s Odczytuje/ustawia adres domenowy, dla którego przeznaczona jest zmienna Cookie Odczytuje/ustawia czas życia zmiennej Cookie, liczony w sekundach (-1 -> ulotne) Odczytuje/ustawia nazwę zmiennej Cookie Odczytuje/ustawia prefiks ścieżki URL na serwerze, dla której przeznaczona jest zmienna Cookie Odczytuje/ustawia wartość zmiennej Cookie public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html; charset=iso "); PrintWriter out = response.getwriter(); Cookie mycookie = new Cookie("cookie1","James Bond"); mycookie.setmaxage(24*60*60); response.addcookie(mycookie); out.println("<h1>wysłano Cookie</h1>"); Odczytywanie zmiennych Cookies przy użyciu HttpServletRequest.getCookies getcookies() 230 Współdzielenie zmiennych globalnych przez wątki jednego serwletu (1/2) 231 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html; charset=iso "); PrintWriter out = response.getwriter(); out.println("<h1>odebrane Cookies</h1>"); Cookie[] allcookies = request.getcookies(); for (int i=0; i<allcookies.length; i++) out.println(allcookies[i].getname()+": "+ allcookies[i].getvalue()+"<br>"); public class MyServlet extends HttpServlet { String myglobal = null; public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html; charset=iso "); PrintWriter out = response.getwriter(); if (myglobal==null) { out.println("ustawiam myglobal"); myglobal = "xyz"; else { out.println("myglobal był już ustawiony na:"); out.println(myglobal);

7 Współdzielenie zmiennych globalnych przez wątki jednego serwletu (2/2) 232 Współdzielenie informacji przez komponenty aplikacji webowej 233 Komponenty aplikacji webowej (serwlety, JSP) mogą współdzielić informacje (obiekty) poprzez atrybuty czterech tzw. obiektów zasięgu (scope objects) Obiekty zasięgu: Web context (obiekt klasy ServletContext) Zasięg kontekstu aplikacji webowej Session (obiekt klasy HttpSession) Zasięg bieżącej sesji użytkownika Request (obiekt klasy HttpServletRequest) Zasięg obsługi bieżącego żądania Page (obiekt klasy JspContext) Zasięg strony, która utworzyła obiekt Składowanie/odczyt obiektów z obiektów zasięgu odbywa się za pomocą metod setattribute/getattribute z klas obiektów zasięgu Plik konfiguracyjny aplikacji webowej 234 Mapowanie serwletów do ścieżek URL 235 Konfiguracja aplikacji webowej jest realizowana poprzez plik web.xml (znajdujący się w podkatalogu WEB-INF drzewa katalogów aplikacji webowej) Przykłady ustawień w web.xml: Mapowanie serwletów do adresów URL Konfiguracja filtrów serwletów Definicje referencji do zasobów (źródeł danych, EJB) Role użytkowników Prawa dostępu do zasobów Czas trwania sesji (w minutach)... Domyślny URL lokalizujący serwlet: Zalecane jest mapowanie serwletu do adresów URL w pliku web.xml poprzez elementy <servlet> i <servlet-mapping> web.xml <web-app...> <servlet> <servlet-name>myservlet</servlet-name> <servlet-class>mypackage.myservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myservlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping>... </web-app> Wywołanie:

8 Adres URL z punktu widzenia serwletu Ogólna postać URL dla żądań HTTP: ]:[port ][request path ]?[query string ] Część request_path jest dalej dekomponowana na: Context path: połączenie / z wirtualnym katalogiem głównym aplikacji webowej (context root) Servlet path: fragment ścieżki stanowiący alias, który wywołał serwlet Path info: część request_path nienależąca ani do Context path ani do Servlet path Przykłady: Wzór URL /cennik/* /*.jsp Serwlet CennikServlet JSPServlet 236 Wywoływanie innych komponentów webowych z poziomu serwletu (1/2) Sposoby wywoływania innych zasobów webowych: Pośrednio Poprzez zaszycie adresu URL zasobu w generowanym dokumencie Bezpośrednio Poprzez włączenie (include) zawartości z innego zasobu Poprzez przekierowanie (forward) żądania do innego zasobu W celu bezpośredniego wywołania innego zasobu konieczne jest uzyskanie obiektu RequestDispatcher dla danego URL, a następnie skorzystanie z jego metody include() lub forward(), przekazując obiekty HttpServletRequest i HttpServletResponse 237 Request path /sklep/cennik/dvd.html /sklep/pomoc/waluty.jsp Servlet path /cennik / pomoc/waluty.jsp Path info /dvd.html null Wywoływanie innych komponentów webowych z poziomu serwletu (2/2) Włączenie zawartości... RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/naglowek.html"); if (dispatcher!= null) dispatcher.include(request,response);... Przekierowanie żądania Serwlet dokonujący przekierowania nie może sam generować zawartości!... RequestDispatcher dispatcher = request.getrequestdispatcher("widok.jsp"); if (dispatcher!= null) dispatcher.forward(request,response);... Obiekt RequestDispatcher można uzyskać zarówno poprzez obiekt żądania jak i kontekst aplikacji webowej (servlet context) W przypadku skorzystania z pośrednictwa request, dopuszczalne są względne URL (bez / ) 238 Interfejs HttpSession Protokół HTTP jest bezstanowy - nie potrafi rozpoznać, że nowe żądanie pochodzi od użytkownika, który już wcześniej przesłał inne żądanie Interfejs javax.servlet.http.httpsession implementuje pojęcie sesji - umożliwia identyfikację użytkownika, który wielokrotnie odwołuje się do serwletu/serwletów Nieużywana sesja wygasa automatycznie Object getattribute(n) void setattribute(n,o) long getcreationtime() String getid() long getlastaccessedtime() void invalidate() Zapamiętuje na czas sesji obiekt pod podaną nazwą / odczytuje obiekt o podanej nazwie Odczytuje czas rozpoczęcia sesji, liczony w ms od Odczytuje jednoznaczny identyfikator sesji Odczytuje czas ostatniej operacji wykonanej w ramach sesji ( ) Zamyka sesję i usuwa wszystkie jej obiekty 239

9 Obsługa sesji przy użyciu HttpSession (1/2) Bieżącą sesję zwraca metoda getsession() obiektu HttpServletRequest Parametr mówi o tym, czy ma być utworzona nowa sesja gdy nie ma bieżącej import java.io.*; import javax.servlet.*; import javax.servlet.http.*; 240 Obsługa sesji przy użyciu HttpSession (2/2) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Sesja2 extends HttpServlet { 241 public class Sesja1 extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<h1>rozpoczęcie sesji</h1>"); HttpSession myses = request.getsession(true); myses.setattribute("username", "James Bond"); public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<h1>stan sesji</h1>"); HttpSession myses = request.getsession(false); out.println((string) myses.getattribute("username")); Śledzenie sesji przez kontener 242 Zapisy do pliku logu serwera 243 W celu związania sesji z użytkownikiem, kontener musi przesyłać identyfikator sesji między klientem i serwerem Podstawowym i domyślnym sposobem przekazywania identyfikatora sesji jest zastosowanie cookie Sposobem wykorzystywanym gdy obsługa cookies może być wyłączona przez użytkownika jest zaszywanie identyfikatora sesji w każdym adresie URL wysyłanym do klienta import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<a href=\""+ response.encodeurl(request.getcontextpath()+"/katalog") +"\">Powrót do katalogu</a>"; Zakodowanie identyfikatora sesji w adresie URL będzie miało miejsce tylko gdy w przeglądarce będą wyłączone cookies! if (request.getparameter("id")==null) { log("błąd parametru wywołania"); out.println("podaj parametr wywołania id"); else out.println("otrzymano:"+request.getparameter("id")); Plik logu serwera... [13/02/ :37:14:849 CET] MyServlet: Błąd parametru wywołania

10 Odczyt parametrów inicjalizacyjnych 244 Filtry serwletów 245 import... public class MyServlet extends HttpServlet { String msg; public void doget(httpservletrequest request, HttpServletResponse response)... out.println(msg); public void init(servletconfig config) { super.init(config); msg = config.getinitparameter("welcome_message"); <web-app...> <servlet> <servlet-name>myservlet</servlet-name> <servlet-class>mypackage.myservlet</servlet-class> <init-param> <param-name>welcome_message</param-name> <param-value>witamy!</param-value> </init-param> </servlet>... </web-app> web.xml Filtr pozwala na przechwycenie i zmodyfikowanie zarówno żądania kierowanego do serwletu jak i odpowiedzi generowanej przez serwlet Filtr może też modyfikować nagłówki żądania i odpowiedzi Filtry służą do: tworzenia spójnego mechanizmu uwierzytelniania śledzenia użytkowników kompresowania danych "w locie" Filtr to klasa implementująca interfejs javax.servlet.filter void init(filterconfig) void dofilter(servletrequest, ServletResponse, FilterChain) void destroy() Konfiguracja: element <filter> i <filter-mapping> w pliku web.xml Można zdefiniować łańcuch filtrów Kolejność ich aplikowania zależna od kolejności mapowania w web.xml Zalety filtrów: Filtr i komponent, do którego jest on aplikowany są od siebie niezależne Ten sam filtr może być stosowany do serwletów, JSP, stron HTML Przykład filtra (1/3) 246 Przykład filtra (2/3) 247 MyFilter.java import javax.servlet.*; import javax.servlet.filter; import java.io.ioexception; public class MyFilter implements Filter { private FilterConfig fc; public void init(filterconfig filterconfig) throws ServletException { fc = filterconfig; public void destroy() { MyServlet.java import... public class MyServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html; charset=windows-1250"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head><title>myservlet</title></head>"); out.println("<body>"); out.println("<p>witaj "+request.getattribute("user")+"!"); out.println("</body></html>"); out.close(); public void dofilter(servletrequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setattribute("user","anonymous"); chain.dofilter(request, response);

11 Przykład filtra (3/3) 248 web.xml <web-app...> <filter> <filter-name>myfilter</filter-name> <filter-class>mypackage.myfilter</filter-class> </filter> <filter-mapping> <filter-name>myfilter</filter-name> <servlet-name>myservlet</servlet-name> </filter-mapping> </web-app> Tworzenie aplikacji JavaServer Pages request response MyFilter Myservlet Czym są aplikacje JavaServer Pages? 250 Architektura JSP 251 Podstawowa wada serwletów Java: brak możliwości oddzielenia kodu w języku Java generującego dynamiczną zawartość dokumentu od części statycznej (HTML) odpowiedzialnej za ogólny wygląd strony Technologia JavaServer Pages (JSP) jest rozszerzeniem architektury serwletów Java Aplikacje JavaServer Pages mają postać dokumentów HTML (XML) zawierających zagnieżdżony kod w języku Java W odpowiedzi na żądanie użytkownika, serwer WWW wykonuje zagnieżdżony kod i zwraca wygenerowany dokument HTML Typowy sposób przetwarzania dokumentów JSP polega na ich translacji do serwletów, które są następnie kompilowane i uruchamiane przez serwer WWW przeglądarka żądanie HTTP generacja + kompilacja dokument JSP serwer WWW serwlet uruchomienie Przy pierwszym żądaniu, na podstawie treści dokumentu JSP generowany jest kod źródłowy równoważnego serwletu. Serwlet ten jest następnie kompilowany i uruchamiany, po czym pozostaje w pamięci operacyjnej na rzecz obsługi ponownych żądań.

12 JSP - Przykład 252 Porównanie równoważnych: serwletu i JSP Serwlet 253 <HTML> <HEAD> <TITLE>JSP demo</title> </HEAD> <BODY> <%@ page language= java %> <%! int result; %> <% result = 2*2; %> <H1> Multiplication result: <%= result %> </H1> </BODY> </HTML> JSP <HTML> <HEAD> <TITLE>JSP demo</title> </HEAD> <BODY> <%@ page language= java %> <%! int result; %> <% result = 2*2; %> <H1> Multiplication result: <%= result %> </H1> </BODY> </HTML> import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { int result; public void doget( HttpServletRequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>jsp demo</title>"); out.println("</head>"); out.println("<body>"); result = 2*2; out.println(" <H1> Multiplication result:"); out.println(result); out.println("</h1>"); out.println("</body>"); out.println("</html>"); Komponenty dokumentu JSP 254 Generacja serwletu (1/2) 255 Dokument JSP: Serwlet Java: <HTML> <HEAD> <TITLE>JSP demo</title> </HEAD> <BODY> <%@ page language= java %> <%! int result; %> <% result = 2*2; %> <H1> Multiplication result: <%= result %> </H1> </BODY> </HTML> Dyrektywy (page - globalne właściwości dokumentu: język, deklaracje import; include; taglib) Deklaracje (globalnych zmiennych i metod) Kod Java (ang. Scriptlets) Wyrażenia (wyświetlane po wyznaczeniu ich wartości) <HTML> <HEAD> <TITLE>JSP demo</title> </HEAD> <BODY> <%@ page language= java %> <%! int result; %> <% result = 2*2; %> <H1> Multiplication result: <%= result %> </H1> </BODY> </HTML> import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet{ int result; public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html><head><title>jsp demo"); out.println("</title></head><body>"); result = 2*2; out.println("<h1> Multiplication result:"); out.println(result); out.println("</h1></body></html>");

13 Dokument JSP: <HTML> <HEAD> <TITLE>JSP demo</title> </HEAD> <BODY> page language= java %> <%! int result; %> <% result = 2*2; %> <H1> Multiplication result: <%= result %> </H1> </BODY> </HTML> Generacja serwletu (2/2) Serwlet Java: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet{ int result; public void doget(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html><head><title>jsp demo"); out.println("</title></head><body>"); result = 2*2; out.println("<h1> Multiplication result:"); out.println(result); out.println("</h1></body></html>"); 256 Obiekty dostępne w dokumentach JSP (1/2) Programista JSP może korzystać z nastepujących obiektów, tworzonych dla niego automatycznie: request (javax.servlet.http.httpservletrequest) Umożliwia dostęp do pól w treści żądania otrzymanego od przeglądarki (jak w metodach doget()/dopost() serwletu) response (javax.servlet.http.httpservletresponse) Umożliwia dostęp do pól nagłówka odpowiedzi przesyłanej do przeglądarki (jak w metodach doget()/dopost() serwletu) page (javax.servlet.jsp.httpjsppage) Reprezentuje obiekt serwletu, który powstał na podstawie tego dokumentu (this) session (javax.servlet.http.httpsession) Reprezentuje obiekt sesji użytkownika (jak getsession() w serwlecie) 257 Obiekty dostępne w dokumentach JSP (2/2) Programista JSP może korzystać z nastepujących obiektów, tworzonych dla niego automatycznie: application (javax.servlet.servletcontext) Reprezentuje obiekt, który jest współdzielony przez wszystkie dokumenty JSP obsługiwane przez tę samą JVM out (javax.servlet.jsp.jspwriter) Reprezentuje kanał wyjściowy dla zapisu do przeglądarki (jak getwriter() w serwlecie) config (javax.servlet.servletconfig) Umożliwia dostęp do parametrów inicjalizacyjnych serwletu (jak w metodzie init() serwletu) 258 Problem polskich znaków Aby aplikacja JSP poprawnie wyświetlała zawarte w niej znaki narodowe, należy zastosować dyrektywę wskazującą zastosowany standard kodowania: <%@ page contenttype="text/html; charset=iso " %> 259

14 Przekazywanie parametrów 260 Przekazywanie parametrów - Przykład 261 Aplikacji JSP mogą być przekazane parametry wejściowe Parametry mogą być umieszczone w adresie URL lub wysyłane przez formularz HTML Implementacja mechanizmu przekazywania parametrów jest taka sama jak w przypadku serwletów: dostęp do wszystkich parametrów wywołania jest możliwy poprzez obiekt request Aby odczytać wartość parametru należy wywołać metodę request.getparameter() <HTML> <HEAD> <TITLE>JSP demo</title> </HEAD> <BODY> <%@ page language= java %> <% int result; int term1, term2; %> <% term1 = Integer.parseInt( request.getparameter( par1 )); term2 = Integer.parseInt( request.getparameter( par2 )); result = term1 * term2; %> <H1> Multiplication result: <%= result %> </H1> </BODY> </HTML> Przekazywanie parametrów do JSP za pomocą formularzy HTML 262 Przykład zintegrowanej aplikacji JSP (1/2) 263 Technologia JSP pozwala na zintegrowanie formularza HTML z programem obsługi tego formularza Jeżeli znacznik <FORM>, definiujący formularz, nie określi wartości atrybutu ACTION, wtedy aplikacją obsługującą formularz będzie ta sama, która ten formularz wyświetliła formularz HTML ACTION serwlet dokument JSP z formularzem ACTION <HTML> <HEAD><TITLE>Kalkulator</TITLE></HEAD> <BODY> <%@ page contenttype="text/html; charset=iso " %> <% int liczba1, liczba2; if (request.getparameter("par1")!=null){ liczba1 = Integer.parseInt(request.getParameter("par1")); liczba2 = Integer.parseInt(request.getParameter("par2")); %> <H1>Wynik mnożenia</h1> <%= liczba1 %> x <%= liczba2 %> = <%= liczba1*liczba2 %> <BR> <% %><BR> <H1>Wprowadź liczby do pomnożenia</h1> <FORM> Liczba1:<INPUT TYPE='text' NAME='par1'><BR> Liczba2:<INPUT TYPE='text' NAME='par2'><BR><BR> <INPUT TYPE='submit' VALUE='Pomnóż'> </FORM> </BODY> </HTML>

15 Przykład zintegrowanej aplikacji JSP (1/2) Wykorzystywanie zewnętrznych klas Java Kod w języku Java zagnieżdżony w dokumencie JSP może osiągać duże rozmiary utrudniając tym samym pielęgnację aplikacji Zaleca się, aby programiści implementowali złożony kod w oddzielnej klasie/klasach Java, do której następnie w prosty sposób odwoływać się może dokument JSP; pozwala to na zmniejszenie rozmiaru dokumentów JSP Obiekty tworzone wewnątrz "<%" i "%>" posiadają zasięg ograniczony do jednego wywołania, natomiast zasięg obiektów tworzonych przy pomocy znacznika <jsp:usebean/> może być jawnie wyspecyfikowany przez programistę Omawiane klasy zewnętrzne są często nazywane JavaBeans Klasy zewnętrzne - przykład (1/2) 266 Klasy zewnętrzne - przykład (2/2) 267 public class TaxCalc { public double gettax(double income) { double tax; if (income < 2450) tax = 0.05 * income; else if (income < 6100) tax = (0.07*(income-2450)+123); else tax = (0.09*(income-6100)+378); return tax; <%@ page import="taxcalc" %> <HEAD> <TITLE>Podatnik JSP</TITLE> </HEAD> <BODY> <% TaxCalc tc = new TaxCalc(); double t, i; i = Double.parseDouble(request.getParameter("income")); t = tc.gettax(i); %> <H1> Podatek od <%= i %> USD wynosi: <%= t %> USD </H1> </BODY>

16 Korzystanie z klas zewnętrznych przy pomocy <jsp< jsp:usebean/> <HEAD> <TITLE>Podatnik JSP</TITLE> </HEAD> <BODY> <jsp:usebean id="tc" class="taxcalc"/> <% double t, i; %> pamiętaj o "/"! i = Double.parseDouble(request.getParameter("income")); t = tc.gettax(i); <H1> Podatek od <%= i %> USD wynosi: <%= t %> USD </H1> </BODY> 268 Zasięg obiektów tworzonych przy pomocy <jsp< jsp:usebean/> Zasięg obiektu utworzonego na podstawie klasy zewnętrznej można określić jawnie za pomocą atrybutu scope znacznika <jsp:usebean/> Dopuszczalne wartości atrybutu scope: page (zasięg ograniczony do bieżącego dokumentu JSP) request (zasięg ograniczony do obsługi bieżącego żądania) session (zasięg ograniczony do całej sesji użytkownika) application (współdzielenie przez wszystkie aplikacje pracujące na tej samej JVM) Korzystanie z obiektów o zasięgu większym niż bieżący dokument pozwala na: oszczędniejsze gospodarowanie zasobami współdzielenie obiektów przez dokumenty obsługujące to samo żądanie 269 Zasięg obiektów - przykład 270 JSP - pozostałe znaczniki standardowe 271 <BODY> <jsp:usebean id="username" class="longclass" scope="session"/> <% username.str = "James Bond"; %> Ustawiono username: <%= username.str %> </BODY> <BODY> <jsp:usebean id="username" class="longclass" scope="session"/> Odczytano username: <%= username.str %> </BODY> <jsp:include/> Umieszcza wewnątrz generowanej odpowiedzi zawartość innego dokumentu, np.: <jsp:include page="/hr/news.jsp" flush="true" /> (flush="true" jest wymagane ze względu na bug) <jsp:forward/> Powoduje natychmiastowe przekierowanie żądania pod inny adres, np.: <jsp:forward page="/hr/newmain.jsp"/> public class LongClass { public String str;

17 Dokumenty JSP XML 272 Przykład dokumentu JSP 273 Tradycyjne strony JSP nie są poprawnymi dokumentami JSP. Standard JSP 1.1 wprowadził składnię kompatybilną z XML. Strona JSP zbudowana zgodnie ze składnią XML nazywana jest dokumentem JSP Każdy dokument JSP posiada znacznik <jsp:root> który identyfikuje stronę jako dokument JSP podaje wersję JSP i podaje przestrzenie nazw dla składni XML Znaczniki dyrektyw, wyrażeń, skryptletów i akcji posiadają swoje odpowiedniki zgodne ze składnią XML third.jspx <?xml version = '1.0' encoding = 'windows-1250'?> <jsp:root xmlns:jsp=" version="1.2"> <jsp:directive.page contenttype="text/html"/> <jsp:usebean id="c" class="ploug.converter" scope="page"/> <jsp:declaration> double priceeur = 10, pricepln = 0; </jsp:declaration> <jsp:scriptlet> pricepln = c.convert(priceeur); </jsp:scriptlet> <jsp:text>kwocie </jsp:text> <jsp:expression>priceeur</jsp:expression> <jsp:text> euro odpowiada </jsp:text> <jsp:expression>pricepln</jsp:expression> <jsp:text> zlotych </jsp:text> </jsp:root> Biblioteki znaczników JSP 274 Wykorzystywanie bibliotek znaczników 275 Standard JSP 1.1 umożliwia pozwala programistom na rozszerzanie zbioru podstawowych znaczników JSP o znaczniki implementujące dodatkowe funkcje przydatne podczas konstrukcji aplikacji Znaczniki definiowane przez programistę są zapisywane w bibliotekach znaczników (Tag Libraries), a następnie wykorzystywane w taki sam sposób, jak znaczniki standardowe W porównaniu z klasami zewnętrznymi, biblioteki znaczników oferują podobną funkcjonalność, lecz są wygodniejsze i prostsze w użyciu Wielu producentów oferuje własne biblioteki znaczników Szczególne znaczenie ma standardowa biblioteka JSTL W celu poinformowania środowiska JSP o chęci wykorzystywania zewnętrznej biblioteki znaczników, należy umieścić wewnątrz dokumentu następującą deklarację: gdzie: uri - <%@ taglib uri="/tlt" prefix="tlt" %> ścieżka dostępu do pliku TLD definiującego bibliotekę znaczników prefix - wybrany przez użytkownika prefiks, który będzie używany w dokumencie do wyróżniania znaczników pochodzących z tej biblioteki

18 JavaServer Pages Standard Tag Library (JSTL) 276 JSP Expression Language (EL) 277 Znaczniki podstawowe (core tags): reprezentują instrukcje warunkowe, iteratory, oraz operacje na URL; znaczniki c:if, c:catch, c:choose, c:foreach, c:when, c:out, c:set, c:remove, itp. Znaczniki XML: umożliwiają pracę z dokumentami XML, parsowanie i transformację dokumentów; znaczniki x:parse, x:choose, x:if, x:otherwise, x:transform, x:param Znaczniki SQL: praca z bazą danych; znaczniki sql:query, sql:update, sql:transaction, sql:setdatasource, sql:driver, sql:param, sql:dateparam Znaczniki i18n: internacjonalizacja i transformacja danych Istotna właściwość JSP 2.0 Język wyrażeń ułatwiający dostęp do danych aplikacji składowanych w komponentach JavaBean Wyrażenia postaci ${expr Mogą występować w statycznym tekście i atrybutach znaczników (odpowiednie konwersje typów zostaną dokonane automatycznie) W kontenerach JSP 1.2 dostępne w połączeniu z JSTL ${100.0 == 100 -> true ${(10*10)ne 100 -> false ${3 div 4 -> 0.75 ${10 mod 4 -> 2 Obiekty predefiniowane JSP EL 278 JSTL Core + EL Przykład 279 pagecontext zawiera servletcontext, session, request, response param, paramvalues, header, headervalues, cookie, initparam ułatwiają dostęp do parametrów, nagłówków, itd. pagescope, requestscope, sessionscope, applicationscope umożliwiają dostęp do zmiennych o danym zasięgu <%@ taglib uri=" prefix="c"%> <%@ page contenttype="text/html;charset=windows-1250"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title>powitanie</title> </head> <body> <c:out value="witaj ${param.nazwisko!"></c:out> <%-- Albo: <c:out value="witaj ${param['nazwisko']!"></c:out> --%> <c:if test="${!empty param.zadania"> <c:out value="masz ${param.zadania zadań do wykonania!"></c:out> </c:if> </body> </html> ${sessionscope.koszyk.liczbapozycji ${param['nazwisko'] ${param.nazwisko ${header["host"]

19 JSTL SQL Tag Library 280 Przykład zastosowania biblioteki JSTL SQL 281 Biblioteka JSTL SQL TagLib dostarcza znaczników służących do interakcji z relacyjną bazą danych źródło danych <sql:setdatasource var="name" scope="sc" datasource="expr"> <sql:setdatasource var="name" url="expr" user="expr" password="expr"> zapytanie <sql:query sql="expr" datasource="expr" var="expr"> <sql:param value="expr"/><sql:dateparam value="expr"/> </sql:query> dostęp do wyniku zapytania: javax.servlet.jsp.jstl.sql.result i własności rows, rowsbyindex, columnnames, rowcount modyfikacje <sql:update sql="expr" datasource="expr" var="expr"/> transakcje <sql:transaction isolation="isolevel">...</sql:transaction> <%@ taglib uri=" prefix="c"%> <%@ taglib uri=" prefix="sql"%> <%@ page contenttype="text/html"%> <html> <body> <sql:setdatasource var="db" driver="oracle.jdbc.driver.oracledriver" datasource="jdbc/oracleds" url="jdbc:oracle:thin:@miner.cs.put.poznan.pl:1521:miner" user="scott" password="tiger" /> <sql:query var="employees">select * from emp</sql:query> <c:foreach var="columnname" items="${employees.columnnames"> <th><c:out value="${columnname"/></th> </c:foreach> <c:foreach var="row" items="${employees.rows"> <tr><c:foreach var="column" items="${row"> <td><c:out value="${column.value"/></td> </c:foreach></tr> </c:foreach> </body> </html> JSP Model Architektura Model-View View-Controller dla internetowych aplikacji w języku Java 1 3 JSP 2 Klasa zewnętrzna (np. JavaBean) 2 1. Przeglądarka wysyła sparametryzowane żądanie uruchomienia aplikacji JSP 2. Aplikacja JSP przetwarza żądanie przy pomocy zewnętrznej klasy Java 3. Aplikacja JSP generuje wynikowy dokument HTML dla przeglądarki

20 Własności JSP Model 1 Aplikacja JSP odpowiada za pobieranie i przetwarzanie żądań użytkowników Istnieją mechanizmy separacji kodu prezentacji danych od kodu przetwarzania danych (klasy zewnętrzne, JavaBeans, Enterprise JavaBeans) Wygodna architektura dla prostych systemów aplikacyjnych Skomplikowane przetwarzanie otrzymywanych żądań wymaga intensywnego wykorzystywania scriptletów 284 Architektura Model-View View-Controller (MVC) Architektura MVC zakłada podział komponentów systemu aplikacyjnego na trzy kategorie: Model (komponenty modelu): komponenty reprezentujące dane, na których operują aplikacje; komponenty modelu oferują także metody dostępu do danych View (komponenty prezentacji): komponenty reprezentujące wizualizację (prezentację) danych dla użytkownika; komponenty prezentacji pobierają dane od komponentów modelu, a następnie wyświetlają je na ekranie użytkownika Controller (komponenty sterujące): komponenty przechwytujące żądania użytkowników i odwzorowujące je w wywołania metod komponentów modelu; następnie komponenty sterujące przekazują sterowanie do komponentów prezentacji 285 JSP Model Własności JSP Model JSP (View) Serwlet (Controller) Klasa zewnętrzna 4 (Model) Realizuje architekturę Model-View-Controller Wykorzystuje zarówno serwlety Java, jak i aplikacje JSP Serwlet Java jest odpowiedzialny za analizę żądania, tworzenie wymaganych obiektów oraz za przekazanie dalszej obsługi żądania do stosownej aplikacji JSP Aplikacja JSP odpowiada wyłącznie za pobieranie danych z obiektów zewnętrznych oraz za ich wizualizację 1. Przeglądarka wysyła sparametryzowane żądanie uruchomienia serwletu 2. Serwlet analizuje żądanie, tworzy wymagane obiekty klas zewnętrznych 3. Serwlet przekazuje sterowanie do odpowiedniej aplikacji JSP 4. Aplikacja JSP przetwarza żądanie przy pomocy zewnętrznej klasy Java 5. Aplikacja JSP generuje wynikowy dokument HTML dla przeglądarki

21 Środowiska realizacji JSP Model Apache Struts bezpłatne środowisko open-source, rozwijane przez Apache Software Foundation; wysoce konfigurowalne, zawierające wiele składników: serwlet Controller, pomocnicze klasy Java, biblioteki znaczników, obsługę wielojęzycznych aplikacji, itd.; odpowiednie dla dużych aplikacji J2EE J2EE BluePrints Web Application Framework (WAF) środowisko obejmujące serwlet Controller, kilka klas Java i znaczników, obsługę wielojęzycznych aplikacji; odpowiedznie dla niewielkich aplikacji J2EE JavaServer Faces (JSF) opracowywana, obszerna architektura obejmująca zbiór interfejsów dla obsługi żądań HTTP, stanowe komponenty wizualne HTML Dostęp do baz danych z aplikacji J2EE Technologie dostępu do baz danych z aplikacji J2EE JDBC Podstawowy interfejs dostępu do baz danych Ręczne kodowanie w JDBC uciążliwe i podatne na błędy SQLJ Naturalne zagnieżdżanie poleceń SQL w kodzie Java Odporna na błędy alternatywa dla bezpośredniego korzystania z JDBC Martwy standard Encyjne EJB Nienaturalne, złożone, dyskusyjna efektywność Trwają prace nad przebudowaną wersją 3.0 specyfikacji Biblioteka znaczników JSTL SQL Wygodna w prostych aplikacjach opartych na JSP Miesza logikę biznesową z logiką prezentacji, narusza model MVC Technologie odwzorowania obiektowo-relacyjnego Efektywnie mapują świat obiektów na świat relacyjnej bazy danych Najczęściej działają w warstwie webowej aplikacji 290 Czym jest JDBC? JDBC jest standardowym interfejsem do współpracy aplikacji Java z relacyjną bazą danych JDBC definiuje standardowe interfejsy interfejsy są implementowane przez sterowniki JDBC standard dopuszcza rozszerzenia producentów Zaprojektowany na podstawie X/Open SQL Call Level Interface (podobny do ODBC) Interfejs dla dynamicznych instrukcji SQL Zgodny ze standardem SQL 92 Opracowany przez Sun Microsystems Powszechnie wspierany przez producentów systemów baz danych i narzędzi programistycznych 291

22 Architektura JDBC 292 Typy sterowników JDBC 293 Menedżer sterowników JDBC JDBC Pure Java driver Warstwa pośrednia Program Java JDBC API JDBC Partial Java driver Biblioteka klienta BD BD BD JDBC-ODBC Bridge driver * Sterownik ODBC Biblioteka klienta * sun.jdbc.odbc.jdbcodbcdriver Typ I Most JDBC-ODBC umożliwia połączenie z każdą bazą danych, dla której istnieje sterownik ODBC Typ II Sterownik napisany częściowo w Javie, wykorzystujący biblioteki klienta bazy danych efektywne rozwiązanie wymaga preinstalowanego oprogramowania klienta bazy danych Typ III Uniwersalny sterownik w czystej Javie, z obsługą specyficznych baz danych w warstwie pośredniej najbardziej elastyczna architektura Typ IV Sterownik w czystej Javie, komunikujący się bezpośrednio z serwerem bazy danych nie wymaga bibliotek klienta bazy danych odpowiedni dla dostępu do bazy danych z apletów JDBC Thin (typ IV) Sterowniki JDBC Oracle oracle.jdbc.oracledriver w 100% napisany w czystej Javie może być pobrany przez sieć wraz z apletem Java JDBC OCI (typ II) wykonuje wywołania OCI do fabrycznego sterownika, preinstalowanego po stronie klienta wykorzystywany wyłącznie w aplikacjach języka Java Server-side internal driver wykorzystywany przez aplikacje Java uruchamiane wewnątrz serwera Oracle (np. Java Stored Procedures) Server-side Thin driver wykorzystywany przez aplikacje Java uruchamiane wewnątrz serwera Oracle do nawiązywania połączeń z innymi serwerami 294 Podstawowe klasy JDBC (pakiet java.sql sql) DriverManager Connection Statement PreparedStatement CollableStatement ResultSet DatabaseMetaData ResultSetMetaData SQLException 295

23 Rejestrowanie sterowników JDBC (1/2) 296 Rejestrowanie sterowników JDBC (2/2) 297 Sterowniki JDBC muszą się rejestrować w menedżerze sterowników (DriverManager) Sterowniki rejestrują się automatycznie podczas ich ładowania (w przypadku większości JVM) try { // Oracle JDBC driver (Thin + OCI) Class.forName("oracle.jdbc.OracleDriver"); // IBM DB2 Universal Database app driver Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); // JDBC-ODBC bridge driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch (ClassNotFoundException e) {... W przypadku niektórych JVM załadowanie klasy nie rejestruje automatycznie sterownika (!) JDK 1.1.x na niektórych platformach (AIX, OS/2) Class.forName("oracle.jdbc.OracleDriver").newInstance(); Maszyny wirtualne Java firmy Microsoft try { DriverManager.registerDriver( new oracle.jdbc.oracledriver()); catch (SQLException e) {... Nawiązywanie połączenia z bazą danych Menedżer sterowników zarządza sterownikami JDBC i służy do otwarcia połączenia z bazą danych Baza danych jest wskazywana przez podanie JDBC URL, identyfikującego sterownik JDBC i bazę danych: jdbc:<subprotocol>:<connectstring> Na podstawie JDBC URL menedżer sterowników (DriverManager) wybiera odpowiedni sterownik JDBC spośród zarejestrowanych sterowników 298 JDBC-ODBC Bridge Oracle OCI Oracle Thin IBM DB2 app IBM DB2 net Formaty JDBC URL jdbc:odbc:<odbc_data_source> jdbc:oracle:oci:@<service_name> jdbc:oracle:thin:@<host>:<port>:<sid> jdbc:db2:<db_name> jdbc:db2://<host>:<port>/<db_name> 299 IBM AS/400 native jdbc:db2:<db_name> IBM AS/400 toolbox jdbc:as400://<system> MySQL jdbc:mysql://<host>:<port>/<db_name>

24 Wyjątek SQLException 300 Polecenia SQL w JDBC 301 Wywołania JDBC mogą generować wyjątek java.sql.sqlexception Metody zawierające wywołania JDBC muszą obsługiwać ten wyjątek lub deklarować możliwość jego generowania Wyjątek SQLException niesie następujące informacje: kod "SQL state" (zgodny ze specyfikacją XOPEN SQL) tekstowy komunikat o błędzie numeryczny kod błędu (specyficzny dla danego DBMS) try { conn = DriverManager.getConnection("jdbc:odbc:Finance", "scott","tiger"); catch (SQLException e) { System.err.println("Error: " + e); String sqlstate = e.getsqlstate(); String message = e.getmessage(); int errorcode = e.geterrorcode();... Polecenie Statement wykonywanie zapytań lub operacji DML/DDL Polecenie PreparedStatement (wywiedzione z Statement) wykonywanie poleceń prekompilowanych możliwość zaszycia zmiennych przydatne gdy to samo polecenie jest wykonywane kilkukrotnie dla różnych wartości Polecenie CallableStatement (wywiedzione z PreparedStatement) wywoływanie procedur i funkcji składowanych w bazie danych zachowana możliwość zaszywania zmiennych Klasa Statement 302 Przetwarzanie zbiorów wynikowych 303 Wykonywanie zapytań (metoda executequery() zwracająca zbiór wynikowy ResultSet) Obiekt ResultSet przechowuje tabelę danych wynikowych zwróconych przez zapytanie SQL Obsługa kursorów kursor startuje od pozycji przed pierwszym rekordem zbioru wynikowego metoda next() przesuwa kursor na następny rekord (zwraca true, gdy znaleziono kolejny rekord) od JDBC 2.0 są przewijalne i modyfikowalne zbiory wynikowe Dane odczytuje się przy pomocy metod getxxx() np. getint(), getstring(), które odwzorowują wyniki w równoważne typy języka Java Dostęp do pól bieżącego rekordu odbywa się przez numer na liście wyrażeń w zapytaniu lub nazwę atrybutu try { Statement stmt = conn.createstatement(); ResultSet rset = stmt.executequery ("SELECT ename, sal FROM emp");... catch (SQLException e) { Wykonywanie poleceń DML i DDL (metoda executeupdate()) try { Statement stmt = conn.createstatement(); stmt.executeupdate ("DELETE FROM emp WHERE empno = 3981"); catch (SQLException e) {

25 Przetwarzanie zbiorów wynikowych - Przykłady 304 import java.sql.*; JDBC kompletny przykład 305 try { ResultSet rset = stmt.executequery( "SELECT ename, sal FROM emp"); while (rset.next()) { String ename = rset.getstring(1); int sal = rset.getint(2); catch (SQLException e) { try { ResultSet rset = stmt.executequery( "SELECT ename, sal FROM emp"); while (rset.next()) { String ename = rset.getstring("ename"); int sal = rset.getint("sal"); catch (SQLException e) { public class MyDemo { public static void main(string[] args) throws ClassNotFoundException, SQLException { Connection conn; Statement stmt; ResultSet rset; DriverManager.registerDriver( new oracle.jdbc.driver.oracledriver()); conn = DriverManager.getConnection( "jdbc:oracle:thin:@srv1:1521:orcl","scott","tiger"); stmt = conn.createstatement(); rset = stmt.executequery("select ename,sal from emp"); while (rset.next()) { System.out.print(rset.getString("ename")+" "); System.out.println(rset.getString("sal")); rset.close(); stmt.close(); conn.close(); Konwersje typów między SQL i Java 306 Klasa PreparedStatement 307 Dla każdego typu SQL istnieje jeden lub więcej typów Java, do których możliwa jest konwersja: CHAR -> String, int, double, float, java.math.bigdecimal,... NUMBER -> int, double, float, java.math.bigdecimal,... DATE -> Date, Time, Timestamp, String... Konwersja z SQL do Java może wiązać się z utratą precyzji Producenci systemów baz danych mogą dostarczać typy Java pozwalające na uniknięcie utraty precyzji przy konwersji z SQL (np. Oracle) Specyficzne typy Java do obsługi typów Oracle SQL: CHAR -> oracle.sql.char NUMBER -> oracle.sql.number DATE -> oracle.sql.date... Do konwersji do typów oracle.sql.* służą odpowiednie metody getxxx() np. getchar() Zalecane, gdy istnieje potrzeba wielokrotnego wykonania tego samego polecenia, lecz z różnymi parametrami: Parametry wstawia się za pomocą znaku? try { Connection conn = DriverManager.getConnection( ); PreparedStatement pstmt = conn.preparestatement("update emp SET sal =?"); catch (SQLException e) {

26 Wiązanie zmiennych i wykonywanie polecenia PreparedStatement 308 Transakcje 309 Przed wywołaniem polecenia PreparedStatement należy związać parametry z konkretnymi wartościami Parametry wiąże się metodami setxxx() klasy PreparedStatement try { PreparedStatement pstmt = conn.preparestatement("update emp SET sal =?"); pstmt.setint(1, 1000); pstmt.executeupdate(); pstmt.setint(1, 1200); pstmt.executeupdate(); catch (SQLException e) { Przetwarzanie transakcyjne zależy od właściwości autocommit obiektu Connection domyślnie true, co oznacza oddzielną transakcję dla każdego polecenia SQL (każda instrukcja jest automatycznie zatwierdzana) do zmiany trybu służy metoda setautocommit() gdy autocommit == false: commit() - zatwierdzenie transakcji rollback() - wycofanie transakcji Connection conn = DriverManager.getConnection( ); conn.setautocommit(false); // zmiana trybu... // polecenia SQL conn.commit(); // zatwierdzenie... // polecenia SQL conn.rollback(); // wycofanie transakcji Źródła danych (DataSources( DataSources) 310 Korzystanie ze źródeł danych Przykład 311 Obiekt DataSource reprezentuje źródło danych (np. DBMS) Od JDBC 2.0 DataSource w zakresie uzyskiwania połączenia z bazą danych jest alternatywą dla DriverManager Źródło DataSource może wspierać: transakcje rozproszone obsługę pul połączeń DataSource może zostać zarejestrowane w JNDI Aplikacja łącząc się z bazą danych: wyszukuje źródło danych w JNDI przez jego logiczną nazwę poprzez obiekt DataSource uzyskuje obiekt Connection Połączenie uzyskane poprzez DataSource może brać udział w transakcjach rozproszonych i/lub funkcjonować w ramach puli połączeń zależnie od właściwości źródła Definicja źródła danych serwer aplikacji tworzy źródło danych i rejestruje je w JNDI w oparciu o zawartość pliku konfiguracyjnego data-sources.xml <data-source class="com.evermind.sql.drivermanagerdatasource" name="oracleds" location="jdbc/oraclecoreds" xa-location="jdbc/xa/oraclexads" ejb-location="jdbc/oracleds" connection-driver="oracle.jdbc.driver.oracledriver" username="scott" password="tiger" url="jdbc:oracle:thin:@localhost:5521:oracle" inactivity-timeout="30" /> Otwarcie połączenia z bazą danych Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/OracleDS"); Connection conn = ds.getconnection(); Przykład dla OC4J

JDBC (Java Database Connectivity vit )

JDBC (Java Database Connectivity vit ) 1 JDBC (Java Database Connectivity) Marek Wojciechowski Czym jest JDBC? 2 JDBC jest standardowym interfejsem do współpracy aplikacji Java z relacyjną bazą danych JDBC definiuje standardowe interfejsy interfejsy

Bardziej szczegółowo

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE 1 Plan wykładu 2 Dostęp do bazy danych Dostęp do baz danych w aplikacjach Java EE JDBC Źródła danych część I: JDBC i źródła danych Dostęp do baz danych z aplikacji Java EE Architektura JDBC Programowane

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

Java Database Connectivity

Java Database Connectivity Java Database Connectivity Celem ćwiczenia jest zbudowanie kilku prostych serwletów z użyciem technologii JDBC. Podczas ćwiczenia zbudowane zostaną serwlety ilustrujące podstawowe techniki łączenia się

Bardziej szczegółowo

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji Wykład prowadzi Mikołaj Morzy CGI i serwlety Plan wykładu Metody konstrukcji logiki prezentacji Programy CGI Serwlety Java implementacja korzystanie z nagłówków obsługa zmiennych Cookies obsługa sesji

Bardziej szczegółowo

Serwlety Java: zagadnienia zaawansowane. Data Sources. Data Sources. Przykład pliku data-sources.xml

Serwlety Java: zagadnienia zaawansowane. Data Sources. Data Sources. Przykład pliku data-sources.xml Serwlety Java: zagadnienia zaawansowane Data Sources Data Sources Przykład pliku data-sources.xml Obiekt Data Source stanowi logiczną definicję bazy danych programista korzysta z obiektu Data Source serwer

Bardziej szczegółowo

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

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages. Elementy JEE 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages. 1 Java Enterprice Edition Java Enterprice Edition (JEE) jest rozszerzeniem Java Standard

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

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

Wykorzystanie aplikacji Java Server Pages w środowisku J2EE

Wykorzystanie aplikacji Java Server Pages w środowisku J2EE 18 Wykorzystanie aplikacji Java Server Pages w środowisku J2EE Mikołaj Morzy Mikolaj.Morzy@cs.put.poznan.pl http://www.cs.put.poznan.pl/mmorzy/ Plan rozdziału 19 Serwlety Java Filtry serwletów Wprowadzenie

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

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium Java Database Connectivity Celem ćwiczenia jest zbudowanie kilku prostych serwletów z użyciem technologii JDBC. Podczas ćwiczenia zbudowane zostaną serwlety ilustrujące podstawowe

Bardziej szczegółowo

Java wybrane technologie spotkanie nr 5. Java Server Pages

Java wybrane technologie spotkanie nr 5. Java Server Pages Java wybrane technologie spotkanie nr 5 Java Server Pages 1 Składnia dowolny HTML (template) 2

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

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

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

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

Java wybrane technologie spotkanie nr 4. Serwlety c.d. Java wybrane technologie spotkanie nr 4 Serwlety c.d. 1 Wprowadzenie Narzucona struktura katalogów aplikacji (większa przenośności) webapps -app1 -app2 -app3 (root) -*.html, *.gif, *.js, *.css (być może

Bardziej szczegółowo

mgr inż. Michał Paluch

mgr inż. Michał Paluch Komunikacja w Internecie Użytkownik klika w odpowiednie łącze. Przeglądarka formatuje żądanie i wysyła Serwer odnajduje zasób, formatuje odpowiedź i przesyła do przeglądarki. Protokół HTTP Zadania klienta

Bardziej szczegółowo

Dostęp do baz danych z aplikacji J2EE

Dostęp do baz danych z aplikacji J2EE 47 Dostęp do baz danych z aplikacji J2EE Marek Wojciechowski Marek.Wojciechowski@cs.put.poznan.pl http://www.cs.put.poznan.pl/mwojciechowski/ Plan rozdziału 48 Źródła danych w JDBC Java Naming and Directory

Bardziej szczegółowo

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Obsługa transakcji rozproszonych w języku j Java Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Plan prezentacji Transakcje i ich własności Proste transakcje w JDBC

Bardziej szczegółowo

Serwlety i JSP na platformie Java EE. Damian Makarow

Serwlety i JSP na platformie Java EE. Damian Makarow Serwlety i JSP na platformie Java EE Damian Makarow Przebieg prezentacji Serwlety JSP Serwlety a aplikacje Java EE Sesje Ciasteczka Cykl życia Znaczniki Scope JSTL Serwlety+JSP Serwlety i JSP na platformie

Bardziej szczegółowo

pawel.rajba@gmail.com, http://kursy24.eu/

pawel.rajba@gmail.com, http://kursy24.eu/ pawel.rajba@gmail.com, http://kursy24.eu/ Servlets Charakterystyka Główne metody Obiekty request i response JSP Dyrektywy Elementy skryptowe Elementy akcji Generowanie treści Obiekty niejawne Obiekty request

Bardziej szczegółowo

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

Serwlety. Co to jest serwlet? Przykładowy kod serwletu. Po co są serwlety? Serwlety Co to jest serwlet? kawałek kodu w Javie po stronie serwera HTTP rozszerza moŝliwośći serwera CGI, w Javie, wzbogacone o biblioteki ułatwiające Ŝycie programiście (np. utrzymywanie sesji, wpólne

Bardziej szczegółowo

Komunikacja między serwletami

Komunikacja między serwletami Poznań Java Users Group Komunikacja między serwletami Bartosz Walter Instytut Informatyki Politechniki Poznańskiej Sceny z życia serwletów Obsługa żądań Żądanie Kontener GET / index.html HTTP/1.0 Serwlet

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

Serwery aplikacji. dr Radosław Matusik. radmat

Serwery aplikacji. dr Radosław Matusik.   radmat www.math.uni.lodz.pl/ radmat Ćwiczenie 1 Proszę napisać aplikację wykorzystującą serwlety i bazy danych, która umożliwi wyszukiwanie tytułów książek po nazwisku autora oraz autorów po tytule książki. Ćwiczenie

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

Piotr Laskowski Krzysztof Stefański. Java Servlets

Piotr Laskowski Krzysztof Stefański. Java Servlets Piotr Laskowski Krzysztof Stefański Java Servlets Java Servlets Technologia dynamicznego generowania treści dla aplikacji WWW Wyspecyfikowana przez Sun, obecnie przez Java Community Process Pierwsza formalna

Bardziej szczegółowo

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html JAVA I BAZY DANYCH ZAGADNIENIA: wprowadzenie; JDBC; komunikacja z bazą danych; HSQLDB. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK

Bardziej szczegółowo

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet filtry oraz web.xml Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Filtry, wywoływanie filtrów, wywołania łańcuchowe

Bardziej szczegółowo

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

CGI, serwlety Java i szablony JSP. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

CGI, serwlety Java i szablony JSP. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji Aplikacje WWW 1 Plan wykładu 2 CGI, serwlety Java i szablony JSP dr inŝ. Mikołaj Morzy Instytut Informatyki Politechniki Poznańskiej Mikolaj.Morzy@put.poznan.pl Metody konstrukcji logiki prezentacji Programy

Bardziej szczegółowo

Java wybrane technologie spotkanie nr 3. Serwlety

Java wybrane technologie spotkanie nr 3. Serwlety Java wybrane technologie spotkanie nr 3 Serwlety 1 Klient-Serwer Odpowiedzialność serwera przyjmowanie żądań od klienta przygotowywanie odpowiedzi statyczna dynamiczna Rodzaje odpowiedzi statyczna dynamiczna

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

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

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Projektowanie aplikacji J2EE w architekturze Model-View-Controller XI Konferencja PLOUG Kościelisko Październik 2005 Projektowanie aplikacji J2EE w architekturze Model-View-Controller Maciej Zakrzewicz PLOUG, Instytut Informatyki Politechniki Poznańskiej mzakrz@cs.put.poznan.pl

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 1. Servlety

Architektury Usług Internetowych. Laboratorium 1. Servlety Architektury Usług Internetowych Laboratorium 1. Servlety Wstęp Celem laboratorium jest zapoznanie się z modelem klient-serwer (żądanie-odpowiedź) na przykładzie serwletów. Kontener webowy Kontener webowy

Bardziej szczegółowo

prepared by: pawel@kasprowski.pl Programowanie WWW Model-View-Controller

prepared by: pawel@kasprowski.pl Programowanie WWW Model-View-Controller Programowanie WWW Model-View-Controller Przypomnienie problemu Aplikacja do liczenia kredytów Klasa Kredyt Formatka do wprowadzania danych (czysty HTML) Skrypt liczący ratę (JSP wykorzystujące klasę Kredyt)

Bardziej szczegółowo

Architektura Model-View-Controller

Architektura Model-View-Controller 172 Architektura Model-View-Controller Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ JSP Model 1 173 1 JSP 3 2 Klasa zewnętrzna (np. JavaBean) 2 1. Przeglądarka

Bardziej szczegółowo

Wprowadzenie do J2EE. Maciej Zakrzewicz. Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/

Wprowadzenie do J2EE. Maciej Zakrzewicz. Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ 1 Wprowadzenie do J2EE Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji

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

Architektury Usług Internetowych. Laboratorium 1 Servlety

Architektury Usług Internetowych. Laboratorium 1 Servlety Architektury Usług Internetowych Laboratorium 1 Servlety Wstęp Celem laboratorium jest zapoznanie się z modelem klient-serwer (żądanieodpowiedź) na przykładzie serwletów. Kontener webowy Kontener webowy

Bardziej szczegółowo

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych Zadanie do wykonania na następny tydzień: Przedstawić aplikację napisaną w JSP realizującą analogiczne zadania jak pierwsza aplikacja

Bardziej szczegółowo

JavaServer Pages. Konrad Kurdej Karol Strzelecki

JavaServer Pages. Konrad Kurdej Karol Strzelecki JavaServer Pages Konrad Kurdej Karol Strzelecki Podejścia do projektowania web aplikacji za pomocą Javy Serwlety Java Serwlety Java to technologia wchodząca w skład Java EE (dawniej J2EE). Serwlet Java

Bardziej szczegółowo

Aplikacje WWW. Wykład 5. Logika prezentacji - część I. wykład prowadzi: Maciej Zakrzewicz. Logika prezentacji I

Aplikacje WWW. Wykład 5. Logika prezentacji - część I. wykład prowadzi: Maciej Zakrzewicz. Logika prezentacji I Wykład 5 Logika prezentacji - część I wykład prowadzi: Maciej Zakrzewicz Logika prezentacji I 1 Plan wykładu Metody konstrukcji logiki prezentacji Programy CGI Serwlety Java implementacja korzystanie z

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

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

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Java Enterprise Edition WebServices Serwer aplikacji GlassFish Dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki Aplikacje

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

Programowanie w języku Java

Programowanie w języku Java Programowanie w języku Java Wykład 6: Programowanie rozproszone: Servlety, JSP JEE warstwa WWW Programowanie w języku Java 2 1 Interakcje serwer-klient Programowanie w języku Java 3 Technologie warstwy

Bardziej szczegółowo

Przegląd technologii JSP

Przegląd technologii JSP Marcin Paszkowski Czego potrzebujemy? Przegląd technologii JSP Do obsługi serwletów oraz JSP używamy kontenera. Czym on jest? Zapewnia on prosty mechanizm komunikacji pomiędzy serwletami a serwerem www.

Bardziej szczegółowo

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

Java Enterprise Edition spotkanie nr 4. Java Server Pages c.d. Java Enterprise Edition spotkanie nr 4 Java Server Pages c.d. 1 Opracował Jacek Sroka Implict variables & objects application javax.servlet.servletcontext np. application.log() lub getrealpath("/web-inf/licznik.txt")

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

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle VIII Konferencja PLOUG Koœcielisko PaŸdziernik 2002 Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle Marek Wojciechowski, Maciej Zakrzewicz Politechnika Poznañska,

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium Serwlety Celem ćwiczenia jest przygotowanie kilku prostych serwletów ilustrujących możliwości tej technologii. Poszczególne ćwiczenia prezentują sposób przygotowania środowiska,

Bardziej szczegółowo

Java EE: Serwlety i filtry serwletów

Java EE: Serwlety i filtry serwletów Java EE: Serwlety i filtry serwletów Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 6.9 Celem ćwiczenia jest przedstawienie podstawowej technologii platformy Java

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

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

In»ynieria systemów informacyjnych - Adam Krechowicz

In»ynieria systemów informacyjnych - Adam Krechowicz In»ynieria systemów informacyjnych - Adam Krechowicz 1 Serwlety Klasa j zyka Java pozwalaj ca na obsªugiwanie» da«od klientów. 1.1 Serwlet HTTP Klasa pozwala na dynamiczne tworzenie stron internetowych

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

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

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 09

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 09 Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 09 T. Romańczukiewicz Jagiellonian University 2009/2010 Plan Plan 1 Serwlety Plan Serwlety Przypomnienie Serwlety - wstęp Wstęp Możliwości

Bardziej szczegółowo

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle Marek Wojciechowski, Maciej Zakrzewicz Politechnika Poznańska, Instytut Informatyki ul. Piotrowo 3a, 60-965 Poznań

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

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

Java wybrane technologie

Java wybrane technologie Java wybrane technologie spotkanie nr 6 Java Server Pages c.d. JavaBeans konwencja nazewnicza getxxx(), setxxx() i isxxx() publiczny, bezargumentowy konstruktor można serializować przy pomocy ObjectOutputStream

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Java Enterprise Edition. WebServices. Język XML. Serwer aplikacji GlassFish. Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki

Bardziej szczegółowo

Serwlety i JSP. Autor: Marek Zawadka deekay@gazeta.pl

Serwlety i JSP. Autor: Marek Zawadka deekay@gazeta.pl Serwlety i JSP Autor: Marek Zawadka deekay@gazeta.pl Plan prezentacji Wstęp CGI i inne wcześniejsze rozwiązania Serwlety ulepszenia klasa HTTPServlet obsługa sesji wielowątkowość JSP czym się różni od

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

Java Enterprise Edition spotkanie nr 3. Serwlety c.d.

Java Enterprise Edition spotkanie nr 3. Serwlety c.d. Java Enterprise Edition spotkanie nr 3 Serwlety c.d. 1 Wzorzec obserwator ServletRequestAttributeListener void attributeadded(servletrequestattributeevent ev) void attributeremoved(servletrequestattributeevent

Bardziej szczegółowo

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych http://www.mini.pw.edu.pl/~lucknerm Utworzenie tabeli w Oracle Utworzenie użytkownika Utworzenie połączenia w NetBeans Utworzenie

Bardziej szczegółowo

Serwery aplikacji. dr Radosław Matusik. radmat

Serwery aplikacji. dr Radosław Matusik.   radmat www.math.uni.lodz.pl/ radmat Ciasteczka trwałe i sesyjne Ciasteczka trwałe - pozostają na komputerze użytkownika po zamknięciu strony, z której zostały pobrane / przeglądarki. Ciasteczka sesyjne - są związane

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

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone Typy przetwarzania Przetwarzanie zcentralizowane Systemy typu mainfame Przetwarzanie rozproszone Architektura klient serwer Architektura jednowarstwowa Architektura dwuwarstwowa Architektura trójwarstwowa

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

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe Zaawansowane aplikacje internetowe AJAX 1 Celem tego laboratorium jest pokazanie moŝliwości technologii AJAX. W ramach ćwiczeń zostanie zbudowana prosta aplikacja, przechwytująca kliknięcia uŝytkownika

Bardziej szczegółowo

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans 1. Wprowadzenie. 2. Przegląd komponentów EJB. komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 3. Kontener komponentów EJB: JBoss. 1 Enterprise JavaBeans

Bardziej szczegółowo

Aplikacje Internetowe

Aplikacje Internetowe Aplikacje Internetowe Bazy danych, JSTL JDBC JDBC API pozwala na: Ustalenie połączenia z bazą Wysyłanie poleceń SQL Przetwarzanie rezultatów Sposób działania JDBC Załaduj sterownik Class.forName( DriverClassName);

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

Aplikacje internetowe - laboratorium

Aplikacje internetowe - laboratorium Aplikacje internetowe - laboratorium Administracja serwerem aplikacji. Celem ćwiczenia jest zainstalowanie i administracja prostym serwerem aplikacji. Ćwiczenie zostanie wykonane przy użyciu popularnego

Bardziej szczegółowo

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie w języku Java. Bazy danych SQLite w Javie Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android

Bardziej szczegółowo

Wprowadzenie do JSP. Marcin Apostoluk, Tadeusz Pawlus, Wojciech Walczak. Technologie Biznesu Elektronicznego, 7 marzec 2006

Wprowadzenie do JSP. Marcin Apostoluk, Tadeusz Pawlus, Wojciech Walczak. Technologie Biznesu Elektronicznego, 7 marzec 2006 Marcin Apostoluk Tadeusz Pawlus Wojciech Walczak Technologie Biznesu Elektronicznego, 7 marzec 2006 Plan prezentacji 1 2 3 4 5 6 7 Kto się tym zajmuje? Opis serwletu Przykład Serwlety inne niż HTTP Aplikacje

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

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody Metody dostępu do danych JDBC - Java Database Connectivity JDO - Java Data Object ORM - Object-Relational

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

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

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Bazy danych wykład dwunasty

Bazy danych wykład dwunasty Bazy danych wykład dwunasty Interfejs do połaczeń z baza danych Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa danych 1 / 29 Zajmiemy się mechanizmami pozwalajacymi połaczyć się

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Java rozszerzenie. dr. A. Dawid

Java rozszerzenie. dr. A. Dawid Java rozszerzenie PLAN WYKŁADU 1. Java2D AWT SWING Inicjalizacja Metody 2. JDBC Connector 3. Programowanie sieciowe Socket ServerSocket 4. Servlety Serwer internetowy Klasa HttpServlet 5. JSP 6. Java3D

Bardziej szczegółowo

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, ) Kod szkolenia: Tytuł szkolenia: JEE/JSP Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, ) Dni: 5 Opis: Adresaci szkolenia: Szkolenie adresowane jest do programistów

Bardziej szczegółowo

Nowe mechanizmy w wersji 3 Java Card. Mateusz LESZEK (138775)

Nowe mechanizmy w wersji 3 Java Card. Mateusz LESZEK (138775) Nowe mechanizmy w wersji 3 Java Card Mateusz LESZEK (138775) Plan prezentacji 1. Java Card 3 2. Nowe mechanizmy w Java Card 3.X 3. Edycje Java Card 3.X Classic vs Connected Karty inteligentne wprowadzone

Bardziej szczegółowo

Programowanie komponentowe 5

Programowanie komponentowe 5 Budowa warstwy klienta w architekturze typu klient-serwer zbudowanych z komponentów typu EE - klient desktopowy i internetowy. Zastosowanie komponentów opartych na technologii EJB 3.2. na podstawie https://docs.oracle.com/javaee/7/jeett.pdf

Bardziej szczegółowo

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

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

Bardziej szczegółowo

EJB 3.0 (Enterprise JavaBeans 3.0)

EJB 3.0 (Enterprise JavaBeans 3.0) EJB 3.0 (Enterprise JavaBeans 3.0) Adrian Dudek Wirtualne Przedsiębiorstwo 2 Wrocław, 1 czerwca 2010 Plan prezentacji 1 Wprowadzenie Cel prezentacji Czym jest EJB 3.0? Historia 2 3 Cel prezentacji Wprowadzenie

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

Kurs WWW 1. Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW 1. Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Kurs WWW 1 Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ 1 Na podstawie: Hougland, D. i Tavistock A., JSP. Tworzenie stron WWW, RM, Warszawa 2002 Wprowadzenie Technologia po stronie serwera

Bardziej szczegółowo

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008 JDBC w LoXiMie Interfejs Java Database Connectivity dla systemu LoXiM Adam Michalik 2008 Sterownik JDBC co to jest? Sterownik JDBC to zbiór klas implementujących interfejsy opisane w specyfikacji JDBC

Bardziej szczegółowo