Transcript ppt

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 methods
public 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];
•
–
–
Array syntax: variableName[ index ]
Overloaded “+” for string concatenation
•
–
–
–
–
–
E.g. String auctionTitle = “BMW motorcycle”;
“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.0doc/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?
import java.util.*;
JSP Review
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 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