cse 190: internet e-commerce

15
CSE 190: Internet E- Commerce Lecture 9: Application Tier Programming

Upload: kita

Post on 07-Jan-2016

13 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: CSE 190: Internet E-Commerce

CSE 190: Internet E-Commerce

Lecture 9: Application Tier Programming

Page 2: CSE 190: Internet E-Commerce

App Tier Languages

• Language paradigms, declarations, control flow, domain objects– JSP -> Java– ASP -> VB, C++– PHP -> PHP, Java, COM

Page 3: CSE 190: Internet E-Commerce

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

Page 4: CSE 190: Internet E-Commerce

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

Page 5: CSE 190: Internet E-Commerce

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

Page 6: CSE 190: Internet E-Commerce

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

Page 7: CSE 190: Internet E-Commerce

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

Page 8: CSE 190: Internet E-Commerce

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?

Page 9: CSE 190: Internet E-Commerce

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

Page 10: CSE 190: Internet E-Commerce

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

Page 11: CSE 190: Internet E-Commerce

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

Page 12: CSE 190: Internet E-Commerce

JSP Review public String getHighBidder() { return _properties.getProperty( "highbidder" ); }

public void setHighBidder( String bidder ) { _properties.setProperty( "highbidder", bidder ); }}

Page 13: CSE 190: Internet E-Commerce

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

Page 14: CSE 190: Internet E-Commerce

PHP Control Flow

• Sequence– statement1;

statement2;

• Selection– if( condition ) [ statement | { statement-

list } ] [else …. ]– if( condition ) block elseif [ statement |

block ]– switch()

Page 15: CSE 190: Internet E-Commerce

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