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