39
1 Connecting Databases to the Web

Connecting Databases to the Web

  • Upload
    alma

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Connecting Databases to the Web. 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. First Generation Architecture. Second Generation Architecture. - PowerPoint PPT Presentation

Citation preview

Page 1: Connecting Databases to the Web

1

Connecting Databases to the Web

Page 2: 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

Page 3: Connecting Databases to the Web

3

First Generation Architecture

Page 4: Connecting Databases to the Web

4

Second Generation Architecture

Page 5: Connecting Databases to the Web

5

Next Generation Architecture

Page 6: Connecting Databases to the Web

6

• Some files on server are interpreted as programsdepending on either ext., flag or special directory

• Program is invoked and generates MIME header and HTML on stdout

Web-Server

Common Gateway Interface (CGI)

HTTP-Request

HTML-File

Web-Server

File-SystemLoad File

FileHTML?

HTML

Execute Program

Program?Output

I/O, Network, DB

Page 7: Connecting Databases to the Web

7

Advantages:

- 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

CGI: Discussion

Page 8: Connecting Databases to the Web

8

Java Applets

Web-ServerHTTP-Request

HTML-File

Web-Server

File-System

Load File

FileLoad Applet...

Java-Class Requests

Java-Classes

Execute Applet...

Java Virtual Machine (JVM)

Server-Process

Page 9: Connecting Databases to the Web

9

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

Java Applets: Discussion

Page 10: Connecting Databases to the Web

10

Java-Server-Process

DB Access in Java

Sybase

Java Applet

TCP/UDP

IP

Oracle ...

JDBC-Driver

JDBC-Driver

JDBC-Driver

JDBC Driver manager

Page 11: Connecting Databases to the Web

11

Previous Approaches

- 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

Server Extensions

Page 12: Connecting Databases to the Web

12

Server Extensions: The Basic Idea

File-SystemWeb-Server

HTTP-Request

HTML-File

Web-Server

Load File

FileHTML?

HTML

I/O, Network, DB

Script?Output

Server Extension

Page 13: Connecting Databases to the Web

13

• 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

Server Extensions

Page 14: Connecting Databases to the Web

14

• Active Server Pages (ASPs)- Available in Personal Web Server- Based on VBScript, Jscript- Modular Object Model- Active Server Components- Active Data Objects

(ADO) for Databaseaccess

- In MS .NET ASP+, ADO+ …

Active Server Pages

File-SystemWeb-Server

HTTP-Request

HTML-File

Load File

ASP-File

HTML

ASP-ScriptOutput

I/O, Network, DBActive Server Page

Scripting Engine

Active Server Components

Page 15: Connecting Databases to the Web

15

ColdFusion

File-SystemWeb-Server

HTTP-Request

HTML-File

Web-Server

Load File

FileHTML?

HTML

CF Script?HTML

Cold Fusion Server Extension

Cold Fusion Application Server

ODBC-Driver Native

DB DB

Email

Directories

COM/CORBA

Page 16: Connecting Databases to the Web

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>

Page 17: Connecting Databases to the Web

17

ColdFusion: Form Handling

<HTML><BODY><FORM ACTION="http://www.abc.com/cf/pf.cfm"><H1> Find Person </H1>Person Name <INPUT NAME="PNAME"> <p><INPUT TYPE="submit" VALUE="Find"></FORM></BODY></HTML>

<HTML><BODY><H1> Tom </H1><UL> <LI><B>Age:</B> 45 <LI><B>Salary:</B> $45000 <LI><A HREF=“www.tom.com” <B>Homepage</B></A></UL></BODY></HTML>

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

Page 18: Connecting Databases to the Web

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)

Page 19: Connecting Databases to the Web

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

File-SystemWeb-Server

HTTP-Request

HTML-File

Load File

PHP-File

HTML

PHP-ScriptOutput

Database APIs,

other APIs SNMP,

IMAP, POP3,

LDAP, ...

PHP

Module

Web-Server

Page 20: Connecting Databases to the Web

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>

<?PHP 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>

Page 21: Connecting Databases to the Web

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

Page 22: Connecting Databases to the Web

22

Java Server Pages

Page 23: Connecting Databases to the Web

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>

Page 24: Connecting Databases to the Web

24

And the Output IS

<html> <head> <title>My first JSP page </title> </head> <body> Hello World</body> </html>

Page 25: Connecting Databases to the Web

25

What Else Is Out There?

• Java Server Pages (JSP)- 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 ...

Page 26: Connecting Databases to the Web

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)

Page 27: Connecting Databases to the Web

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

Page 28: Connecting Databases to the Web

28

Web-Server

2-tier Architecture

• Web server plus module connecting to database, LDAP, IMAP, ...

HTTP-Request

HTML-File

Module

DB Directory

Mail Server

SNMP

1

2

Page 29: Connecting Databases to the Web

29

2-tier Architecture

• Advantages:- easy and fast to setup- easy to administrate

• Disadvantages:- not fail safe (single point of failure)- scales badly on high loads

Page 30: Connecting Databases to the Web

30

3-tier Architecture

• Web server plus application server connecting to database, IMAP, ...

DB DB Mail Server

SNMP

1

3

2

Web Server [Cluster]

Application Server [Cluster]

Other Servers [Cluster]

DBRepl.

Page 31: Connecting Databases to the Web

31

3-tier Architecture

• Advantages:- better scalabilty- more reliable through failover mechanisms- offers better load balancing

• Disadvantages:- complicated to set up an maintain

Page 32: Connecting Databases to the Web

32

Architectures: Usage

• 2-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%

Page 33: Connecting Databases to the Web

33

Technology Choices

• PHP/{Oracle|mySQL}• ASP/Access/ODBC -- Need MS IIS• JSP/{Oracle|mySQL}/JDBC -- Need Tomcat

or Apache+JServ• Any Other Choices?

Page 34: Connecting Databases to the Web

34

Extended PHP Example

Page 35: Connecting Databases to the Web

35

Extended PHP Example

Page 36: Connecting Databases to the Web

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>

Page 37: Connecting Databases to the Web

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);

?>

Page 38: Connecting Databases to the Web

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";for ($i = 0; $i < $noFields; $i++)

print "<td>&nbsp;" . $row[$i] . "&nbsp;</td>\n";print "</tr>\n";

} print "</table>\n";

}?>

Page 39: Connecting Databases to the Web

39

Links

• Software:- Apache: http://www.apache.org/- ASP: http://msdn.microsoft.com/workshop/server/default.asp- ColdFusion: http://www.allaire.com/coldfusion/- MySQL: http://www.mysql.com/ - Oracle: http://www.oracle.com/- Oracle Technet: http://technet.oracle.com/- PHP: http://www.php.net/, http://www.zend.com/

• Others:- c|net: http://www.builder.com/- DevShed: http://www.devshed.com/Server_Side/- Webmonkey: http://www.webmonkey.com/