1 connecting databases to the web web programming technologies

39
1 Connecting Databases to the Web Web Programming Technologies

Upload: emery-hampton

Post on 26-Dec-2015

220 views

Category:

Documents


2 download

TRANSCRIPT

1

Connecting Databases to the Web

Web Programming Technologies

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

• 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

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

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

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

10

Java-Server-Process

DB Access in Java

Sybase

Java Applet

TCP/UDP

IP

Oracle ...

JDBC-Driver

JDBC-Driver

JDBC-Driver

JDBC Driver manager

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

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

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

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

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

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

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

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

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

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>

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

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

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

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.

31

3-tier Architecture

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

• Disadvantages:- complicated to set up an maintain

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%

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

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

} print "</table>\n";

}?>

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/