Björn Eiderbäck, Cristian Bogdan

Relevanta dokument
Lite mer om CGI-programmering

Inneh ll. CGI och CGI-programmering. Common Gateway Interface. Common Gateway Interface. Mera dynamisk WWW. Kompletterande l sningar

Klientprogrammering mot databaser

INTRODUKTION TILL JDBC

Webbsidor och webbservrar

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Recitation 4. 2-D arrays. Exceptions

Karlstads Universitet, Datavetenskap 1

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Att skriva till och läsa från terminalfönstret

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

F8 Webbteknologier 1. Dynamiska webbsidor

Classpath. Class loading + resurser. Class loader. jar-filer

Kort-kort om utdelade användarkonton och datormiljön på NADA

Objektorienterad programmering i Java I

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Support Manual HoistLocatel Electronic Locks

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Webbprogrammering. Sahand Sadjadee

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Nya webbservern Dvwebb.mah.se

Kort-kort om utdelade användarkonton och datormiljön på NADA

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Sample exam questions. Database exam TIG058

Vyer, Prepared Statements, Triggers

Hämta data mha URLer Föreläsning 2b. Innehåll Klassen URL

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Lösningsförslag, tentamen i Databaser

Nätverk Internet. Databasdrivna applikationer och applikationer som använder databaser. Internet. Ett nätverk. Varför nätverksapplikationer?

Lektion 5 HTML, CSS, PHP och MySQL

JAVASCRIPT. Beteende

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Chapter 4: Writing Classes/ Att skriva egna klasser.

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Föreläsnings 9 - Exceptions, I/O

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

DAT043 Objektorienterad Programmering

Webbprogrammering - 725G54 PHP. Foreläsning II

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

LARS. Ett e-bokningssystem för skoldatorer.

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Avancerade Webbteknologier

Filbeskrivningar Eller på särskild CD skiva

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Kort om klasser och objekt En introduktion till GUI-programmering i Java

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Labora&on 8 Formulär övningar/uppgi6er

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Problem som kan uppkomma vid registrering av ansökan

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Exemple på Tentauppgifter Webbprogrammering

LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad:

Webbreg öppen: 26/ /

Administrationsmanual ImageBank 2

Kapitel 4 Arkivmenyn Innehåll

Internationalisering/lokalisering på webben

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Laboration 24 Databasen MySQL och java

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

OOMPA 2D1359 Föreläsning 3

Tentamen Nätverksprogrammering Lösningsförslag

DB2-åtkomst från WebSphere

Webbservrar, severskript & webbproduktion

Objektorienterad Programmering (TDDC77)

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

Language Integrated Query, LINQ, och databaser

Introduktion till programmering SMD180. Föreläsning 1: Programmets väg

Workshop IBA internet based assessment

Språket Python - Del 2 Grundkurs i programmering med Python

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Lab 6: ASP.NET 2.0 Providermodellen

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Introduk+on +ll programmering i JavaScript

Föreläsning 2. Operativsystem och programmering

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Transkript:

CGI, Perl, JDBC Björn Eiderbäck, Cristian Bogdan Innehåll. Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl. SQL JDBC previous next CGI Vad är CGI? Common Gateway Interface är ett sätt att koppla program till HTML-sidor Klienten/bläddraren anropar och skickar data för behandling till ett program som "körs" på en server Varför CGI? Ett sätt att koppla beteende till HTML-sidor HTML är ju mest ett sätt att beskriva innehåll och inte beteende Exekvering på server istället för på klient Kan göra exekveringen säkrare (ur både klient och serverhänseende) Ger tillgång till kataloger, filer och andra program på servern Om vi tex vill använda databaser så är det lämpligt att placera dem på servern previous next 2 2002-2004 1

CGI: the input/output paradigm Normally in DOS or Unix a program reads an input stream (so-called standard input) and writes to an output stream (so-called standard-output) A DOS or Unix program also reads its command line arguments, and its environment variables In DOS you can set an env variable like set VarName=value In Unix, it depends on your shell (command line interpreter), for example in bash export VarName=value For example the PATH environment variable tells the system where to find programs So for input there are: standard input, command line arguments, and environment variables previous next 3 CGI program input/output Input: a number of environment variables set by the WWW server One of the variables (the QUERY_STRING) contains arguments in the form arg1=value1&arg2=value2, etc. The query string is read from the URL, after the? sign http://yourserver:port/cgi-bin/scriptname?quarg1=value1&arg2=value2 In a special case (the POST method) the standard input gives the query string Output: the standard output of the CGI program will be sent back to the browser! previous next 4 2002-2004 2

... Vilka programmeringsspråk kan man använda? Ett CGI-script kan skrivas i många olika språk, tex Perl, C/C++, TCL, C Shell, Visual Basic, Python, (Java, Smalltalk) och AppleScript Vissa av dessa språk stöds inte av alla servrar eller servrar på vissa typer av plattformar Med vissa servrar kan man också använda språk som Java och Smalltalk Hur ser ett CGI-program ut? Ett program som är kopplat via CGI till en websida hanterar data som skickats via GET eller POST från den aktuella sidan Vidare kan programmet hantera andra omgivningsvariabler för att tex kontrollera om anropande websida "körs" från en bläddrare på en gilltig plattform (vi kan tex se till att endast bläddrare startade på någon av NADAs datorer kan köra CGI-programmet) previous next 5 CGI environment variables SERVER_SOFTWARE SERVER_NAME SERVER_PORT REQUEST_METHOD PATH_INFO PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST AUTH_TYPE REMOTE_USER CONTENT_TYPE CONTENT_LENGTH previous next 6 2002-2004 3

Viktigt! Viktigt! När du står i katalogen CGI på NADA Placera filen i din cgi-bin-katalog /afs/nada.kth.se/public/www.student/cgi-bin/dittanvändarnamn Se till att alla får exekveringsrättigheter Det är viktigt att sätta rättigheter för filen som innehåller ett CGI-program så att alla kan exekvera den Det är ett ganska vanligt fel att man glömt sätta dess rättigheter och därmed kan inte servern köra programmet Under UNIX (dvs bla på NADA) sätter du filens (här FILNAMN) exekveringsflagga (x) så att både du själv (user) och alla (others) kan köra den genom att utföra följande UNIX-kommando chmod uo+x FILNAMN Om du vill ha mer info om chmod utför kommandot man chmod Se också till att alla får länka till och läsa från din cgi-bin-katalog fs setacl. system:anyuser rl previous next 7... Referensen till dina script blir http://cgi.student.nada.kth.se/cgi-bin/dittanvändarnamn/dinfil Testa dina program så långt det är möjligt utanför webbsystemet först, dvs från terminal i stil med: >perl DinFil.pl Vi fel i exkvering via web kan du ha hjälp av http://cgi.student.nada.kth.se/cgi-bin/get-errlog previous next 8 2002-2004 4

CGI några referenser CGI spec http://hoohoo.ncsa.uiuc.edu/cgi/overview.html Allmänn "site" http://www.cgi-resources.com previous next 9 Forms Vad är Forms? Ett sätt att i HTML skapa sidor som använder inmatning av information från användaren och koppla hantering till program på en server Vi kan hantera knappar, textfält, listor, mm Varför Forms? HTML är ett språk för att beskriva innehåll på sidor och inte hur det skall hanteras FORMS är ett sätt att beskriva olika grafiska objekt och koppla hanteringen av användarens inmatning via CGI till program skrivna i konventionella programspråk previous next 10 2002-2004 5

Vi anger program till vilket data från FORMEN skickas I FORMEN kan vi både blanda vanlig HTML och komponenter... Forms, hur? En FORM ser ut ungefär så här <FORM ACTION="ProgramSomHanterarFormen" METHOD="GET"> <BR> Lösenord: <INPUT TYPE="password" NAME="password" "GET" eller "POST" beroende av hur data skall skickas Namn: <INPUT TYPE="text" NAME="user" SIZE=20 MAXLENGTH=40 VALUE=""> Inmatningsfält Lösenordsfält SIZE=20 MAXLENGTH=40 VALUE=""> <INPUT TYPE ="submit" VALUE="Logga in"> </FORM> Så En knapp som Såhär här ger ger vi vi namn namn på på komponenten skickar komponentensom som sedan sedan FORMENS data kan kan användas användas av av programmet programmet för för att att läsa läsa dess dess data data previous next 11 Types of HTML input See http://www.nada.kth.se/kurser/kth/2d1390/03-04/contents/cgi/exampleshtml.html Text TextArea (multiline text) Password (* when typed) Select/Option choosers, SIZE=1 for one choice displayed Radio (more can have the same name) Checkbox (more can have the same name) Submit, Reset previous next 12 2002-2004 6

Alternativ till FORMS Som alternativ till FORMS kan vi tex använda Applets Fast lite besvärligare att programmera och så kör ju programmet på klientsidan vilket gör att det blir besvärligare att tex uppdatera en katalog på servern Servlets Javas motsvarighet till CGI fast anpassat till Java Plugin Det finns många typer av program som kan pluggas in till nätbläddraren för att sedan exekvera kod Ett problem är att det är osäkrare än både applets och CGI då man inte är säker på vad programmet kan göra på klientsidan (kanske ändra filer, starta program osv) JavaScript, DHTML mm I många situationer är dessa mer nätbläddrarinbyggda möjligheter enklast (och mest effektivt) att använda previous next 13 Perl (Practical Extraction and Report Language) För att exemplifiera CGI-script väljer vi att använda Perl. Vad är Perl? Perl är ett interpreterande programspråk inspirerat av C och cshell Finns på många plattformar (fast mest inspirerat av UNIX) Många funktioner för bla mönstermatchning Varför Perl? Relativt enkelt att använda Går att provköra som vanligt program från terminal Finns på flera plattformar Dock inbjuder inte Perl till välstrukturerade (speciellt stora) program På kursen lär vi oss inte Perl utan kommer bara använda en bråkdel för att illustrera principerna för CGI previous next 14 2002-2004 7

Perl... Kort översikt Om du har tillgång till Deitels Internet & WWW How to Program, kan du läsa kapitel 27 med OH-bilder Se Perls hemsida: http://www.perl.com Se också gärna den blixtnsnabba introduktionen (till främst syntaxen) som du hittar på följande adress (klicka på pilikonerna längs ner till vänster) http://www.iupui.edu/npi/intro2perl/perl.html Exempel Se nästa oh-sidas rekommenderade referenser samt exemplen på kursens sidor (http://www.nada.kth.se/kurser/kth/2d1390/01-02/contents/cgi/examples.html) previous next 15 Perl några referenser Home page http://www.perl.com/perl/index.html Tutorial http://agora.leeds.ac.uk/perl/start.html previous next 16 2002-2004 8

En form kopplad till test.pl. Vi använder GET Forms, CGI och Perl Ett enkelt exempel med HTML-kod med inmatning i ett textfält Data skickas till Perlprogram då knappen trycks <FORM ACTION="test.pl" METHOD="GET"> Ett inmatningsfält som vi ger namnet message Skriv meddelande: <INPUT TYPE="text" NAME="message" SIZE=20 MAXLENGTH=40 VALUE=""> En knapp för att skicka data En knapp för att rensa inmatad information <INPUT TYPE ="submit" VALUE="Logga in"> <INPUT TYPE="reset" VALUE="Rensa inmatad information"> </FORM> previous next 17 Vi skickar HTML... Metod som användes för att skicka data (GET eller POST), samt medskickade data Vi hanterar bara GET Det är Perl! Skalära Skalära variabler variabler skall skall börja börja med med $ $ #!/usr/local/bin/perl print "Content-type: text/html\n\n"; $REQUEST_METHOD = $ENV'REQUEST_METHOD'; Funktionen Funktionen $ENV $ENV kan kan användas användas för $QUERY_STRING = $ENV'QUERY_STRING'; för att att läsa läsa omgivningsvariabler omgivningsvariabler if($request_method ne "GET") print "Tyvärr jag klarar bara av <CODE>GET</CODE><P>Hej då!"; exit(0); Dela upp kommandosträngen den skall ju se ut så här kommando=argument ($COMMAND, $MESSAGE) = split(/=/, $QUERY_STRING); if($command eq "message") är den okey så print "<H1>Du skickade följande</h1>"; skickar vi tillbaks lite info print "Meddelande: $MESSAGE"; exit(0); Vi ekar bla det inskickade exit(0); meddelandet previous next 18 2002-2004 9

... ett exempel Placera Perlfilen i din CGI-bin-katalog Testa först från terminal så att uppenbara fel (syntaxfel osv) är eliminerade Se till att filens rättigheter är riktiga Publicera din HTML-sida Se till att hela sökvägen till samt namnet på filen är riktigt i ACTION-fältet Testa! previous next 19... Databaser: SQL SQL Tutorials http://www.w3schools.com/sql/default.asp http://perl.about.com/msub68.htm?once=true& previous next 20 2002-2004 10

JDBC (Java Database Connectivity) JDBC är Javas API till relationsdatabaser Som är ett API som gör det möjligt att på ett relativt databas- och maskinoberoende sätt att hantera databaser som pratar SQL Så här gör man steg för steg 1. Ladda JDBC-driver 2. Definiera anslutnings-url 3. Etablera förbindelse 4. Skapa Statement-objekt 5. Exekvera (SQL-) fråga eller uppdatera 6. Behandla resultatet 7. Stäng förbindelsen Vi ser på lite kodexempel (från Ince bok) previous next 21 33 11... JDBC: koppla upp och hämta data... import java.sql.*; public class JDBCCode public static void main(string args[]) //Set the name of the file that is to be accessed //and the name of the driver URLen skulle kunna vara i stil med String fileurl = "..."; jdbc:oracle:thin@faun.nada.kth.se:4711:dbname String drivername = "..."; try Drivern skulle kunna vara i stil med oracle.jdbc.driver.oracledriver // Load in the driver programmatically Class.forName(driverName); catch (ClassNotFoundException cfn) //Problem with driver, display error message and //return to operating system with status value 1 System.out.println("Problem loading driver"); System.exit(1); previous next 22 2002-2004 11

3 4 5 6... try //Establish a connection to the database, second //argument is the name of the user and the third //argument is a password (blank) Connection con = DriverManager.getConnection(fileURL,"Darrel",""); //Create a statement object Statement selectstatement = con.createstatement(); //Execute the SQL select statement ResultSet rs = selectstatement.executequery ("SELECT name, salary FROM employees WHERE salary >35000"); String employeename; int employeesalary; while(rs.next()) employeename = rs.getstring(1); employeesalary = rs.getint(2); System.out.println ("Name = "+ employeename + "Salary = "+ employeesalary); previous next 23 77... //Close down the database connection, result set //and the SELECT statement selectstatement.close(); con.close(); rs.close(); catch(exception e) System.out.println("Problems with access to database"); e.printstacktrace(); System.exit(2); previous next 24 2002-2004 12

... JDBC: uppdatera databas String fileurl = "..."; String drivername = "..."; try //Load in the driver programmatically Class.forName(driverName); catch (ClassNotFoundException cfn) //Problem with driver, error message and return //to operating system with status value 1 System.out.println("Problem loading driver"); System.exit(1); previous next 25... try //Establish a connection to the database, second //argument is the name of the user and the third //argument is a password (blank) Connection con = DriverManager.getConnection(fileURL,"Darrel",""); Statement updatestatement = con.createstatement(); String employeename ="...", employeesalary = "...", employeedepartment = "..."; //Execute the SQL insert statement int noofrows = updatestatement.executeupdate ("INSERT INTO employees (name, salary, department)"+ "VALUES(" + "' + employeename + ",'" + employeesalary + "',' + employeedepartment + "')"); catch(sqlexception sqe) System.out.println("Problem updating database"); previous next 26 2002-2004 13

... Man kan gör rollback Prepared statements Stored procedures DatabaseMetaData ResultSetMetaData Osv previous next 27... JDBC Vi tittar på SUN:s tutorial om JDBC http://java.sun.com/docs/books/tutorial/jdbc/index.html Mer info på nätet http://www.javaworld.com/javaworld/jw-05-1996/jw-05-shah.html http://www.javaworld.com/channel_content/jw-jdbc-index.shtml previous next 28 2002-2004 14