Presentation laddar. Vänta.

Presentation laddar. Vänta.

Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt.

Liknande presentationer


En presentation över ämnet: "Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt."— Presentationens avskrift:

1 Servlets — Java på serversidan

2 previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt sägas vara applets på serversidan. Funktionsmässigt liknar de också i mycket CGI-program. Servlets kan dessutom också ges mindre begränsade rättigheter än applets och fungerar mer som javaapplikationer. Visserligen har det tidigare varit möjligt att skriva CGI-program i Java, men med servlets kommer också ett särskilda klasser som gör det lättare att skriva applikationer på serversidan – ett API för servlets.

3 previous next 3 Servlets Servlets — generell modell

4 previous next 4 Servlets CGI och servlets CGI-program och servlets har mycket gemensamt och det råder en ständig debatt kring om det verkligen är någon skillnad mellan CGI-program och servlets. Servlet-förespråkarna har ofta talat om att servelets bara behöver laddas en gång i primärminnet och köras som en process. CGI-anhängarna har då påpekat att de flesta större webbservrarna på marknaden idag erbjuder någon typ av API med likvärdig funktionalitet. CGI-anhängarna har också menat att traditionell server-programmering med kompilerande språk som t ex C eller C++ resulterar i snabbare program och att dessa språk fungerar bättre för industriella ändamål. Java har knappast endast fördelar. Java i dess olika former har inte varit så värst kompatibelt alla gånger. Programmen har dessutom gått långsamt att köra och de ständiga utökningarna och förändringarna i Java som programmeringsspråk har gjort det svårt att hålla sig uppdaterad. Jämför med C eller C++ och du finner en helt annan stabilitet. Så den kritiska frågan vad gäller Java har alltid varit: hur fungerar visionerna i praktiken?

5 previous next 5 Servlets Övning — Applet/servlet-kommunikation Det finns åtminstone tre olika sätt att låta applets kommunicera med servlets: http, sockets och RMI. I den här övningen kommer vi att undersöka hur kommunikatioinen går till via http. Vad går övningen ut på? Du kommer att sitfta bekanstskap med servlets och öva på att programmera i Java. Målet är att bygga en fungerande Java-applikation för att söka i en adresslista. På servern vi satt upp här vid KTH finns en servlet som söker i en påhittad telefonlista: Gunnar Gren, Stora Gatan 18, 119 23 Storstad Lisa Nilsson, Lilla Gata 3, 115 21 Stora Skogen Per Persson, Bygatan 45, 122 11 Stenviken Magnus Eriksson, Torpstigen 76, 121 33 Bergered Anna Svensson, Friviken 98, 121 23 Byberga Lotta Rostander, Granstigen 21, 133 45 Senholma Hans Gobin, Finstedtsgatan 3, 213 11 Lindsered När du exempelvis söker på Lotta skickar servleten tillbaka raden: Lotta Rostander, Granstigen 21, 133 45 Senholma Servleten skickar tillbaka samtliga rader som innehåller sökordet.

6 previous next 6 Servlets Servleten kan anropas med en URL med inbäddade sökargument: Testa Servlet Servleten får sin sökparameter med GET-metoden enligt CGI-standarden. CGI står för Common Gateway Interface och anger bl a hur parametrar skickas till ett program på en Webbserver. ? ovan indikerar var parametrarna börjar. target=Lotta betyder att parametern med namnet target har värdet Lotta.

7 previous next 7 Servlets Prova själv att söka som nedan men med andra parametrar: Testa Servleten Gunnar Gren, Stora Gatan 18, 119 23 Storstad Lisa Nilsson, Lilla Gata 3, 115 21 Stora Skogen Per Persson, Bygatan 45, 122 11 Stenviken Magnus Eriksson, Torpstigen 76, 121 33 Bergered Anna Svensson, Friviken 98, 121 23 Byberga Lotta Rostander, Granstigen 21, 133 45 Senholma Hans Gobin, Finstedtsgatan 3, 213 11 Lindsered Prova själv att söka på ord från listan nedan: Skriv t ex in http://130.237.228.234/address.html?target=Stenviken för att söka efter någon som bor där.

8 previous next 8 Servlets Servlet-koden Tre delar i servlet-koden är särskilt intressanta. 1. Klassbiblioteken - Första delen länkar in särskilda klassbibliotek för servlets. Dessa behövs för att kunna skriva servlets och innehåller många praktiska metoder. 2. Initiering - Andra delen läser in telefonlistan från en fil på hårddisken och lagrar den i en vektor. Detta sker endast första gången som servleten körs. Listan ligger sedan kvar tillsammans med servleten i primärminnet. 3. Sökning - Tredje delen söker igenom vektorn efter sökparametern. För varje träff i listan skickas raden till klienten.

9 previous next 9 Servlets import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class AdressServlet extends HttpServlet{ Vector v=new Vector(); public void init(ServletConfig conf) throws ServletException { String line; try{BufferedReader in=new BufferedReader(new FileReader("public_html/phonelist.txt")); while((line=in.readLine())!=null) v.addElement(line); in.close(); }catch (IOException e){ System.out.println("Exception: " + e); } public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { res.setContentType("text/html"); ServletOutputStream out = res.getOutputStream(); int i=0; while(i<v.size()){ if((v.elementAt(i).toString().indexOf(req.getParameter("target"))!=- 1)&&(i<(v.size()-1))) out.println(v.elementAt(i).toString()+" "); i++; } 1. servletklasser 2. Initiering - läser in telefonlistan i en vektor 3. Söker sträng i vektorn och skickar träffar til klienten Servlet-koden

10 previous next 10 Servlets Låt oss undersöka närmare hur Servleten är uppbyggd: Klassbiblioteken java.io.* och import java.util.* känner du säkert igen. import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; Klassbiblioteken javax.servlet.* och javax.servlet.http.* är särskilda bibliotek för att skriva servlets. javax.servlet är ett generellt servlet-bibliotek och javax.servlet.http innehåller klasser för kommunikation enligt HTTP-protokollet. Servlet-koden

11 previous next 11 Servlets Den först raden anger att klassen kommer att bygga vidare på HttpServlet som har inbyggda funktioner för att hantera http-kommunikation. public class AdressServlet extends HttpServlet{ En vektor skapas för att lagra adresslistan i: Vector v=new Vector(); Om det är första gången servleten körs init-metoden och adresslistan läses in i vektorn: public void init(ServletConfig conf) throws ServletException { String line; try{BufferedReader in=new BufferedReader(new FileReader("public_html/phonelist.txt")); while((line=in.readLine())!=null) v.addElement(line); in.close(); }catch (IOException e){ System.out.println("Exception: " + e); } Servlet-koden

12 previous next 12 Servlets Den andra delen av servleten tar han om förfrågan. public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { Servleten ska skicka tillbaka text: res.setContentType("text/html"); ServletOutputStream out = res.getOutputStream(); int i=0; while(i<v.size()){ Metoden getParameter(parameter) ger tillbaka värdet för GET-parametern och sedan söker vi på det värdet rad för rad i vektorn med adresserna: if((v.elementAt(i).toString().indexOf(req.getParameter("target"))!=- 1)&&(i<(v.size()-1))) För varje träff så skickar vi textraden från adresslistan till klienten och bifogar en styckekod sist för att få nya rader ( bra om servleten anropas med en webbläsare). out.println(v.elementAt(i).toString()+" "); i++; } Servlet-koden

13 previous next 13 Servlets Java-applikationen På liknande sätt som du kan skriva in en URL med sökparameter för att köra servleten så kan ett program göra det. Koden på nästa sida visar hur.

14 previous next 14 Servlets import java.net.*; import java.io.*; public class AdressKlient{ public static void main(String[] args){ String line; try{ URL u=new URL("http://130.237.228.234/address.html?target=Lotta"); DataInputStream text=new DataInputStream(u.openStream()); while((line=text.readLine())!=null) System.out.println(line); } catch(IOException e){ System.err.println(e); } Grundkod för Java-applikationen Skapa ett URL- objekt och öppna en in-ström Läs/skriv ut rader Resultat av körning

15 previous next 15 Servlets Vad blir då din uppgift? Utgå från grundkoden för Java-applikationen på föregående sida och skriv om den så att den får ett användargränssnitt där användaren kan skriva in sökord i ett sökfält och där sökresultatet visas i ett textfält. Användaren ska också kunna söka flera gånger utan att behöva starta om applikationen. Om du vill få mer bakgrundsinformation om GET och att hämta data med URL:er i kapitel fem i Rusty. Kapitel femton tar också upp servlets. Lycka Till! /Anders


Ladda ner ppt "Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt."

Liknande presentationer


Google-annonser