Programowanie Zespołowe: Laboratorium 2. Aplikacje webowe. Technologia Java EE. 1. Serwlet Serwlety Java to technologia implementacyjna wchodząca w skład obszernej dystrybucji Java Platform, Enterprise Edition (Java EE, dawniej J2EE). Serwlet jest programem Java umiejscowionym po stronie serwera HTTP, służącym do automatycznego generowania dokumentów HTML stanowiących odpowiedzi na żądania HTTP. Serwlety Java wymagają dedykowanego środowiska uruchomieniowego nazywanego serwerem aplikacji. Cykl życia serwletu jest zarządzany przez kontener aplikacji Java EE. Gdy klient przekazuje żądanie do serwera HTTP jest ono kierowane do kontenera aplikacji Java EE. 1. Jeżeli obiekt serwletu nie istnieje w kontenerze: • zostaje załadowana klasa serwletu, • zostaje utworzony nowy obiekt, • obiekt serwletu zostaje zainicjowany przez wywołanie metody init(). 2. Zostaje obsłużone żadanie przez wykonanie metody doGet() lub doPost(). 3. Jeśli kontener potrzebuje usunąć serwlet, następuje jego finalizacja przy wykonaniu metody destroy(). Implementacja serwletu polega na utworzeniu klasy dziedziczącej z klasy javax.servlet.http.HttpServlet i zaimplementowaniu w niej co najmniej jednej z następujących metod: • • public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException oraz opcjonalnie: • • public void init(ServletConfig config) throws ServletException public void destroy() Przykładowy servlet został umieszczony poniżej: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello World"); } } Zadania do samodzielnego wykonania: 1. Utworzyć pierwszy serwlet na podstawie poradnika: http://www.javatpoint.com/creatingservlet-in-netbeans-ide 2. Utworzyć serwlet, który wypisze ile jest instancji klasy serwletu aktualnie na serwerze, ile aktualna instancja obsłużyła zapytań użytkownika, oraz ile wszystkie instancje obsłużyły zapytań użytkownika. 3. Utworzyć serwlet, który pobierze w formularzu imię i nazwisko użytkownika i przechowa je w pliku cookies. Przy następnym uruchomieniu aplikacji przez użytkownika, jeśli istnieje plik cookies wyświetli imię i nazwisko zamiast formularza. (Wskazówki: http://www.tutorialspoint.com/servlets/servlets-cookies-handling.htm) 2. JSP JSP (ang. 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. Strona JSP w procesie translacji jest zamieniana na serwlet. Skrypt JSP tworzą: • • • • znaczniki HTML elementy skryptu - tworzą kod Javy serwletu dyrektywy - kontrola nad strukturą serwletu akcje - określają komponenty (kontrola działania JSP) Składnia opisana w: http://docs.oracle.com/javaee/5/tutorial/doc/bnagy.html Zadania do samodzielnego wykonania: 1. Utworzyć pierwszą stronę JSP wyświetlającą komunikat Hello World! oraz aktualną datę i godzinę. 2. Utworzyć prostą aplikację typu guestbook pozwalającą użytkownikom na dodawanie wpisów po podaniu nazwy użytkownika i adresu e-mail. (Wymagane połączenie z bazą danych MySQL oraz walidacja wprowadzonego adresu poczty elektronicznej). 3. Java EE Java Enterprise Edition (Java EE) – jest szeroko rozpowszechnioną serwerową platformą programistyczną języka Java, łączy w sobie technologie do produkcji oprogramowania w architekturze klient-serwer. Aplikacje stworzone w technologii Java EE potrzebują do działania własnego środowiska uruchomieniowego nazywanego serwerem aplikacji. Jest on odpowiedzialny za m.in. cykl życia aplikacji, obsługę komunikacji, obsługę żądań użytkownika, wielowątkowość. Założenie projektowe platformy w wersji Enterprise było wprowadzenie niezależności od implementacji. Dzięki temu zyskujemy istotną niezależność od środowiska w którym będzie uruchamiana aplikacja, co pozwala uruchamiać ją na serwerach różnych producentów, zarówno komercyjnych jak i otwartych. Do najpopularniejszych z nich należą: Oracle WebLogic, IBM WebSphere, JBoss, Glassfish, Apache Geronimo. Java EE nie tylko korzysta z dużego zbioru bibliotek Javy Standard Edition, ale pozwala programiście na skupienie uwagi wokół logiki biznesowej aplikacji, wspierając inne aspekty tworzenia oprogramowania dzięki wielu interfejsom, przykładowo: • • • • • • Enterprise JavaBeans – serwerowe komponenty zawierające logikę biznesową, Web service – interfejs usług sieciowych do wymiany informacji w formacie XML, Java Message Service – system komunikacji pomiędzy komponentami, Java Persistence API – interfejs utrwalania danych, Java Transaction API – transakcje, Java Naming and Directory Interface – usługi katalogowe Javy. Ogólna koncepcja wielowarstwowej aplikacji została przedstawiona na poniższym rysunku: Poszczególne warstwy spełniają rożne zadania i komunikują się pomiędzy sobą: • Warstwa klienta – warstwa dostępu za pomocą której użytkownik komunikuje się z aplikacją. Może być to aplikacja w języku Java, przeglądarka internetowa na komputerze typu desktop lub urządzeniu mobilnym lub też aplikacja w innej technologii wykorzystująca usługi takie jak Web Service. • Warstwa prezentacji – odpowiedzialna za prezentacje danych w postaci stron internetowych o dynamicznej zawartości. Po stronie serwera generowanie dynamicznych stron odbywa się za pomocą technologii Serwletów lub Java Server Pages (lub/i jej frameworków). • Warstwa biznesowa – jest warstwą rozproszonych komponentów, które realizują logikę biznesową. Pobiera dane z warstwy niższej w zależności od żądania użytkownika, i wysyła je do warstwy prezentacji. • Warstwa utrwalania – odpowiedzialna za mapowanie obiektowo-relacyjne. • Warstwa EIS – Integrating with the Enterprise Information System – warstwa integracji z systemami relacyjnych bazy danych, systemami planowania zasobów przedsiębiorstwa. Mnogość interfejsów pozwala na tworzenie zorientowanych na współbieżność, rozproszoność, integralność transakcji, wydajnych aplikacji, z których może korzystać jednocześnie wielu użytkowników. Zadania do samodzielnego wykonania: 1. Rozbudować aplikację guestbook z punktu 2.2 przy wykorzystaniu mapowania obiektoworelacyjnego (JPA).