websheetsStudentFinal
Download
Report
Transcript websheetsStudentFinal
Developing Dynamic Web Pages
Without Programming
Research Project Led By:
Professor David Wolber
Chia-Han Liu
Helen Kleytman
Pooja Garg
Yih-Tsung Chiang
Yingfeng Su
1
Agenda
Problems
with Traditional Web
Development
Our solution: WebSheets
WebSheets Demo
System Internals
XML Extension
Conclusion
2
Problems of
Traditional Web Development
Presentation
and logic are mixed
together
Artists/Designers can’t write code
Artists/Designers must know SQL
well to generate dynamic contents
from database
3
Solution:
Integrated Development Environment
Macromedia DreamWeaver UltraDev4
IBM Websphere Studio
ASPapp
4
Our Solution: WebSheets
Programming by Demonstration
Query by Example
Spreadsheet Functions
Designers
J2EE
WebSheets
IDE
JDBC
Servlet
XMLC
5
Key Terms and Concepts
6
What is an Application
Server?
Information
Information
Client
Client
Information
Client
SERVER
Information
Client
7
BEA Weblogic
Server Side Services:
HTTP
Servlets
- Composition of Dynamic Web Pages
JDBC
- Allows Java programs to access
databases
8
HTTP Servlets
HTTPResponse
SERVLET
HTTPRequest
Client
SERVER
9
JDBC Architecture
Servlets
JDBC
Interface
Driver
(Oracle)
Driver
(ODBC)
Driver
(Sybase)
Oracle DB
MSAccess
Sybase
10
HTTPServlet
Designers and Programmers
11
Old Way vs. New Way
12
Templates: Separating the Tasks
of Designers and Programmers
Designers
Programmers
HTML Template
servlet code including
DOM manipulation
code and JDBC code
XMLC
Java DOM tree code
HTML Output
13
JAVA DOM Manipulation Code
Instance of XMLC
Generated class
XMLC provided
Access functions
14
WebSheets Kills Programmers
Programmers
Designers
HTML Template
X
servlet code including
DOM manipulation
code and JDBC code
XMLC
Java DOM tree code
HTML Output
15
Demo
Bookstore
scenario
A bookstore manager who knows
little about programming wants to
create a dynamic page for
customers to search books by title
16
WYSIWYG Editor
Format
of the text
Hyperlinks
Images
Static tables
Dynamic tables
Preview
17
WYSIWYG Editor
18
Dynamic Components
19
Dynamic Components
20
Create Database from Scratch
21
Create Database from Scratch
22
Spreadsheet Formulas
23
Spreadsheet Formulas
24
Wizard Bar
A
context-sensitive guide
Response
finished
List
every time an action is
several possible further steps
25
Wizard Bar
26
Centralized Configuration
Administrator
can set up the
server addresses and database
pool names
Our system records these
configuration
User doesn’t need to know the
detail of IP and pool
Easy deployment
27
Centralized Configuration
(Administrator)
28
Centralized Configuration
(User Side)
29
Multiple Document
Users
can set up the relation
between buttons and pages
Destination page needs incoming
information
30
Multiple Document
31
Multiple Document
32
Multiple Document
33
Multiple Document
34
Code Generation
WYSIWYG specs
WebSheets Code Generator
HTML Template
servlet code including
DOM manipulation
code and JDBC code
XMLC
Java DOM tree code
HTML Output
35
Code Generation
Class GeneratedServlet extends HTTPServlet {
// other methods
public void act_delete(HttpServletRequest req,
HttpServletRespons res) {
// Access request parameters
String minStock = req.getParameter(“MinStock”);
// Access DOM tree created from HTML template
BookListDOM doc = new BookListDOM();
Node tempRow = doc.getElementTempRow();
// Execute specified delete operations using JDBC
// and SQL Delete statements
stmt.execute("delete from BOOKS where
INSTOCK<" + minStock);
// Execute the specified Select statement to obtain
// a resultset.
rs =stmt.executeQuery("select * from BOOKS”); 36
Code Generation
}
while(rs.next()) {
// Use DOM manip. code to enter values in the
// DOM tree.
doc.setText_table1_col0(rs.getString(1));
doc.setText_table1_col1(rs.getString(2));
doc.setText_table1_col2(rs.getString(3));
// Evaluate the spreadsheet formulas
doc.setText_table1_col3(
String.valueOf(rs.getInt(2) * rs.getInt(3)));
// Clone the sample row
tempRow.getParentNode().insertBefore(
tempRow.cloneNode(true), tempRow);
}
// Remove the sample row
tempRow.getParentNode().removeChild(tempRow);
// Write the updated DOM tree to the browser
out.println(doc.toDocument());
37
Code Generation
The service() method uses Java Reflection to dispatch the
request to the corresponding handler
public void service(HttpServletRequest req,
HttpServletResponse resp) {
String action = req.getParameter("act");
String mtdname = "act_" + action;
Class[] paratypes = new Class[] {
Class.forName("javax.servlet.http.HttpServletRequest”),
Class.forName("javax.servlet.http.HttpServletResponse") };
Method mtd
= this.getClass().getMethod(mtdname, paratypes);
mtd.invoke(this, new Object[]{req, resp});
}
// public void act_add(HttpServletRequest req,
HttpServletResponse resp) { … }
// public void act_delete(HttpServletRequest req,
HttpServletResponse resp) { … }
38
Objective
WebSheets
Store &
Retrieve Data
Databases
Store &
Retrieve Data
XML Files
39
XML Extension. Why?
Pros
– search engine
– data transfer
– hierarchical
Cons
– triggers
– security
– queries across multiple tables
40
Code Generation Model
abstract
class StorageProxy
abstract void genAdd();
abstract void genDelete();
abstract void genSelect();
class JDBC_Storage
void genAdd();
void genDelete();
void genSelect();
class XML_Storage
void genAdd();
void genDelete();
void genSelect();
41
Reusability
abstract
class StorageProxy
abstract void genAdd();
abstract void genDelete();
abstract void genSelect();
class
Other_Storage
class JDBC_Storage
void genAdd();
void genDelete();
void genSelect();
class
Other_Storage
class XML_Storage
void genAdd();
void genDelete();
void genSelect();
42
*.DTD and *.XML Files
43
DOM ARCHITECTURE
Java Tree
XML Document
XML Parser
Object
Object
Object
Object
Object
44
Manipulation of the DOM tree
Java Tree
Object
Hot Spots
Object
Servlet
Object
Object
Object
Object
Object
45
Servlet : Get Parameters
46
Servlet : DOM Parser
47
Servlet : Perform action
48
act_add(String value) Step1
ROOT
Object
child
Object
child
child
Object
child child
child
Object
child
child
child child
child
child child
child
child child
Object
child
child
child child
49
act_add(String value) Step2
ROOT
Object
child
Object
child
child
Object
child child
child
Object
child
child
child child
child
child child
child
child child
Object
child
child
child child
50
Servlet : Serialization
51
Creation of XML file
Object
Object
Object
Object
Object
DOM Serialization
Object
Object
52
Servlet: Display on the Browser
53
Resulting HTML Page
54
Conclusion
Artists/designers
generate
database table management
servlets by “teaching” our system
without writing any code.
WebSheets allows database
operations and computations to
be specified visually
55
Conclusion (cont.)
WebSheets
uses Programming By
Demonstration (PBD), Query By
Example (QBE), and spreadsheet
functions to build dynamic web
pages
2 papers based on WebSheets are
accepted by IUI2002 and VDB6
conferences
56
Future Work
To
support dynamic contents other
than table mapping, i.e., parameter
mapping on any part of the page,
and HttpSession
How to visually represent
complicated table relationship, such
as One-To-Many, Many-To-Many
To support button-to-page dataflow
Automatically register Servlets in
WebLogic configuration file
57
Any Questions?
Thanks…
58