150 likes | 413 Views
CSE 190: Internet E-Commerce. Lecture 9: Application Tier Programming. App Tier Languages. Language paradigms, declarations, control flow, domain objects JSP -> Java ASP -> VB, C++ PHP -> PHP, Java, COM. JSP. Java paradigms
E N D
CSE 190: Internet E-Commerce Lecture 9: Application Tier Programming
App Tier Languages • Language paradigms, declarations, control flow, domain objects • JSP -> Java • ASP -> VB, C++ • PHP -> PHP, Java, COM
JSP • Java paradigms • All functionality encapsulated in objects; functionality provided through methodspublic Classname { instance-variables-block; Type functionOne() { …. } Type2 functionTwo() { …. }} • Static typing • Garbage collection • Language reference: Java in a Nutshell, http://java.sun.com • Namespaces: major components located in hierarchical namespaces (e.g. com.sun.net.*) • Methods accessible outside of the class must be prefixed with ‘public’ token • Essentially C-like syntax (including // and /* … */ comments ) • Variables • TypevariableName [= initial-value]; • E.g. String auctionTitle = “BMW motorcycle”; • Array syntax: variableName[ index ] • Overloaded “+” for string concatenation • “one “+”two” == “onetwo” • Visibility: variables within methods visible until end of method • Visibility: variables within class are visible to all methods of class • Lifetime: intrinsic variables (e.g. int, float) have auto scope • Within page declaration: <jsp:useBean id=“variableName” class=“ClassName” scope=“[request | session | application | page]”> • Property initialization: <jsp:setProperty name=“variableName” property=“[propertyName | *”>
JSP Control flow • Sequence • statement1;statement2; • All statements terminated by semicolon • Selection • if( boolean-value ) block • block ::= statement or { block } • switch( integral-type ) {case integral-value1: statement-list; break;default: statement-list; break;}
JSP Control Flow • Iteration • for( int i = 0; i < 10; i ++ ) block; • while( boolean-condition ) block; • do { statement-list; } while( condition ); • No goto • Method invocation • object.actOnArguments( arg1, arg2, arg3 ); • Multithreading explicit • Use synchronized( variable ) to avoid raceconditions; may ignore this issue for DB calls
JSP Types • Intrinsics • int, float, boolean, char, String • String is an intrinsic object, with methods length(), etc. • User defined types are always classes • No enum, structs, typedefs
JSP domain objects • Request • getParameter(), getCookies() • Response • addCookie(), encodeURL(), setStatus(), sendError() • Out • print, println • Session • getId(), getAttribute(), invalidate(), setAttribute(), removeAttribute() • in • pageContext • config • exception • Overview: http://jakarta.apache.org/tomcat/tomcat-4.0-doc/servletapi/overview-summary.html
JSP Review • How would I create a class accessible to my JSP page that would provide access to a list of Auction objects, each with a small set of attributes?
JSP Review import java.util.*; public class Auctions { Vector _auctions; public Auctions() { reset(); } public int getNumAuctions() { return _auctions.size(); } public Auction getAuction( int num ) { return (Auction) _auctions.elementAt( num ); } public void reset() { _auctions.clear(); Auction auction = new Auction(); auction.setTitle( "BMW motorcycle" ); auction.setDescription( "Never used. Motivated seller moving to "+ "new location. Cash only." ); auction.setHighBidder( "southcorner17" ); _auctions.add( auction );
JSP Review auction = new Auction(); auction.setTitle( "LOTR hobbit doll!!" ); auction.setDescription( "Limited edition cloth doll showing all "+ "Frodo's features, including leaf clasp." ); auction.setHighBidder( "(none)" ); _auctions.add( auction ); auction = new Auction(); auction.setTitle( "Automatic labeler" ); auction.setDescription( "The Brother X7 creates labels on demand "+ "through a simple keyboard. No waiting"+ " for the computer to boot up!" ); auction.setHighBidder( "compulsive_collector" ); _auctions.add( auction ); } }
JSP Review public class Auction { Properties _properties; public Auction() { _properties = new Properties(); } public String getTitle() { return _properties.getProperty( "title" ); } public void setTitle( String title ) { _properties.setProperty( "title", title ); } public String getDescription() { return _properties.getProperty( "description" ); } public void setDescription( String description ) { _properties.setProperty( "description", description ); }
JSP Review public String getHighBidder() { return _properties.getProperty( "highbidder" ); } public void setHighBidder( String bidder ) { _properties.setProperty( "highbidder", bidder ); } }
PHP • PHP paradigms • Perl-inspired syntax (mix of C, shell, and more) • Functionality provided through functions or less commonly through methodsfunction printPage( $arg1, $arg2 ) { statement-list;}class MyClass { function foo() { … } } • Dynamically typed • Garbage collection • Language reference: http://www.php.net • Shell style comments: # this is a comment • Variables • $auctionTitle = “BMW motorcycle”; • Arrays: $arrayName[ $index ]. Are associative arrays! Created with array(). • String concatenation (dot operator): “one” . “two” == “onetwo” • Visibility: Auto scope
PHP Control Flow • Sequence • statement1;statement2; • Selection • if( condition ) [ statement | { statement-list } ] [else …. ] • if( condition ) block elseif [ statement | block ] • switch()
PHP Control Flow • Iteration • for(), while(), do {} while() • foreach( $arrayname as $val ) { … } • No goto • Method invocation: • $object->actionToPerform( $arg1, $arg2 ); • Persistent DB connections built in