cse 190: internet e-commerce
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
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– Type variableName [= 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 race
conditions; 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 Reviewimport 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 Reviewpublic 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 methods
function 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