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 w technologii Java. Serwlety s technologi le» c u podstaw frameworków sªu» cych do tworzenia stron jak JSP, JSF i innych. import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class Start extends HttpServlet { @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf 8"); PrintWriter out = response.getwriter(); try { out.println("<?xml version='1.0' encoding='iso 8859 2'?>"); out.println("<!doctype HTML PUBLIC ' //W3C//DTD HTML 4.01//EN'"); out.println(" 'http://www.w3.org/tr/html4/strict.dtd'>"); out.println("<html><head><title>tytul</title></head>"); out.println("<body>"); out.println("<p>abc</p>"); out.println("</body>"); out.println("</html>"); nally { out.close(); Powy»szy przykªad generuje dynamiczn stron HTML metoda doget realizuje zapytanie HTTP otrzymane za pomoc zapytania GET alternatywnie metoda dopost pozwala na realizowanie zapytania POST 1
1.2 Parametry HTTP W celu obsªu»enia parametrów podanych w zapytaniu HTTP (np. adres?parametr1=abcdef) wykorzystujemy obiekt request String s = request.getparameter("parametr1"); out.println(s); 1.3 Generowanie innej zawarto±ci Tworzenie stron internetowych przy pomocy serwletów jest zadaniem niewygodnym i wymagaj cym du»ego nakªadu pracy. Dlatego zamiast pisa strony przy pomocy serwletów stosuje si frameworki pozwalaj ce na uªatwienie pracy. Serwlety mog jednak by bardzo u»yteczne podczas generowania innej zawarto±ci. package isi; import java.awt.color; import java.awt.graphics; import java.awt.image.bufferedimage; import java.io.fileinputstream; import java.io.ioexception; import java.io.outputstream; import java.io.printwriter; import javax.imageio.imageio; import javax.servlet. ; import javax.servlet.http. ; public class Image extends HttpServlet { public void init(servletconfig config) throws ServletException { super.init(config); public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("image/png"); OutputStream out = response.getoutputstream(); BufferedImage bufferedimage = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB); Graphics g = bufferedimage.getgraphics(); g.setcolor(color.white); g.fillrect(0, 0, 200, 200); g.setcolor(color.black); g.drawoval(10, 10, 180, 180); g.filloval(40, 50, 20, 20); g.filloval(140, 50, 20, 20); g.drawarc(30, 30, 140, 140, 180, 180); 2
ImageIO.write(bufferedImage, "png", out); out.close(); 2 Cookies Ciasteczka pozwalaj na zapisywanie niewielkich porcji infromacji po stronie klienta wykorzystywanych w aplikacjach webowych. Za obsªug ciasteczek odpowiada klasa javax.servlet.http.cookie 2.1 Tworzenie ciasteczek Utworzenie ciasteczka wymaga podania jego nazwy i warto±ci jak posiada Cookie c = new Cookie("abc", "abc"); Wysªanie ciasteczka zostanie zrealizowane podczas dodania response.addcookie(c); Ciasteczko zostanie stworzone w przegl darce 2.2 Odczytywanie ciasteczek Stworzone po stronie ciasteczka s dost pne za pomoca metody getcookies() obiektu request Cookie[] c = request.getcookies(); Zwrócona tablica ciasteczek mo»e nast pnie zosta przeszukana pod wzgl dem szukanej nazwy. 2.3 Metody ciasteczek getname(), setname() pobranie i ustawienie nazwy ciasteczka, getvalue(), setvalue() pobranie i ustawienie warto±ci ciasteczka, getmaxage(), setmaxage() pobranie i ustawienie czasu»ycia ciasteczka, getpath(), setpath() pobranie i ustawienie lokalizacji ciasteczka, 3
getcomment(), setcomment() pobranie i ustawienie opisu ciasteczka. 3 Sesje Sesja sªu»y zapisywaniu informacji o poszczególnych klientach odwiedzaj - cych stron. Informacje te zapisywane sa na serwerze i identykowane s przez odpowiednie ciasteczko wysyªane przez klienta. Za obsªug sieci odpowiedziale s obiekty relizuj ce HttpSession. Dost p do obiektu sesji ze strony JSP realizowany jest przez automatyczny obiekt session. W celu uzyskania obiektu sesji z serwletu nale»y posªu»y si odpowiedni metod obiektu klasy request. HttpSession session = request.getsession(); W celu zapisania w sesji informacji wykorzystywana jest metoda setattribute session.setattribute("nazwa", "wartosc"); Odczytanie danych z sesji realizowane jest przez metod getattribute out.println(session.getattribute("nazwa")); Inne przydatne metody HttpSession: getattributenames() metoda pozwala na zwrócenie wszystkich nazw obiektów przechowywaneych w sesji getid() metoda zwraca identykator sesji dla odpowiedniego klienta getcreationtime() zwraca czas utworzenia sesji getlastaccesedtime() zwraca czas kiedy klient ostatnio odwoªywaª si do sesji getmaxinactivetime() zwraca czas po jakim sesja zostanie usunieta setmaxinactivetime() ustawia czas po jakim sesja zostanie usunieta invalidate() usuwa wszystkie dane sesji isnew() czy sesja byªa ju» uzywana removeattribute() usuwa podany atrybut z sesji 4
4 Tworzenie serwletów 4.1 Serwlety w ±rodowisku eclipse 1. ci gn kontener Apache Tomcat 2. Upewni si,»e w eclipse zainstalowane s dodatki WTP Web Tools Platform 3. Nale»y utworzy nowy projekt Dynamic Web Project 4. Nast pnie nale»y wybra ±rodowisko uruchomieniowe Apache Tomcat 5. Je±li brak ±rodowiska nale»y je utowrzy podaj c lokalizacj ±ci gni tego kontenera Apache Tomcat 6. Dodajemy nowy serwlet z opcji New 7. Przyciskiem run uruchamiamy ±rodowisko 8. stworzony serwlet dost pny jest pod adresem http://localhost:8080/nazwa projektu/nazwa serwletu 5 Zadania do wykonania 1. Stworzy dynamiczn stron za pomoc serwletu 2. Wy±wietli na stronie parametry podane w URL (np. http://localhost:8080/webapplication1/nazwaserwletu?a=hello&b=world) 3. Przetestowa wywaªanie POST 4. Stworzy serwlet realizuj cy zadan funkcj 5. Stworzy serwlet generuj cy wykres zadanej funkcji 6. Zapisa i odczyta warto±ci za pomoc ciasteczek 7. Zapisa i odczyta warto±ci za pomoc sesji 5