to get the file
Transkrypt
to get the file
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 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 4.01//EN'"); { 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, response.setContentType("image/png"); OutputStream out = response.getOutputStream(); IOException BufferedImage bufferedImage = new BufferedImage(200, 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 200, { BufferedImage.TYPE_INT_RGB); ImageIO.write(bufferedImage, out.close(); "png", out); } } 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() steczka, • getPath(), setPath() pobranie i ustawienie czasu »ycia cia- pobranie i ustawienie lokalizacji ciasteczka, 3 • 3 getComment(), setComment() pobranie i ustawienie opisu ciasteczka. 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: metoda pozwala na zwrócenie wszystkich nazw obiektów przechowywaneych w sesji • getAttributeNames() • getId() • getCreationTime() • getLastAccesedTime() zwraca czas kiedy klient ostatnio odwoªywaª • getMaxInactiveTime() zwraca czas po jakim sesja zostanie usunieta • setMaxInactiveTime() ustawia czas po jakim sesja zostanie usunieta • invalidate() • isNew() • removeAttribute() metoda zwraca identykator sesji dla odpowiedniego klienta zwraca czas utworzenia sesji si¦ do sesji usuwa wszystkie dane sesji czy sesja byªa ju» uzywana 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