Download presentation
1
Connecting Databases to the Web
2
Outline Common Gateway Interface (CGI) Java Applets Server Extensions
PHP Active Server Pages/ Java Server Pages What else is out there? Architectures Extended PHP example
3
First Generation Architecture
4
Second Generation Architecture
5
Next Generation Architecture
6
Common Gateway Interface (CGI)
Some files on server are interpreted as programs depending on either ext., flag or special directory Program is invoked and generates MIME header and HTML on stdout Web-Server Web-Server File-System HTTP-Request Load File HTML HTML? HTML-File Execute Program Program? Output File I/O, Network, DB
7
CGI: Discussion Advantages: Disadvantages:
Standardized: works for every web-server, browser Flexible: Any language (C++, Perl, Java, …) can be used Disadvantages: Statelessness: query-by-query approach Inefficient: new process forked for every request Security: CGI programmer is responsible for security Updates: To update layout, one has to be a programmer
8
Java Virtual Machine (JVM)
Java Applets Web-Server Web-Server HTTP-Request Load File File-System HTML-File File Load Applet... Java-Class Requests Java-Classes Execute Applet... Java Virtual Machine (JVM) Server-Process
9
Java Applets: Discussion
Advantages: Platform independent: works for every web-server and browser supporting Java Disadvantages: Standalone Character: Entire session runs inside applet HTML forms are not used Inefficient: loading can take a long time ... Resource intensive: Client needs to be state of the art Restrictive: can only connect to server where applet was loaded from (Java VM but … can be configured) Note: Server-Process can be written in any language
10
DB Access in Java Java Applet Java-Server-Process JDBC Driver manager
TCP/UDP IP Java-Server-Process JDBC Driver manager JDBC-Driver JDBC-Driver JDBC-Driver Sybase Oracle ...
11
Server Extensions Previous Approaches Server Extensions
Platform independent and standardized Simple interface Lots of programming necessary Inefficient Server Extensions Server is extended with handler/module One handler for all incoming requests Much more efficient
12
Server Extensions: The Basic Idea
Web-Server Web-Server HTTP-Request File-System Load File HTML HTML? HTML-File File Script? Output Server Extension I/O, Network, DB
13
Server Extensions API depends on Server vendor:
Apache Foundation Apache Server: Apache API Microsoft Internet Information Server: ISAPI Netscape Enterprise Server: NSAPI One can define it’s own server extension, e.g. Authentication module Counter module
14
Active Server Components
Active Server Pages Active Server Pages (ASPs) Available in Personal Web Server Based on VBScript, Jscript Modular Object Model Active Server Components Active Data Objects (ADO) for Database access In MS .NET ASP+, ADO+ … File-System Web-Server HTTP-Request HTML-File Load File ASP-File HTML ASP-Script Output I/O, Network, DB Active Server Page Scripting Engine Active Server Components
15
ColdFusion Web-Server Web-Server HTTP-Request Load File File-System
HTML HTML? HTML-File File HTML ODBC-Driver Native DB Directories COM/CORBA CF Script? Cold Fusion Server Extension Cold Fusion Application Server
16
ColdFusion: Simple Query
Proprietary Scripting Language CFML - similar to other scripting languages <CFQUERY NAME=“PersonList” DATASOURCE=“PersonDB”> SELECT * FROM Persons </CFQUERY> <HTML> <BODY> <H1> Person List </H1> <CFOUTPUT QUERY=“PersonList”> <B>Name:</B> #Name# <B>Age:</B> #Age# <B>Salary:</B> $#Sal# <BR> </CFOUTPUT> </BODY> </HTML> <HTML> <BODY> <H1> Person List </H1> <B>Name:</B> Tom <B>Age:</B> 45 <B>Salary:</B> $45000 <BR> <B>Name:</B> Jim <B>Age:</B> 38 <B>Salary:</B> $40000 <BR> <B>Name:</B> Karen <B>Age:</B> 26 <B>Salary:</B> $32000 <BR> </BODY> </HTML>
17
ColdFusion: Form Handling
<CFQUERY NAME=“PersonInfo” DATASOURCE=“PersonDB”> SELECT * FROM Persons WHERE Name=#Form.PName# </CFQUERY> <HTML> <BODY> <CFOUTPUT QUERY=“PersonInfo”> <H1> #Name# </H1> <UL> <LI><B>Age=</B> #Age# <LI><B>Salary=</B> $#Sal# <LI><A href=“#URL#”><B>Homepage</B> </A> </UL> </CFOUTPUT> </BODY> </HTML> <HTML> <BODY> <H1> Tom </H1> <UL> <LI><B>Age:</B> 45 <LI><B>Salary:</B> $45000 <LI><A HREF=“ <B>Homepage</B></A> </UL> </BODY> </HTML> <HTML> <BODY> <FORM ACTION=" <H1> Find Person </H1> Person Name <INPUT NAME="PNAME"> <p> <INPUT TYPE="submit" VALUE="Find"> </FORM> </BODY> </HTML>
18
ColdFusion: Misc. Issues
Site admin sets up data sources very similar to the handling of ODBC data sources in MS Windows In fact ColdFusion combines techniques to access databases: Generation of HTML code Java Applets embedded via <CFGRID></CFGRID> access the database through the application server Application server is also gateway to database for the ColdFusion IDE (ColdFusion Studio)
19
PHP How does PHP differ from ASP and CF? Free, open source
Many client libraries integrated Runs on any web server supporting CGIs (MS Windows or Unix) Module version for Apache Web-Server Web-Server File-System HTTP-Request Load File HTML HTML-File PHP-File Output PHP-Script PHP Module Database APIs, other APIs SNMP, IMAP, POP3, LDAP, ...
20
PHP: A Simple Example <HTML> <BODY> <?PHP
$db = mysql_connect("localhost", "dbuser"); mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM employees",$db); ?> <TABLE BORDER=1> <TR><TD>NAME</TD><TD>POSITION</TR> while ($myrow = mysql_fetch_row($result)) { printf("<tr><td>%s %s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3]); } </TABLE> </BODY> </HTML>
21
PHP: Misc Issues Syntax Perl/C like
Form fields are available as variables in following page has e.g. image and PDF generation on the fly some OO features (e.g. classes) The number of functions is steadily increasing
22
Java Server Pages
23
JSP Example—Hello.jsp <html> <head>
<title>My first JSP page </title> </head> <body> page language=”java” %> <% System.out.println(“Hello World”); %> </body> </html>
24
And the Output IS <html> <head>
<title>My first JSP page </title> </head> <body> Hello World </body> </html>
25
What Else Is Out There? Java Server Pages (JSP) Java Servlets
similar to PHP Java Servlets very similar to CGIs A couple of solutions from Oracle PENN ExpressApp is based on OWS various web shop applications all of them use a more or less sophisticated scripting language and a lot more ...
26
Databases Usually Used
ASP MS Jet Engine (DB engine behind MS Access) MS SQL Server Oracle (ODBC) ColdFusion Oracle (native driver support) Informix (native driver support) Sybase (native driver support) PHP MySQL (linked in client library) mSQL (linked in client library) Postgres (linked in client library) Oracle (linked in client library)
27
Architectures The architecture type depends on kind and number of servers involved Different archictures different advantages and disadvantages Generally we can distinguish between different types: 2-tier architecture 3-tier architecture n-tier architecture What matters: SPEED
28
2-tier Architecture Web server plus module connecting to database, LDAP, IMAP, ... 1 HTTP-Request HTML-File Web-Server Module 2 DB Directory Mail Server SNMP
29
2-tier Architecture Advantages: Disadvantages: easy and fast to setup
easy to administrate Disadvantages: not fail safe (single point of failure) scales badly on high loads
30
3-tier Architecture Web server plus application server connecting to database, IMAP, ... 1 Web Server [Cluster] Application Server [Cluster] 2 Other Servers [Cluster] 3 DB Repl. DB DB Mail Server SNMP
31
3-tier Architecture Advantages: Disadvantages: better scalabilty
more reliable through failover mechanisms offers better load balancing Disadvantages: complicated to set up an maintain
32
Architectures: Usage 2-tier 3-tier n-tier
Apache-PHP plus Database etc. 3-tier ColdFusion 4.x, BEA Weblogic Oracle Web Application Server? n-tier big sites with custom systems like Yahoo, Amazon.com, eBay Classification not always 100%
33
Technology Choices PHP/{Oracle|mySQL} ASP/Access/ODBC -- Need MS IIS
JSP/{Oracle|mySQL}/JDBC -- Need Tomcat or Apache+JServ Any Other Choices?
34
Extended PHP Example
35
Extended PHP Example
36
Plain HTML <HTML>
<TITLE>Simple SQL Web Interface for Movie Table</TITLE> <BODY> <H1>Simple SQL Web Interface for Movie Table</H1> [PHP code here] <FORM ACTION="query.php3" METHOD=GET ENCTYPE="TEXT/PLAIN"> <INPUT SIZE=100 MAXLENGTH=250 NAME="query" VALUE="select title, year, mid from movies"> </FORM> </BODY> </HTML>
37
Table Generation (Part 1)
<?php /* check for query, if empty describe movies */ if (!isset($query)) { $query = "describe movies"; } else { $query = stripslashes($query); print "<B>Your query: </B>\"" . $query . "\"\n"; } $result = mysql_query($query, $conID) or die ("Invalid query"); // disable error reporting $eLevel = error_reporting(0); ?>
38
Table Generation (Part 2)
<?php /* generate table header or catch INSERT, DELETE and UPDATE statements */ if (mysql_affected_rows($conID) > 0) print "<B>affected " . mysql_affected_rows($conID) . " row(s)!</B><P>\n"; if (mysql_num_rows($result) > 0) { $noFields = mysql_num_fields($result); print "<table border=\"1\">\n<tr>\n"; for ($i = 0; $i < $noFields; $i++) print "<th><b>" . mysql_field_name($result, $i) . "</b></th>\n"; print "</tr>\n"; while ($row = mysql_fetch_array ($result)) { print "<tr>\n"; print "<td> " . $row[$i] . " </td>\n"; } print "</table>\n"; ?>
39
Links Software: Others: Apache: http://www.apache.org/
ASP: ColdFusion: MySQL: Oracle: Oracle Technet: PHP: Others: c|net: DevShed: Webmonkey:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.