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.

Slides:



Advertisements
Liknande presentationer
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
”Ett sätt att distribuera Business Objects via webben”
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
2I1070 Lektion 2 KTH-MI Peter Mozelius Servlets och databaskopplingar.
1 ITK:P2 F9 HTTP, Java servlets och Apache Tomcat DSV Peter Mozelius.
Filhantering Grundprincipen för filhantering Öppna filen
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Internetprogrammering F 14 Läs också: Kursboken.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Databaser i B2KUNO Johan Eklund. Hur går jag vidare? Avancerade tillämpningar:  Analysera data  Generera information Utveckla följande färdigheter:
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Programmering B PHP Lektion 3
Datasamlingar och generiska enheter
Vektorer (klassen Vector) Sortering
Objektorienterad Modellering Programmering och Analys
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 14 ”Enkel” Filhantering.
Java servlets och databaskopplingar
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
2I1073 Föreläsning 2 KTH-MI Peter Mozelius Server, servlets och databaskopplingar.
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
INTRODUKTION TILL PROGRAMMERING
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Java Beans
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
1 Övning6 Läsning från fil till java objekt Sökning Sortering.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
RMI Av: Josefina & Sarah DS04.
Presentationens avskrift:

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 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.

previous next 3 Servlets Servlets — generell modell

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?

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, Storstad Lisa Nilsson, Lilla Gata 3, Stora Skogen Per Persson, Bygatan 45, Stenviken Magnus Eriksson, Torpstigen 76, Bergered Anna Svensson, Friviken 98, Byberga Lotta Rostander, Granstigen 21, Senholma Hans Gobin, Finstedtsgatan 3, Lindsered När du exempelvis söker på Lotta skickar servleten tillbaka raden: Lotta Rostander, Granstigen 21, Senholma Servleten skickar tillbaka samtliga rader som innehåller sökordet.

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.

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

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.

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

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

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

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

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.

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(" 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

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