460 likes | 1.12k Views
Database Driven Web Application. Traditional client-server (2-tier architecture): client: user interface database server: stores data. business logic: resides on both Three or multi-tier architecture: Presentation layer: client, browser
E N D
Database Driven Web Application • Traditional client-server (2-tier architecture): • client: user interface • database server: stores data. • business logic: resides on both • Three or multi-tier architecture: • Presentation layer: client, browser • Business layer: web server, handles web requests and actual functionality • Database layer: database server, stores data Application Servers including web servers Clients Database Server
Benefits of Web Applications • Standard & thin client: web browser • Easy maintenance • both server and client • Easy upgrade • both server and client • Fast development • Mature technologies and platforms • Security • https, password protection, firewall transparent • Limitations • Compatibility of different web browsers • Limited functionalities
Web Technolgies • Client-side • HTML CSS (Cascading Style Sheets) • XML (Extensible Markup Language) • JavaScript VBScript • Flash Java applet • Server-side • PHP PERL / CGI • ASP (Active Server Pages) & ASP.NET • JSP (Java Server Pages) Java Servlets • C++/C Database • ODBC, JDBC • MS SQL, Oracle, DB2, my sql…
Web Application Option1: LAMP • LAMP • Linux OS • Apache Web Server • MySQL Database • PHP scripting (Hypertext Preprocessor) • Advantage • Free • Open source • Proved to be one of the most reliable ways for web development • Disadvantage • Tech support • Higher HR cost
Web Application Option2: Microsoft • Microsoft technologies • Windows 2003 / vista OS • IIS (Internet Information Server) Web Server • SQL Database • ASP.NET scripting (Active Server Page) • Advantage • Tech support • Fast development • Lower HR cost • Continuous improvement on reliability and security • Disadvantage • Commercial software • Not open source • Security, reliability and stability
Web Application Option3: Java • Java technologies • Unix / Linux OS • Apache + Tomcat / Websphere / Weblogic Web Server • Oracle / Sybase / DB2 / Mysql Database • JSP scripting (Java Server Page) and Servelet • Advantage • Proved to be one of the most reliable and secure ways for web development • Many third party software • Disadvantage • High development cost • High HR cost • Future unclear
HTML • www.w3schools.com
Forms • HTML and forms are used to build front-end application • CGI/ASP/PHP/JSP are used to build the back-end application • A Form • <form method="get" action="/cgi-bin/myscript.pl"> • A Text Input Box • <input type="text" name="foo"> • A Radio Button • <input type="radio" name="color" value="blue> • A Check Box • <input type="chekcbox" name="isMarried"> • A Hidden Varible • <input type="hidden" name=“Result" value="1"> • A Submit Button • <input type="submit" name="SVariable">
PHP Error • Turn on php error reporting: • For development server, very useful; for production server, don’t do that. • php.ini • display_errors = On • error_reporting = E_ALL & ~E_NOTICE • httpd.conf • php_flag display_errors on • php_value error_reporting 2039
PHP Overview • Open Source server-side scripting language designed specifically for the web. • Conceived in 1994, now used on +10 million web sites. • Outputs not only HTML but can output XML, images (JPG & PNG), PDF files and even Flash movies all generated on the fly. Can write these files to the file system. • Supports a wide-range of databases (20 + ODBC). • PHP also has support for talking to other services using protocols such as LDAP, IMAP, SNMP, NNTP, POP3, HTTP. • Easy learning curve • Syntax Perl- and C-like syntax. Relatively easy to learn. • Large function library • Embedded directly into HTML • The separation of HTML design and PHP tags • Interpreted, no need to compile
PHP Tags • See www.w3schools.com • PHP code must be surrounded with special tags<?php PHP Code In Herephp?> • Write text to the browser with the echo command • To write Hello, World! to the browser, include the following in hello.php • <?php • echo “<h2>Hello, World</h2>”; • ?> • Php code can be pretty much anywhere in HTML document.
PHP Variables • Variable • names can be of any length; • can include letters, numbers and underscores; • case-sensitive • To assign values to variables: • $foo = ‘bar’; Data Type: String • $foo = 1; Data Type: integer • $foo = 5.34; Data Type: Double • $foo = array(“bar”,”united”); Data Type: Array • Data Types are automatically assigned though you can force a data type by type casting. For example: • $foo = ‘Hello’; • $bar = (int)$foo; • $bar now equals 0 • Almost all variables are local. Globals include $_POST Array: $names[0] = 'Helen'; $names[1] = 'Susan'; $names[2] = 'Marc';
PHP Operators • Operators • Assignment (e.g. =, +=, *=) • Arithmetic (e.g. +, -, *) • Comparison (e.g. <, >, >=, ==) • Logical (e.g. !, &&, ||) • Comments • // • /* */ • Good code will use indents and comments. • Useful debugging skill • put echo commands in the middle of your code, to observe the output value and debug, then just comment out the echo commands.
1st PHP script <html> <body> <strong>Hello World!</strong><br /> <?php • echo “<h2>Hello, World</h2>”; ?> <?php $myvar = "Hello World"; echo $myvar; ?> </body> </html> On server, save it as e3.php in $HOME/.WWW-orion/, On client browser, visit http://orion.csl.mtu.edu/~yourid/e3.php
Control Structures • Conditional structures (e.g. if/else) • Repetition structures (e.g. while loops). • Example if/else if/else statement: if ($foo == 0) { echo ‘The variable foo is equal to 0’; } else if (($foo > 0) && ($foo <= 5)) { echo ‘The variable foo is between 1 and 5’; } else { echo ‘The variable foo is equal to ‘.$foo; }
PHP - Forms • Access to the HTTP POST and GET data is simple in PHP • The global variables $_POST[] and $_GET[] contain the request data • Save this example as form.php • <?php • if ($_POST["submit"]) • echo "<h2>You clicked Submit!</h2>"; • else if ($_POST["cancel"]) • echo "<h2>You clicked Cancel!</h2>"; • ?> • <form action="form.php" method="post"> • <input type="submit" name="submit" value="Submit"> • <input type="submit" name="cancel" value="Cancel"> • </form>
PHP - Sessions • Sessions store their identifier in a cookie in the client’s browser • Every page that uses session data must be proceeded by the session_start() function • Session variables are then set and retrieved by accessing the global $_SESSION[] • Save this example as session.php<?php • session_start(); • if (!$_SESSION["count"]) • $_SESSION["count"] = 0; • if ($_GET["count"] == "yes") • $_SESSION["count"] = $_SESSION["count"] + 1; • echo "<h1>".$_SESSION["count"]."</h1>"; • ?> • <a href="session.php?count=yes">Click here to count</a>
DB select • <html> • <body> • <h1>A List of Users Who Have Signed Up For OscarPool</h1> • <? • $dbh = mysql_connect("localhost","root","") • or die("Couldn't connect to database."); • $db = mysql_select_db(“airline", $dbh) • or die("Couldn't select database."); • $sql = "SELECT name FROM Employee"; • $result = mysql_query($sql, $dbh) • or die("SQL statement is wrong."); • while ($row = mysql_fetch_array($result)) { • $username = $row['username']; • $email = $row['email']; • echo '<a href="mailto:'.$email.'">'.$username.'</a><br />\n'; • } • mysql_close($dbh); • ?> • </body> • </html> Save it as data.php
DB update • <html> • <body> • <h1>Database update</h1> • <? • $dbh = mysql_connect("localhost","root","") • or die("Couldn't connect to database."); • $db = mysql_select_db("test", $dbh) • or die("Couldn't select database."); • $sql = "UPDATE … “ • $result = mysql_query($sql, $dbh) • or die("SQL statement is wrong."); • mysql_close($dbh); • echo(“Database updated! <br>”); • ?> • </body> • </html> Save it as update.php
Web Project Development • How to develop php/asp/jsp web page • Separate the HTML design and php/asp/jsp coding • The artists design the look and feel of the web page • The coders insert php/asp/jsp code into HTML files • Several old advises • Use the standard software engineering process to guide web project development • End user interaction and user requirement analysis are important and sometime cumbersome… • Do a small project (a prototype) to test development staff and user reaction. • Separate development platform and production platform • Look for help online and in local community