Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Web Programming for DB Applications Yuen-Hsien Tseng 2006/04/18 Web Environment • • • • Browser: IE, Firefox, … Web Server: Apache, IIS, … DBMS: Access, MS SQL, MySQL, Oracle, … Web Programming Env.: CGI, ASP, JSP, PHP Server P1 P2 CGI ODBC Pn Web Server ASP DBMS/ DB server Browser Internet PC DB Client Web Server Administration • Virtual Path: – Root dir: Where is http://localhost/ in file system • Default index page: index.htm[l], welcome.htm, … – User dir: How http://localhost/~sam/ maps to d:/sam/public_html – How http://localhost/demo/ maps to d:/demo • Executable and non-executable files – Configurations and File permissions – http://www.cgi101.com/book/connect/winxp.html • Port number Apache Configuration • An example configuration to run a program: Alias /~tseng/ "D:/Sam/public_html/" <Directory "D:/Sam/public_html"> Options Indexes MultiViews ExecCGI AllowOverride AuthConfig Order allow,deny Allow from all </Directory> CGI (Common Gateway Interface) • Messages sent to Web server – print “Content type: text/html\n\n<html>…”; • Message received from Web server – URL-encoding/decoding – method = Get or Post • http://localhost/test.pl?name=sam&age=40 <form action=“test.pl” method=Post> Name: <input type=text name=“name” value=“sam”> Age: <input type=text name=“age” value=“40”> <input type=submit value=“Hit me!”> </form> Introduction to Perl • Invented by Larry Wall in late 1980’s • Combined the merits of many languages – C/C++, Unix Shell, … – String Processing, Regular Expression, … • Suitable for – File management – String manipulation – Process control • Lot of resources in source codes – http://www.cpan.org/ Perl Basics • Data Types – Scalar (numeric, strings), array, hash, reference • Flow control – If elsif else, for, foreach, while, next, last • • • • Special variables Subroutines Regular Expressions Reference and Object-oriented programming Data types • Scalar – $a=1; $b=1.2; $a = $a . $b . “=sam”; • Array – @C=(1, “e”, 3.4); $c=$C[1]; @a = @C[0..1]; – $a = pop @C; $b= unshift @C; shift @C, ‘c’; push @a, ‘e’; • Hash – %H=(‘sam’, 4, ‘joe’, 2); %G=(‘sam’=>4, ‘joe’=>2); – %T=reverse %H; • Reference – $b=\@C; $a=$b->[0]; – $a=\%H; $b=($a->{‘sam’} == 4)?’Yes’:”no”; • http://www.cgi101.com/book/ch2/text.html Flow control foreach (@A) { next if /^\d/; # next unless not /^\d/; last if /^\s*$/; print ; } for($i=0; $i<$n; $i+=2) { print $A[$i]; } While (<condition>) { … } Special Variables • • • • $_, @_, @ARGV Sort { $b eq $a } keys %H; Sort { $H{$b} <=> $H{$a} } keys %H; Subroutines ($r, $i) = &add($r1, $i1, $r2, $i2, “no”, “use”); sub add { my($r1, $i1, $r2, $i2, @r) = @_; return ($r1+$r2, $i2+$i2); } Regular Expressions • print "It matches\n" if "Hello World" =~ /World/; – $greeting = "World"; – print "It matches\n" if "Hello World" =~ /$greeting/; • • • • "Hello World" =~ /world/; # doesn't match, case sensitive "Hello World" =~ /o W/; # matches, ' ' is an ordinary char "Hello World" =~ /World /; # doesn't match, no ' ' at end Metacharacters : {}[]()^$.|*+?\ – "2+2=4" =~ /2+2/; # doesn't match, + is a metacharacter – "2+2=4" =~ /2\+2/; # matches, \+ is treated like an ordinary + – /[yY][eE][sS]/; # match 'yes' in a case-insensitive way • # 'yes', 'Yes', 'YES', etc. – /yes/i; # also match 'yes' in a case-insensitive way – /item[0-9]/; # matches 'item0' or ... or 'item9' – /[0-9a-fA-F]/; # matches a hexadecimal digit • $time =~ /(\d\d):(\d\d):(\d\d)/; # match hh:mm:ss format – $hours = $1; $minutes = $2; $seconds = $3; More tutorials • Reference – See c:/Perl/html/lib/Pod/perlreftut.html • Object-oriented programming – See c:/Perl/html/lib/Pod/perltoot.html CGI Module and Environment Variables • See – http://www.cgi101.com/book/ch3/text.html – c:/Perl/html/lib/CGI.html • Use CGI; print param(‘name’); • print "Caller = $ENV{HTTP_REFERER}\n";