Transcript Lally Singh
WebObjects
Matt Aguirre
Lally Singh
What Is It?
A Java based development platform
specifically designed for database-backed web
applications.
What Does It Have?
Scalability: built in load balancing among a
dynamically configurable set of servers
Industry standards support: JSP/J2EE/JNDI support
built in
Multiple client type support: Web Browser, Java
Client Application, XML, SMIL, WAP…
Easy extensibility: add new web components for
immediate reuse.
Architectural Overview
Architecture In Depth
Web Components
Three Parts:
HTML file
Bindings file
Java code
Embeddable within themselves: follows the
Composite design pattern
Embeddable within JSP pages
Communicate to each other & Enterprise Objects
(EOs) through Key-Value coding
Example Web Component
A simple form containing two items: a
textbox and a submit button
User hits ‘Submit’ and the name is shown in
System.out.
Not very useful
The HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="WebObjects 5">
<TITLE>Untitled</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<webobject name=Form1>Sample Form
<p>Name: <webobject name=TextField1></webobject></p>
<p><webobject name=SubmitButton1></webobject></p>
</webobject>
</BODY>
</HTML>
The Bindings
Form1: WOForm {
}
SubmitButton1: WOSubmitButton {
action = submit;
}
TextField1: WOTextField {
value = name;
}
The Java File
public class Main extends WOComponent {
protected String name;
public Main(WOContext context) {
super(context);
name = new String();
}
public WOComponent submit()
{
System.out.println("name="+name);
return null; // default - means we go back to same page
}
}
What Happens?
When the page is requested, the value for name is taken
from the Component’s instance via Key-Value Coding
The page is displayed to the user
The user types in something into the textbox
The user hits submit
WO updates the value of name with what the user put in the
textbox
WO then calls Main’s submit() method
submit() prints out the string the user typed in
Key Value Coding
A method to access data in classes without
relying on their interfaces
Implemented through the KeyValueCoding
Java interface
The default implementation scans through
reflection.
Ex: to set the key foo, the following will be
checked in order: 1. setFoo() 4. _isFoo
2. _setFoo()
5. foo
3. _foo
6. isFoo